特許第6956934号(P6956934)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

特許6956934ストレージ制御装置、キャッシュメモリ制御方法及びストレージシステム
<>
  • 特許6956934-ストレージ制御装置、キャッシュメモリ制御方法及びストレージシステム 図000002
  • 特許6956934-ストレージ制御装置、キャッシュメモリ制御方法及びストレージシステム 図000003
  • 特許6956934-ストレージ制御装置、キャッシュメモリ制御方法及びストレージシステム 図000004
  • 特許6956934-ストレージ制御装置、キャッシュメモリ制御方法及びストレージシステム 図000005
  • 特許6956934-ストレージ制御装置、キャッシュメモリ制御方法及びストレージシステム 図000006
  • 特許6956934-ストレージ制御装置、キャッシュメモリ制御方法及びストレージシステム 図000007
  • 特許6956934-ストレージ制御装置、キャッシュメモリ制御方法及びストレージシステム 図000008
  • 特許6956934-ストレージ制御装置、キャッシュメモリ制御方法及びストレージシステム 図000009
  • 特許6956934-ストレージ制御装置、キャッシュメモリ制御方法及びストレージシステム 図000010
  • 特許6956934-ストレージ制御装置、キャッシュメモリ制御方法及びストレージシステム 図000011
  • 特許6956934-ストレージ制御装置、キャッシュメモリ制御方法及びストレージシステム 図000012
  • 特許6956934-ストレージ制御装置、キャッシュメモリ制御方法及びストレージシステム 図000013
  • 特許6956934-ストレージ制御装置、キャッシュメモリ制御方法及びストレージシステム 図000014
  • 特許6956934-ストレージ制御装置、キャッシュメモリ制御方法及びストレージシステム 図000015
  • 特許6956934-ストレージ制御装置、キャッシュメモリ制御方法及びストレージシステム 図000016
  • 特許6956934-ストレージ制御装置、キャッシュメモリ制御方法及びストレージシステム 図000017
  • 特許6956934-ストレージ制御装置、キャッシュメモリ制御方法及びストレージシステム 図000018
  • 特許6956934-ストレージ制御装置、キャッシュメモリ制御方法及びストレージシステム 図000019
  • 特許6956934-ストレージ制御装置、キャッシュメモリ制御方法及びストレージシステム 図000020
  • 特許6956934-ストレージ制御装置、キャッシュメモリ制御方法及びストレージシステム 図000021
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6956934
(24)【登録日】2021年10月8日
(45)【発行日】2021年11月2日
(54)【発明の名称】ストレージ制御装置、キャッシュメモリ制御方法及びストレージシステム
(51)【国際特許分類】
   G06F 3/06 20060101AFI20211021BHJP
   G06F 12/0895 20160101ALI20211021BHJP
   G06F 12/12 20160101ALI20211021BHJP
【FI】
   G06F3/06 302A
   G06F12/0895 100
   G06F12/12
   G06F3/06 302E
【請求項の数】10
【全頁数】27
(21)【出願番号】特願2017-59418(P2017-59418)
(22)【出願日】2017年3月24日
(65)【公開番号】特開2018-163457(P2018-163457A)
(43)【公開日】2018年10月18日
【審査請求日】2019年12月12日
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100147164
【弁理士】
【氏名又は名称】向山 直樹
(72)【発明者】
【氏名】加藤 純
【審査官】 田名網 忠雄
(56)【参考文献】
【文献】 国際公開第2016/186583(WO,A3)
【文献】 特開平06−289838(JP,A)
【文献】 特開2007−188409(JP,A)
【文献】 特開平05−233450(JP,A)
【文献】 米国特許出願公開第2015/0278114(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/06−3/08
G06F 12/08−12/128
(57)【特許請求の範囲】
【請求項1】
複数の領域を含むキャッシュメモリを有し、
情報処理装置からコマンドを受信し、
前記コマンドの受信に基づき、前記キャッシュメモリへのアクセスを含むコマンド処理を実行し、
前記複数の領域のうち、前記コマンド処理においてアクセスされた領域を特定する処理報告を生成し、
生成された前記処理報告をキューに入力し、
前記キューに入力された前記処理報告に基づき、前記領域へのアクセスを、前記複数の領域に対するアクセス時刻に基づいて前記複数の領域を順に配置する管理リストに記録する管理リスト更新処理を実行するストレージ制御装置であって、
前記情報処理装置から第1コマンドを受信した場合、前記第1コマンドの受信に基づき、前記キャッシュメモリの前記複数の領域の第1領域へのアクセスを含む第1コマンド処理を実行し、
前記第1領域を特定する第1処理報告を生成し、前記キューに、前記第1領域を特定する1又は複数の第2処理報告が保持されている場合には、生成された前記第1処理報告の前記キューへの入力を行わないか、若しくは、1又は複数の前記第2処理報告の少なくとも一つを前記キューから削除するか、又は、
前記キューに、前記第1領域を特定する1又は複数の前記第2処理報告が保持されている場合には、前記第1処理報告の生成を実行しない
ことを特徴とするストレージ制御装置。
【請求項2】
前記管理リストに前記第1領域を含む前記複数の領域が登録されている場合、前記第1処理報告に基づく前記管理リスト更新処理は、前記複数の領域のうち前記第1領域が、直近にアクセスされた時刻が最も新しいことを示すよう、前記管理リストを変更する処理を含むことを特徴とする請求項1に記載のストレージ制御装置。
【請求項3】
前記複数の領域のうち、直近にアクセスされた前記時刻が最も古い領域に保持されたデータを前記古い領域から消去することを特徴とする請求項2に記載のストレージ制御装置。
【請求項4】
前記第1コマンドが第1データの読み出しを要求する場合であって、前記第1データが前記第1領域に保持されている場合は、前記第1データを前記第1領域から読み出して、読み出された前記第1データを前記情報処理装置へ送信し、
前記第1コマンドが前記第1データの読み出しを要求する場合であって、前記第1データが前記第1領域を含む前記キャッシュメモリに保持されていない場合は、前記第1データをストレージ装置から読み出して、読み出された前記第1データを前記情報処理装置へ送信し、前記第1データを前記キャッシュメモリの前記第1領域へ保持させる
ことを特徴とする請求項1乃至3何れか一項に記載のストレージ制御装置。
【請求項5】
前記第1コマンドが第1データの書き込みを要求する場合、前記第1データを前記第1領域に保持させることを特徴とする請求項1乃至3何れか一項に記載のストレージ制御装置。
【請求項6】
前記キューに1又は複数の前記第2処理報告が保持されている場合に、1又は複数の前記第2処理報告の個数を特定し、
前記個数が所定値以上の場合に、生成された前記第1処理報告の前記キューへの入力を行わない、若しくは、前記1又は複数の第2処理報告の少なくとも一つを前記キューから削除する、又は、前記第1処理報告の生成を行わない
ことを特徴とする請求項1乃至5何れか一項に記載のストレージ制御装置。
【請求項7】
更に、前記管理リスト更新処理を実行するプロセッサを含み、
前記プロセッサの処理負荷を特定し、
前記プロセッサの前記処理負荷が第1の値である場合は、前記所定値は第2の値であり、
前記プロセッサの前記処理負荷が、前記第1の値よりも高い第3の値である場合は、前記所定値は、前記第2の値よりも低い第4の値である
ことを特徴とする請求項6に記載のストレージ制御装置。
【請求項8】
前記管理リストに、前記第1領域が登録されているかを示す第1情報と、前記キューに、1又は複数の前記第2処理報告が保持されているかを示す第2情報とに基づいて、前記第1処理報告の前記キューへの入力を行うかの判断、若しくは、1又は複数の前記第2処理報告の少なくとも一つを前記キューから削除するかの判断、又は、前記第1処理報告の生成を行うかの判断を行う
ことを特徴とする請求項1乃至7何れか一項に記載のストレージ制御装置。
【請求項9】
複数の領域を含むキャッシュメモリを有するストレージ制御装置が、
情報処理装置からコマンドを受信し、
前記コマンドの受信に基づき、前記キャッシュメモリへのアクセスを含むコマンド処理を実行し、
前記複数の領域のうち、前記コマンド処理においてアクセスされた領域を特定する処理報告を生成し、
生成された前記処理報告をキューに入力し、
前記キューに入力された前記処理報告に基づき、前記領域へのアクセスを、前記複数の領域に対するアクセス時刻に基づいて前記複数の領域を順に配置する管理リストに記録する管理リスト更新処理を実行するキャッシュメモリ制御方法であって、
記情報処理装置から第1コマンドを受信した場合、前記第1コマンドの受信に基づき、前記キャッシュメモリの前記複数の領域の第1領域へのアクセスを含む第1コマンド処理を前記コマンド処理として実行し、
前記第1コマンド処理においてアクセスされた前記第1領域を特定する第1処理報告を前記処理報告として生成し、前記キューに、前記第1領域を特定する1又は複数の第2処理報告が保持されている場合には、生成された前記第1処理報告の前記キューへの入力を行わないか、若しくは、1又は複数の前記第2処理報告の少なくとも一つを前記キューから削除す
とを特徴とするキャッシュメモリ制御方法。
【請求項10】
ストレージ装置と、
複数の領域を含むキャッシュメモリを有するストレージ制御装置と、
を含み、
前記ストレージ制御装置は、
情報処理装置からコマンドを受信し、
前記コマンドの受信に基づき、前記キャッシュメモリへのアクセスを含むコマンド処理を実行し、
前記複数の領域のうち、前記コマンド処理においてアクセスされた領域を特定する処理報告を生成し、
生成された前記処理報告をキューに入力し、
前記キューに入力された前記処理報告に基づき、前記領域へのアクセスを、前記複数の領域に対するアクセス時刻に基づいて前記複数の領域を順に配置する管理リストに記録する管理リスト更新処理を実行するストレージ制御装置であって、
前記情報処理装置から第1コマンドを受信した場合、前記第1コマンドの受信に基づき、前記キャッシュメモリの前記複数の領域の第1領域へのアクセスを含む第1コマンド処理を実行し、
前記第1領域を特定する第1処理報告を生成し、前記キューに、前記第1領域を特定する1又は複数の第2処理報告が保持されている場合には、生成された前記第1処理報告の前記キューへの入力を行わないか、若しくは、1又は複数の前記第2処理報告の少なくとも一つを前記キューから削除するか、又は、
前記キューに、前記第1領域を特定する1又は複数の前記第2処理報告が保持されている場合には、前記第1処理報告の生成を実行しない
ことを特徴とするストレージシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ストレージ制御装置、キャッシュメモリ制御方法及びストレージシステムに関する。
【背景技術】
【0002】
ストレージシステムは、データを格納するストレージ装置と、ストレージ装置を制御するストレージ制御装置を含む。ストレージ装置は、例えばHard Disk Drive(HDD)やSolid State Drive(SSD)等の不揮発性のデータ格納装置である。ストレージ制御装置は、ホストサーバから受信するデータ書き込み要求やデータ読み出し要求に応じてストレージ装置を制御し、ストレージ装置へのデータの書き込み処理やストレージ装置からのデータの読み出し処理を実行する。以下、データ書き込み要求は「ライトコマンド」と、データ読み出し要求は「リードコマンド」と表記される。また、ライトコマンド及びリードコマンドを併せて単に「コマンド」と呼ぶ。また、ストレージ制御装置に対してコマンドが入力されることを「アクセス」と呼ぶ。
【0003】
ストレージ制御装置は、キャッシュメモリとして例えばDRAMを含む。ストレージ制御装置は、ホストサーバからライトコマンドを受信した場合、ライトコマンドの対象となるデータをキャッシュメモリに保持させ、その後、キャッシュメモリに保持されたデータのストレージ装置への格納処理を実行する。また、ストレージ制御装置はホストサーバからリードコマンドを受信した場合、リードコマンドの対象となるデータがキャッシュメモリに保持されている場合は、キャッシュメモリから当該データを読み出す。キャッシュメモリから読み出されたデータはホストサーバへ送信される。リードコマンドの対象となるデータがキャッシュメモリに保持されていない場合は、ストレージ制御装置は、ストレージ装置から当該データを読み出す。ストレージ装置から読み出されたデータはホストサーバへ送信されるとともにキャッシュメモリに保持される。
【0004】
キャッシュメモリの容量はストレージ装置の容量に比べて小さいため、ストレージ制御装置は、ストレージ装置に格納されているデータのうち、キャッシュメモリに保持させるデータを選定する必要がある。言い換えればストレージ制御装置は、キャッシュメモリの空き容量を確保するために、キャッシュメモリに保持されているデータのうち、どのデータを削除するかを特定し、特定されたデータを削除する処理を行う。キャッシュメモリから削除されるデータを特定するためのアルゴリズムとして、例えばLeast Recently Used(LRU)方式が知られている。LRU方式においては、キャッシュメモリに保持されるデータに対するアクセスの直近の時刻に基づいて管理リストが更新され、キャッシュメモリに保持されたデータのうち、直近のアクセス時刻が最も古いデータが優先的にキャッシュメモリから削除される。ストレージ制御装置は、キャッシュメモリの管理を行うために、アクセスに基づいて、管理リストを更新する処理を実行する。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2015‐191604号公報
【特許文献2】特開2007‐334752号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
ストレージ制御装置に対して複数のアクセスがあった場合、ストレージ制御装置のプロセッサは、各アクセスに対応して管理リストの更新処理を実行するため、プロセッサの処理負荷が増大する。開示の技術は、管理リストの更新処理にかかるプロセッサの処理負荷を低減させることを目的とする。
【課題を解決するための手段】
【0007】
複数の領域を含むキャッシュメモリを有し、情報処理装置からコマンドを受信し、前記コマンドの受信に基づき、前記キャッシュメモリへのアクセスを含むコマンド処理を実行し、前記複数の領域のうち、前記コマンド処理においてアクセスされた領域を特定する処理報告を生成し、生成された前記処理報告をキューに入力し、前記キューに入力された前記処理報告に基づき、前記領域へのアクセスを管理リストに記録する管理リスト更新処理を実行するストレージ制御装置であって、前記情報処理装置から第1コマンドを受信した場合、前記第1コマンドの受信に基づき、前記キャッシュメモリの前記複数の領域の第1領域へのアクセスを含む第1コマンド処理を実行し、前記第1領域を特定する第1処理報告を生成し、前記キューに、前記第1領域を特定する1又は複数の第2処理報告が保持されている場合には、生成された前記第1処理報告の前記キューへの入力を行わないか、若しくは、1又は複数の前記第2処理報告の少なくとも一つを前記キューから削除するか、又は、前記キューに、前記第1領域を特定する1又は複数の前記第2処理報告が保持されている場合には、前記第1処理報告の生成を実行しないことを特徴とするストレージ制御装置が開示される。
【発明の効果】
【0008】
開示の技術により、管理リストの更新処理にかかるプロセッサの処理負荷を低減させることができる。
【図面の簡単な説明】
【0009】
図1】情報処理装置に接続されたストレージシステムを示す図である。
図2】CMのハードウェアを示す図である。
図3】CMのプロセッサによって実現される機能ブロックを示す図である。
図4】メタデータリストの内容例を示す図である。
図5】管理リストの内容例を示す図である。
図6】コマンドを受信したCMのプロセッサによって実行される処理の一例を示すフローチャートである。
図7】コマンドを受信したCMのプロセッサによって実行される処理の他の例を示すフローチャートである。
図8】処理報告生成部による処理報告の生成、キューへの処理報告の入力、及び管理リスト制御部による管理リストの更新処理を説明するための図である。
図9】キュー制御部の機能を説明するための図である。
図10】プロセッサによって実行される処理であって、主にキューへの処理報告の入力に関する処理のフローチャートである。
図11】プロセッサによって実行される処理であって、主に管理リストの更新に関する処理のフローチャートである。
図12】プロセッサによって実行される処理であって、主にキューへの処理報告の入力に関する処理の他の例のフローチャートである。
図13】プロセッサによって実行される処理であって、主にキューへの処理報告の入力に関する処理の更に他の例のフローチャートである。
図14】プロセッサによって実行される処理であって、リードコマンドの受信に基づいて実行されるデータの読み出し処理に関するフローチャートである。
図15】プロセッサによって実行される処理であって、ライトコマンドに基づいて実行されるデータの書き込み処理に関するフローチャートである。
図16】第2実施例におけるキュー制御部の機能を説明するための図である。
図17】キュー制御部によって実行される処理のフローチャートである。
図18】第2実施例の変形例におけるCMのプロセッサの機能ブロックを示す図である。
図19】第1管理リストと第2管理リストの機能を説明するための図である。
図20】第2実施例において2つの管理リストを用いてキャッシュメモリのページ管理が行われる場合の、キュー制御部の機能を説明するための図である。
【発明を実施するための形態】
【0010】
<第1実施例>
図1は、情報処理装置10に接続されたストレージシステムを示す図である。情報処理装置10は例えばホストサーバである。ストレージシステムは、ストレージ制御装置20とストレージ装置30を含む。ストレージ制御装置20は、制御装置21a及び21bを含む。制御装置21a及び21bは互いに、例えばPCI Express(登録商標)バスによって接続され、相互にデータの送受信を行うことができる。制御装置21a及び21bはそれぞれControl Manager(以下、CM)と呼ばれる。以下、CM21a及び21bを区別しない場合は、単に「CM21」と表記するものとする。CM21は、情報処理装置10から送信されたコマンドに基づき、ストレージ装置30へのデータの書き込み処理やストレージ装置30からのデータの読み出し処理を実行する。ストレージ装置30は、例えばHDD又はSSD等の不揮発性のデータ格納装置である。
【0011】
図2は、CM21のハードウェアを示す図である。CM21は、Channel Adaptor(CA)210と、プロセッサ220と、不揮発性メモリ240と、揮発性メモリ250と、Input Output Controller(IOC)260と、Expander(EXP)270とを有する。
【0012】
CA210は、情報処理装置10に対するインターフェース回路であり、情報処理装置10からコマンドを受信する。また、ストレージ装置30から読み出されたデータは、CA210を介して情報処理装置10に対して送信される。更に、情報処理装置10から受信したコマンドに対する完了通知がCA210を介して情報処理装置10に対して送信される。
【0013】
プロセッサ220は、不揮発性メモリ240に格納されたコンピュータプログラムを揮発性メモリ250にロードして実行する。例えばプロセッサ220は、コマンドの受信に応じて、データの書き込み処理又は読み出し処理を実行する。プロセッサ220はハードウェアプロセッサであり、Central Processing Unit(CPU)、Micro Control Unit(MCU)、Micro Processing Unit(MPU)、Digital Signal Processor(DSP)、Field Programmable Gate Array(FPGA)等が適用可能である。
【0014】
不揮発性メモリ240は、コンピュータで読み取り可能な記録媒体である。不揮発性メモリ240には、プロセッサ220によって実行されるコンピュータプログラム等が格納される。不揮発性メモリ240は、例えばRead Only Memory(ROM)、Mask Read Only Memory(マスクROM)、Programmable Read Only Memory(PROM)、フラッシュメモリ、Magnetoresistive Random Access Memory(MRAM)、Resistance Random Access Memory(ReRAM)、Ferroelectric Random Access Memory(FeRAM)等である。コンピュータプログラムは、不揮発性メモリ240以外の記憶媒体であって、コンピュータで読み取り可能な記録媒体(ただし、搬送波は除く)に記録されることもできる。また、コンピュータプログラムが記録されたDigital Versatile Disc(DVD)、Compact Disc Read Only Memory(CD−ROM)などの可搬型記録媒体を流通させることもできる。また、コンピュータプログラムは、ネットワークを介して送信され得る。
【0015】
揮発性メモリ250は、コンピュータで読み取り可能な記録媒体である。揮発性メモリ250には、不揮発性メモリ240に格納されているコンピュータプログラムがロードされる。また揮発性メモリ250には、プロセッサ220による演算処理に使用されるデータや演算処理の結果であるデータ等が保持される。また揮発性メモリ250は、上述のキャッシュメモリとして使用され、CM21がコマンドを受信した場合、書き込み対象となるデータ又は読み出し対象となるデータがキャッシュメモリに保持される。揮発性メモリ250は、例えばStatic Random Access Memory(SRAM)やDynamic Random Access Memory(DRAM)等である。
【0016】
IOC260はCM21とストレージ装置30との間で行われるデータの送受信を制御する。EXP270は、CM21とストレージ装置30との間で行われるデータの送受信を中継する。
【0017】
図3は、CM21のプロセッサ220によって実現される機能ブロックを示す図である。プロセッサ220は、データ送受信部221、ヒット判定部222、キャッシュメモリ制御部223、ストレージ装置制御部224、完了通知部225、処理報告生成部226、キュー制御部227、管理リスト制御部228として機能する。またプロセッサ220はメタデータリスト231、管理リスト232、キュー233を含む。まずメタデータリスト231、管理リスト232について説明する。
【0018】
キャッシュメモリはページ単位で管理されている。1ページは例えば4Kバイトの容量を有する記憶領域である。この場合、例えばキャッシュメモリの容量が64Gバイトであれば、キャッシュメモリは16M個のページを有する。キャッシュメモリへのデータの書き込み処理やキャッシュメモリからのデータの読み出し処理は、ページ単位で実行される。メタデータリスト231には、各ページに保持されたデータのアドレスを示すメタデータが、各ページに対応付けられて登録される。メタデータには例えばデータのLogical Unit Number(LUN)及びLogical Block Address(LBA)が含まれる。
【0019】
図4は、メタデータリスト231の内容例を示す図である。図4においては、例えばページAのメタデータが、LUNが10であり、LBAが4096であることが示されている。これは、LUNが10であってLBAが4096から4Kバイトのデータが、ページAに保持されていることを示す。同様に、ページDにはLUNが2、LBAが8192から4Kバイトのデータが保持されていることが示され、ページEにはLUNが6、LBAが12288から4Kバイトのデータが保持されていることが示される。
【0020】
図5は、管理リスト232の内容例を示す図である。管理リスト232には、キャッシュメモリに含まれる複数のページのうち、データを保持しているページが登録される。また管理リスト232においては、データを保持している複数のページが、各ページに対する直近のアクセスの時刻に基づいて順に配置されている。具体的には、直近にアクセスされた時刻が新しい順となるように、複数のページが管理リスト232に登録される。図5においてMRUは、Most Recently Usedの略であり、当該ページについての直近のアクセスの時刻が、他のページに比べて新しいことを示す。また、LRUは、Least Recently Usedの略であり、当該ページについての直近のアクセスの時刻が、他のページに比べて古いことを示す。よって、あるページに対するアクセスがあった場合に、アクセスされた当該ページが管理リスト232のMRUの位置に配置されるように、管理リスト制御部228が管理リスト232を更新する。そしてキャッシュメモリ制御部223は、キャッシュメモリの空き容量を増加させる場合には、管理リスト232のLRUの位置にあるページのデータを消去する。
【0021】
次に、図3に示された他の機能ブロックについて説明する。データ送受信部221は、情報処理装置10から送信されたコマンドやデータを受信する。またデータ送受信部221は、ストレージ装置30やキャッシュメモリから読み出されたデータを情報処理装置10に送信する。
【0022】
ヒット判定部222は、コマンドがデータ送受信部221により受信された場合に、メタデータリスト231に基づいてヒット判定を行う。コマンドがリードコマンドである場合は、ヒット判定部222は、コマンドにて指定されるアドレスのデータがキャッシュメモリに保持されているか否か判定する。またコマンドがライトコマンドである場合は、ヒット判定部222は、コマンドにて指定されるアドレスのデータがキャッシュメモリに保持されているか否か、又はキャッシュメモリに空き容量(空きページ)があるか否かを判定する。
【0023】
キャッシュメモリ制御部223は、キャッシュメモリへのデータの書き込み処理やキャッシュメモリからのデータの読み出し処理等、キャッシュメモリの制御全般を行う。またキャッシュメモリ制御部223は、キャッシュメモリの空きページを確保する場合には、管理リスト232に基づき、キャッシュメモリからデータの消去を行う。
【0024】
ストレージ装置制御部224は、ストレージ装置30へのデータの書き込み処理やストレージ装置30からのデータの読み出し処理等、ストレージ装置30の制御全般を行う。本明細書において、キャッシュメモリ制御部223とストレージ装置制御部224をまとめて「コマンド処理部」と称する場合がある。
【0025】
完了通知部225は、情報処理装置10から送信されたコマンドに関する処理が完了したことを示す完了通知を、情報処理装置10に対して送信する。例えばコマンドがライトコマンドである場合は、ライトコマンドの対象データがキャッシュメモリに保持された後又は対象データがストレージ装置30に格納された後に、完了通知が送信される。またコマンドがリードコマンドである場合は、リードコマンドの対象データが全て情報処理装置10に送信された後に、完了通知が送信される。
【0026】
処理報告生成部226は、コマンド処理部による処理が実行された際に、キャッシュメモリのどのページが使用されたのか、を示す処理報告を生成する。例えばコマンドがライトコマンドであり、ライトコマンドの対象となるデータがページAに保持された場合には、ページAを特定する情報を含む処理報告が生成される。またコマンドがリードコマンドであり、リードコマンドの対象となるデータがキャッシュメモリのページAに保持されていた場合、ページAからのデータの読み出し処理が実行されたことに伴い、ページAを特定する情報を含む処理報告が生成される。またコマンドがリードコマンドであり、リードコマンドの対象となるデータがキャッシュメモリに保持されていない場合であって、ストレージ装置30から読み出されたデータがページAに保持された場合には、ページAを特定する情報を含む処理報告が生成される。
【0027】
キュー制御部227は、処理報告生成部226によって生成された処理報告の、キュー233への入力を制御する。生成された処理報告に関し、所定の条件が満たされた場合には、キュー制御部227はキュー233へ処理報告を入力せずに処理報告を削除する。一方、所定の条件が満たされない場合は、キュー制御部227はキュー233への処理報告の入力を実行する。所定の条件及びキュー233の詳細については後述する。
【0028】
管理リスト制御部228は、キュー233に蓄積された処理報告を順に取り出し、管理リスト232の更新処理を実行する。例えばキュー233から取り出された処理報告がページAに関するものである場合、ページAが管理リスト232のMRUの位置に配置されるように管理リスト232の更新処理を行う。
【0029】
図6は、コマンドを受信したCM21のプロセッサ220によって実行される処理の一例を示すフローチャートである。処理フローは処理S400により開始され、処理S402においてデータ送受信部221が、情報処理装置10からコマンドを受信する。処理S404においてヒット判定部222が、受信されたコマンドに関するヒット判定を実行する。そして処理S406において管理リスト制御部228が、受信されたコマンドの処理に応じて管理リスト232の更新処理を実行する。その後、処理S408において、受信されたコマンドに応じた処理、例えばデータの書き込み処理やデータの読み出し処理(以下、「コマンド処理」と呼ぶ)が、コマンド処理部によって実行される。そして処理S410において完了通知部225が、コマンド処理が完了したことを示す完了通知を、情報処理装置10に送信する。その後、処理フローは処理S412にて終了する。
【0030】
図6に示された処理フローにおいて、多数のコマンドが短期間に集中してCM21に入力されることがある。これをIO集中と呼ぶ。IO集中が生じた場合、データ送受信部221やヒット判定部222はある程度並列に、コマンド受信の処理(処理S402)やヒット判定の処理(処理S404)を行うことができる。一方、管理リスト制御部228による管理リスト232の更新処理は、複数の処理が同時に並行して行われないよう制御される。これは、もし管理リスト232の複数の更新処理が同時に並行して行われると、管理リスト232に登録された情報に誤りが生じ得るためである。そのため、管理リスト232に対する一つの更新処理が実行される場合には、他の更新処理に対してロックが発生するよう制御が行われる。よって管理リスト232の複数の更新処理は順に実行されることとなり、複数の更新処理に時間を要する場合がある。
【0031】
ここで図6において、コマンド処理(処理S408)及び完了通知の送信処理(処理S410)は、管理リスト232の更新処理(処理S406)の後に実行される。そのため、IO集中が生じた場合には、管理リスト232の更新処理に遅延が生じ、更にはコマンド処理及び完了通知の送信処理に遅延が生じることとなる。
【0032】
この問題を解決するための処理フローについて説明する。図7は、コマンドを受信したCM21のプロセッサ220によって実行される処理の他の例を示すフローチャートである。処理フローは処理S420により開始され、処理S422においてデータ送受信部221が、情報処理装置10からコマンドを受信し、処理S424においてヒット判定部222が、受信されたコマンドに関するヒット判定を実行する。ここまでの処理フローは図6に示された処理フローと同一である。次に処理S426においてコマンド処理部が、コマンド処理を実行する。そして、処理S428において完了通知部225が、コマンド処理が完了したことを示す完了通知を、情報処理装置10に送信する。その後、処理S430において管理リスト制御部228が、コマンド処理に応じて管理リスト232を更新する。その後、処理フローは処理S432にて終了する。
【0033】
図7に開示された処理フローは、管理リスト232の更新処理(処理S430)が、コマンド処理(処理S426)や完了通知の送信処理(処理S428)よりも後に実行される点において、図6に開示された処理フローと相違する。図7に開示された処理フローにより、IO集中が生じた際、コマンド処理及び完了通知の送信処理が、管理リスト232の更新処理の遅延に伴って遅延することを解消させることができる。尚、図7に開示された処理フローにおいては、キャッシュメモリ制御部223は、キャッシュメモリに常に空き容量が確保されるよう制御する。
【0034】
次に、図7に示された処理フローが実行される場合における、処理報告生成部226による処理及びキュー233について説明する。図7に開示された処理フローにおいて、IO集中が生じた場合、複数のコマンド処理が実行され、複数の完了通知が送信された後に、管理リスト232の更新処理が、複数のコマンド処理に対応して複数発生する。上述のように、複数コマンドに応じた複数の受信処理や、複数コマンドに応じた複数のヒット判定処理はそれぞれ並列で実行され得る。また複数のコマンドに応じた複数のコマンド処理、複数のコマンドに応じた完了通知の送信処理もそれぞれ並列で実行され得る。しかし、管理リスト232の複数の更新処理は並列には実行されない。そこで処理報告部226は、各コマンド処理に対応した処理報告を生成する。処理報告には、コマンド処理において使用されたキャッシュメモリのページを特定する情報が含まれる。そして生成された処理報告はキュー233に入力される。その後、管理リスト制御部228が、キュー233に蓄積された処理報告をキュー233から順に取り出し、取り出された処理報告に基づいて管理リスト232の更新処理を順に実行する。
【0035】
図8は、処理報告生成部226による処理報告の生成、キュー233への処理報告の入力、及び管理リスト制御部228による管理リスト232の更新処理を説明するための図である。まず処理報告生成部226が、コマンド処理が実行されたことに伴い、処理報告を生成する。処理報告生成部226によって生成された処理報告であって、未だキュー233に入力されていないものを「処理報告PR」と呼ぶこととする。例えばコマンド処理が、キャッシュメモリのページAへのアクセスを含むものであった場合には、ページAを特定する情報を含む処理報告PRが生成される。
【0036】
生成された処理報告PRは、キュー233の最後尾に入力される。図中、キュー233は一番上が先頭、一番下が最後尾であるものとする。またキュー233に蓄積された処理報告を「処理報告QR」と呼ぶこととする。キュー233に蓄積された処理報告QRは、キュー233の先頭から順に管理リスト制御部228によって取り出される。管理リスト制御部228は、取り出された処理報告QRに基づき、管理リスト232の更新処理を実行する。図8においては、キュー233の先頭から取り出された処理報告QRがページAに関するものであるため、ページAが管理リスト232のMRUの位置に移動される様子が開示されている。管理リスト制御部228は、このようなキュー233からの処理報告QRの取り出し処理及び管理リスト232の更新処理を順に実行する。
【0037】
尚、キュー233からページAに関する処理報告QRが取り出された時点において、管理リスト232にページAが登録されていない場合は、管理リスト制御部228は、ページAを新たに管理リスト232のMRUの位置に登録する。
【0038】
図8を用いて、IO集中が生じた場合の、管理リスト制御部228の処理に関する課題について説明する。IO集中が生じた場合、特定のページへのアクセスが複数回発生する場合がある。図8においては、キュー233にはページAへのアクセスによって生成された複数の処理報告QRが蓄積されている。このような場合、管理リスト制御部228がキュー233から順に処理報告QRを取り出して管理リスト232の更新処理を実行すると、管理リスト232においてページAがMRUの位置へ移動される処理が繰り返し頻繁に実行されることとなる。管理リスト232において同一ページが繰り返しMRUの位置に移動される処理は、プロセッサ220の処理負荷を増加させることになる。
【0039】
尚、図8では、ページAが管理リスト232中において対象ページがMRUの位置に移動されるよう図示されているが、管理リスト232の更新処理は、MRUの位置を示すMRUポインタや、LRUの位置を示すLRUポインタを移動させる処理であってもよい。
【0040】
管理リスト232において同一ページが繰り返しMRUの位置に移動される処理によってプロセッサ220の処理負荷を増加させてしまうという課題を解決するための手法について説明する。図9は、キュー制御部227の機能を説明するための図である。処理報告生成部226によって生成された処理報告PRをキュー233に入力するか否かは、キュー制御部227によって決定される。キュー制御部227は、所定の条件が満たされた場合には、生成された処理報告PRをキュー233に入力しない。所定の条件とは、例えば処理報告生成部226によって生成された処理報告PRがページAに関するものである場合、ページAに関する他の処理報告QRが既にキュー233に蓄積されている、という条件である。図9においては、キュー233には既に、ページAに関する他の処理報告QRが蓄積されている。そのため、キュー制御部227は、生成されたページAに関する処理報告PRを、キュー233に入力することなく消去する。これにより、ページAについてのアクセスが複数なされた場合に、管理リスト232においてページAをMRUの位置に移動させる処理が繰り返し実行されることが抑制される。
【0041】
図9に開示された例の概念は以下のように説明される。生成された処理報告PRが示すページと同一のページに関する処理報告QRが少なくともn個(nは自然数)、キュー233に蓄積されている場合には、生成された処理報告PRはキュー233には入力されない。この場合、キュー233に蓄積されている処理報告QRであって、生成された処理報告PRが示すページと同一のページを示す処理報告QRの個数をカウントする。そしてカウントされた個数に基づきキュー制御部227は、処理報告PRをキュー233へ入力させるか否かを判定する。この方法により、同一ページに関する処理報告QRがn個を超えてキュー233に蓄積されることが回避される。
【0042】
nの値として、ストレージ制御装置20の管理者によって指定された値がストレージ制御装置20に入力してもよく、またプロセッサ220が自身で定めた値に設定されてもよい。例えば、プロセッサ220が自身の処理負荷を測定し、測定された処理負荷に応じてキュー制御部227がnを定めてもよい。例えば、プロセッサ220の処理負荷が所定値以上である場合にはnが第1の値に設定され、プロセッサ220の処理負荷が所定値未満になるとnが第1の値よりも大きい第2の値に設定されてもよい。
【0043】
またnの値は、キャッシュメモリの全容量を考慮して定められてもよい。例えば、キャッシュメモリの全容量が第1容量である場合のnは第3の値に設定され、キャッシュメモリの全容量が第1容量よりも小さい第2容量である場合のnは、第3の値よりも大きい第4の値に設定されてもよい。第3の値は上述の第1の値と同一の値であってもよい。
【0044】
図10は、プロセッサ220によって実行される処理であって、主にキュー233への処理報告PRの入力に関する処理のフローチャートである。コマンド処理が実行されたことをトリガとして処理フローが処理S500により開始され、処理S502において処理報告生成部226が、コマンド処理に応じて処理報告PRを生成する。処理S504においてキュー制御部227が、キュー233に蓄積されている処理報告QRの中に、生成された処理報告PRが示すページ(以下、「対象ページ」と呼ぶ)と同一のページに関する処理報告QRが有るかを判定する。対象ページと同一ページに関する処理報告QRが有ると判定された場合は、処理フローは処理S506へ進み、対象ページと同一ページに関する処理報告QRが有ると判定されない場合は、処理フローは処理S508へ進む。処理S506においてキュー制御部227は、生成された処理報告PRを消去する。よって、処理報告PRはキュー233に入力されない。一方、処理S508においてキュー制御部227は、生成された処理報告PRをキュー233に入力する。そして処理フローは処理S510にて終了する。
【0045】
図11は、プロセッサ220によって実行される処理であって、主に管理リスト232の更新に関する処理のフローチャートである。処理フローは処理S600により開始され、処理S602において管理リスト制御部228が、キュー233の先頭から処理報告QRを取り出す。そして処理S604において管理リスト制御部228が、取り出された処理報告QRに基づいて管理リスト232の更新処理を行う。そして処理S606において管理リスト制御部228が、管理リスト232の更新処理が行われた処理報告QRを消去する。更に処理S608において管理リスト制御部228は、キュー233に他の処理報告QRが蓄積されているかを判定する。他の処理報告QRが蓄積されていると判定された場合は、処理フローは処理S602へ戻り、他の処理報告QRが蓄積されていると判定されない場合は、処理フローは処理S610へ進み、処理S610にて処理フローは終了する。
【0046】
次に、キュー233への処理報告PRの入力に関する処理の変形例について説明する。図9及び図10においては、対象ページが、キュー233に既に蓄積された処理報告QRが示すページと同一である場合に、処理報告PRはキュー233に入力されることなく消去される例が示された。他の例においては、処理報告生成部226によって生成された処理報告PRではなく、既にキュー233に蓄積されている処理報告QRが、キュー233から削除されてもよい。この方法によっても、同一ページについての管理リスト232の更新処理が繰り返し実行されることが抑制される。
【0047】
図12は、プロセッサ220によって実行される処理であって、主にキュー233への処理報告PRの入力に関する処理の変形例のフローチャートである。コマンド処理が実行されたことをトリガとして処理フローが処理S520により開始され、処理S522において処理報告生成部226が、コマンド処理に応じて処理報告PRを生成する。処理S524においてキュー制御部227が、キュー233の中に、ページ対象と同一のページに関する処理報告QRが有るかを判定する。対象ページと同一のページに関する処理報告QRが有ると判定された場合は、処理フローは処理S526へ進み、対象ページと同一のページに関する処理報告QRが有ると判定されない場合は、処理フローは処理S528へ進む。処理S526においてキュー制御部227は、キュー233に蓄積されていた処理報告QRをキュー233から削除する。処理S528においてキュー制御部227は、生成された処理報告PRをキュー233に入力する。そして処理フローは処理S530にて終了する。
【0048】
図12開示された例において、削除対象となる処理報告QRが複数ある場合には、キュー制御部227によって選択された少なくとも一つの処理報告QRが削除される。
【0049】
次に、キュー233への処理報告の入力に関する処理の他の変形例について説明する。図9図10及び図12に開示された例では、まず処理報告生成部226によって処理報告PRが生成され、生成された処理報告PRが示すページと同一のページを示す他の処理報告QRが既にキュー233に蓄積されているかが判断された。他の方法として、処理報告生成部226が、既にキュー233に蓄積されている処理報告QRが示すページと同一のページに関する処理報告PRを生成しない、という方法が挙げられる。この方法によっても、同一ページに関する管理リスト232の更新処理が繰り返し実行されることが抑制される。
【0050】
図13は、プロセッサ220によって実行される処理であって、主にキュー233への処理報告の入力に関する処理の他の変形例のフローチャートである。コマンド処理が実行されたことをトリガとして処理フローが処理S540により開始され、処理S542において処理報告生成部226が、キュー233に蓄積されている処理報告QRをモニタすることにより、新たに処理報告PRを生成するかを判定する。具体的には処理報告生成部226は、新たに処理報告PRが生成されると仮定した場合に、新たに生成される処理報告PRが示すページと、キュー233に蓄積された処理報告QRが示すページとが同一となるかを判定する。新たに生成される処理報告PRが示すページと、キュー233に蓄積された処理報告QRが示すページとが同一となる場合には、処理報告生成部226は新たな処理報告PRの生成処理を実行しないと判定する。処理S542において、新たな処理報告PRの生成処理を実行すると判定された場合は、処理フローは処理S544へ進み、新たな処理報告PRの生成処理を実行すると判定されない場合は、処理フローは処理S548へ進む。
【0051】
処理S544において処理報告生成部226は、処理報告PRを生成し、処理S546においてキュー制御部227が、生成された処理報告PRをキュー233に入力する。その後、処理S548において処理フローが終了する。
【0052】
ここまで、プロセッサ220によって実行される、キュー233の制御及び管理リスト232の制御に関する処理フローが説明された。以下に、CM21のプロセッサ220によって実行される他の処理内容について説明する。
【0053】
図14は、プロセッサ220によって実行される処理であって、リードコマンドの受信に基づいて実行されるデータの読み出し処理に関するフローチャートである。処理フローは処理S700により開始され、処理S702においてデータ送受信部221がリードコマンドを受信する。処理S704においてヒット判定部222が、受信されたリードコマンドに関してキャッシュメモリのヒット判定を行う。ヒットと判定された場合は、処理フローは処理S706へ進み、ヒットと判定されない場合は、処理フローは処理S710へ進む。
【0054】
処理フローが処理S706へ進んだ場合、処理S706においてキャッシュメモリ制御部223が、キャッシュメモリからデータを読み出す処理を行う。そして処理S708においてデータ送受信部221が、データ(ここではキャッシュメモリから読み出されたデータ)を、リードコマンドの送信元である情報処理装置10に送信する。
【0055】
一方、処理フローが処理S710へ進んだ場合、処理S710においてキャッシュメモリ制御部223が、キャッシュメモリに空きページがあるかを判定する。空きページがあると判定された場合は、処理フローは処理S714へ進み、空きページがあると判定されない場合は、処理フローは処理S712へ進む。処理S712においてキャッシュメモリ制御部223が、空きページを確保する。具体的には、キャッシュメモリ制御部223は、管理リスト232においてLRUに位置するページのデータを消去することにより、空きページを確保する。
【0056】
処理S714においてストレージ装置制御部224が、ストレージ装置30からデータを読み出す処理を行う。そして処理S716においてキャッシュメモリ制御部223が、ストレージ装置30から読み出されたデータを空きページに保持させる。その後、処理S708においてデータ送受信部221が、データ(ここではストレージ装置30から読み出されたデータ)を、リードコマンドの送信元である情報処理装置10に送信しその後、処理S718において処理フローが終了する。
【0057】
図15は、プロセッサ220によって実行される処理であって、ライトコマンドに基づいて実行されるデータの書き込み処理に関するフローチャートである。処理フローは処理S720により開始され、処理S722においてデータ送受信部221がライトコマンドを受信する。処理S724においてヒット判定部222が、受信されたライトコマンドに関してキャッシュメモリのヒット判定を行う。ヒットと判定された場合は、処理フローは処理S726へ進み、ヒットと判定されない場合は、処理フローは処理S730へ進む。
【0058】
処理フローが処理S726へ進んだ場合、処理S726においてキャッシュメモリ制御部223が、書き込み対象のデータを、キャッシュメモリ上に上書きする。そして処理S728においてストレージ装置制御部224が、キャッシュメモリに保持されたデータを、ストレージ装置30に書き込む処理を実行する。
【0059】
一方、処理フローが処理S730へ進んだ場合、処理S730においてキャッシュメモリ制御部223が、キャッシュメモリ上の空きページを確保する。具体的には、キャッシュメモリ制御部223は、管理リスト232においてLRUに位置するページのデータを消去することにより、空きページを確保する。そして処理S732においてキャッシュメモリ制御部223が、確保された空きページにデータを保持させる。そして処理S728において、データがストレージ装置30に書き込まれた後、処理S734において処理フローが終了する。
【0060】
ここまで第1実施例が開示された。第1実施例に開示された方法により、管理リスト232の更新に要するプロセッサ220の処理負荷を軽減させることができる。尚、管理リスト232のリスト長(キャッシュメモリのページ数)はキュー233の最大長よりも長いことが好ましい。管理リスト232のリスト長がキュー233の最大長よりも長ければ、特定のページに関する処理報告がキューに入力されることなく消去されることによって当該ページのデータがキャッシュメモリから削除される可能性を抑制することができる。尚、第1実施例において、「処理報告PRをキュー233に入力しないで消去する処理」として説明された処理は、「処理報告PRを一旦キュー233に入力した後にキュー233から削除する処理」も含むものとする。
<第2実施例>
第1実施例では、キュー233に蓄積された処理報告QRが示すページに基づいて、新たに生成された処理報告PRをキュー233に入力するか否かが判断された。また第1実施例の変形例では、キュー233に蓄積された処理報告QRが示すページに基づいて、キュー233に蓄積された処理報告QRを消去するか否かが判断され、又は新たな処理報告PRの生成を行うか否かが判断された。第2実施例では更に、管理リスト232に登録されているページの情報に基づいて、生成された処理報告PRをキュー233に入力するか否か、又はキュー233に蓄積された処理報告QRを消去するか否か、又は処理報告PRの生成を行うか否かが判断される。
【0061】
図16は、第2実施例におけるキュー制御部227の機能を説明するための図である。まず処理報告生成部226が処理報告PRを生成する。ここでは図9と同様に、ページAを示す情報を含む処理報告PRが生成されるものとする。キュー制御部227は、生成された処理報告PRをキュー233に入力するか否かの判定を行う。この際、キュー制御部227は、キュー233の内容に加え、管理リスト232の内容もモニタする。そしてキュー制御部227は、キュー233の内容及び管理リスト232の内容に基づいて、処理報告PRをキュー233に入力せずに消去するか、処理報告PRをキュー233に入力するかを決定する。
【0062】
例えば、管理リスト232にページAが登録されていない場合であって、ページAに関する処理報告QRがキュー233に2つ以上蓄積されている場合は、キュー制御部227は、ページAに関する処理報告PRをキュー233に入力しない。管理リスト232にページAが登録されていない場合であって、ページAに関する処理報告QRがキュー233に1つ蓄積されている又は蓄積されていない場合は、キュー制御部227は、ページAに関する処理報告PRをキュー233に入力する。
【0063】
一方、管理リスト232にページAが登録されている場合であって、ページAに関する処理報告QRがキュー233に1つ以上蓄積されている場合は、キュー制御部227は、ページAに関する処理報告PRをキュー233に入力しない。そして、管理リスト232にページAが登録されている場合であって、ページAに関する処理報告QRがキュー233に蓄積されていない場合は、キュー制御部227は、ページAに関する処理報告PRをキュー233に入力する。
【0064】
図17は、キュー制御部227によって実行される処理のフローチャートである。処理フローは処理S800により開始され、処理S802においてキュー制御部227が、管理リスト232に対象ページが登録されているかを判定する。管理リスト232に対象ページが登録されていると判定された場合は、処理フローは処理S804に進み、管理リスト232に対象ページが登録されていると判定されない場合は、処理フローは処理S806に進む。
【0065】
処理フローが処理S804へ進んだ場合、処理S804においてキュー制御部227は、対象ページと同一のページに関する処理報告QRがキュー233に1つ以上蓄積されているかを判定する。対象ページと同一のページに関する処理報告QRがキュー233に1つ以上蓄積されていると判定された場合は、処理フローは処理S808へ進み、対象ページと同一のページに関する処理報告QRがキュー233に1つ以上蓄積されていると判定されない場合は、処理フローは処理S810へ進む。処理S808においてキュー制御部227は、キュー233に処理報告PRを入力しない。一方、処理S810においてキュー制御部227は、キュー233に処理報告PRを入力する。
【0066】
処理フローが処理S806へ進んだ場合、処理S806においてキュー制御部227は、対象ページと同一のページに関する処理報告QRがキュー233に2つ以上蓄積されているかを判定する。対象ページと同一のページに関する処理報告QRがキュー233に2つ以上蓄積されていると判定された場合は、処理フローは処理S808へ進み、対象ページと同一のページに関する処理報告QRがキュー233に2つ以上蓄積されていると判定されない場合は、処理フローは処理S810へ進む。処理S808においてキュー制御部227は、キュー233に処理報告PRを入力しない。一方、処理S810においてキュー制御部227は、キュー233に処理報告PRを入力する。その後、処理S812において処理フローは終了する。
【0067】
第2実施例によって開示される概念を示すと以下のようになる。処理報告生成部226によって生成された処理報告PRが示すページと同一のページに関するn個の処理報告QRが既にキュー233に蓄積されている場合には、処理報告PRはキュー233には入力されずに消去される。そして、管理リスト232に、処理報告生成部226によって生成された処理報告PRが示すページと同一のページが登録されている場合におけるnは、管理リスト232に同一のページが登録されていない場合におけるnに比べて低い値に設定される。
【0068】
尚、管理リスト232に例えばページAが登録されているかどうかを判定するための方法としては、例えばフラグを用いる方法が挙げられる。この方法では、ページAが管理リスト232に登録された時点で、ページAが管理リスト232に登録されていることを示すフラグが生成され、ページAが管理リスト232から削除された時点で、フラグが消去される。このフラグの有無により、管理リスト232にページAが登録されているか否かの判断が行われる。
【0069】
次に、第2実施例の変形例について説明する。図18は、第2実施例の変形例におけるプロセッサ220の機能ブロックを示す図である。図3に示された機能ブロックと同一の機能ブロックについては同一の参照符号が付され、説明は省略される。プロセッサ220は第1管理リスト2321、第2管理リスト2322を有する。以下、第1管理リスト2321と第2管理リスト2322を区別しない場合は、単に「管理リスト232」と表記するものとする。
【0070】
図19は、第1管理リスト2321と第2管理リスト2322の機能を説明するための図である。第1管理リスト2321及び第2管理リスト2322のそれぞれは、LRU方式によって制御される。キャッシュメモリのあるページが第1管理リスト2321にも第2管理リスト2322にも登録されていない状態において、当該ページにアクセスがあった場合、当該ページはまず第1管理リスト2321に登録される。そしてその後、当該ページが第1管理リスト2321から消去されるまでの間に当該ページに対して更なるアクセスがあった場合、つまり当該ページに対するヒット判定においてヒットと判定された場合は、当該ページは第2管理リスト2322に移動される。当該ページが第2管理リスト2322から消去されるまでに、当該ページに対して更なるアクセスがあった場合は、当該ページは第2管理リスト2322におけるMRUの位置に移動される。つまり、1回のみアクセスされたページが登録される第1管理リスト2321と、2回以上のアクセスがあったページが登録される第2管理リスト2322を用いて、キャッシュメモリのページ管理が行われる。
【0071】
このように2つの管理リスト232を用いることにより、例えばストレージ装置30のシーケンシャルスキャンのように大量のデータが順に読み出される場合であっても、アクセス頻度が高いデータがキャッシュメモリから押し出されることを抑制することができる。
【0072】
第2実施例は、2つの管理リスト232を用いたキャッシュメモリのページ管理においても適用可能である。図20は、第2実施例において2つの管理リスト232を用いてキャッシュメモリのページ管理が行われる場合の、キュー制御部227の機能を説明するための図である。まず、処理報告生成部226がページAに関する処理報告PRを生成したとする。キュー制御部227は、処理報告PRをキュー233に蓄積させるかどうかの判断において、まず2つの管理リスト232の内容をモニタする。2つの管理リスト232の何れにもページAが登録されていない場合は、キュー制御部227は、キュー233にページAに関する処理報告QRが2つ以上蓄積されているかどうかを判定する。キュー233にページAに関する処理報告QRが2つ以上蓄積されている場合は、キュー制御部227は、処理報告PRをキュー233に入力することなく消去する。逆に、キュー233にページAに関する処理報告QRが1つ蓄積されている、又は蓄積されていない場合は、キュー制御部227は、処理報告PRをキュー233に入力する。
【0073】
一方、2つの管理リスト232の何れかにページAが登録されている場合は、キュー制御部227は、キュー233にページAに関する処理報告QRが1つ以上蓄積されているかどうかを判定する。そしてキュー233にページAに関する処理報告QRが1つ以上蓄積されている場合は、キュー制御部227は、処理報告PRをキュー233に入力することなく消去する。逆に、キュー233にページAに関する処理報告QRが蓄積されていない場合は、キュー制御部227は、処理報告PRをキュー233に入力する。
【0074】
第2実施例の変形例によって開示される概念を示すと以下のようになる。処理報告生成部226によって生成された処理報告PRが示すページと同一のページに関するn個の処理報告QRが既にキュー233に蓄積されている場合には、処理報告PRはキュー233には入力されずに消去される。そして、2つの管理リスト232の何れかに、生成された処理報告PRが示すページと同一のページが登録されている場合におけるnは、2つの管理リスト232の何れにも同一のページが登録されていない場合におけるnに比べて低い値に設定される。
【0075】
尚、第2実施例の変形例において、処理報告PRが示すページが、第1管理リスト2321と第2管理リスト2322のどちらに登録されているのかによって、nが異なる値に設定されてもよい。例えば、2つの管理リスト232の何れにも、処理報告PRが示すページAが登録されていない場合であって、ページAを示す処理報告QRが3つ以上キュー233に蓄積されている場合は、処理報告PRはキュー233に入力されない。逆に、キュー233に蓄積されているページAに関する処理報告QRの数が2以下である場合は、キュー制御部227は、処理報告PRをキュー233に入力する。
【0076】
一方、第1管理リスト2321にページAが登録されている場合であって、キュー233に蓄積されたページAに関する処理報告QRの数が2以上である場合は、キュー制御部227は、処理報告PRをキュー233に入力せずに消去する。逆に、キュー233に蓄積されたページAに関する処理報告QRの数が1以下である場合は、キュー制御部227は、処理報告PRをキュー233に入力する。
【0077】
更に、第2管理リスト2322にページAが登録されている場合であって、キュー233に蓄積されたページAに関する処理報告QRの数が1以上である場合は、キュー制御部227は、処理報告PRをキュー233に入力せずに消去する。逆に、キュー233にはページAに関する処理報告QRが蓄積されていない場合は、キュー制御部227は、処理報告PRをキュー233に入力する。
【0078】
第2実施例の変形例においては、管理リスト232の数が2つである場合について説明したが、管理リスト232の数は3つ以上であってもよい。例えばM個の管理リスト232(第1管理リスト2321、第2管理リスト2322、第3管理リスト2323・・・・第M管理リスト232M)が用いられる場合の例を説明する。アクセスされたページのヒット回数が0回の場合は、第1管理リスト2321に登録され、ヒット回数が1回から2回の場合は第2管理リスト2322に登録され、ヒット回数が3回から6回の場合は第3管理リスト2323に登録される。そして、ヒット回数が2−1以上である場合は第M管理リスト232Mに登録される。このようにM個の管理リスト232が用いられる場合において、キュー管理部227は、M個の管理リスト232の何れかにページAが登録されているかを示す情報と、キュー233にページAに関する処理報告QRが何個蓄積されているかを示す情報を取得する。そしてこれらの情報に基づいて、ページAに関する処理報告PRをキュー233に入力するか否かの判断を実行する。もしくは、キュー管理部227は、M個の管理リスト232のうちどの管理リスト232にページAが登録されているかを示す情報と、キュー233にページAに関する処理報告QRが何個蓄積されているかを示す情報とを取得する。そしてこれらの情報に基づいて、ページAに関する処理報告PRをキュー233に入力するか否かの判断を実行してもよい。例えば、ページAを示すn個の処理報告QRがキュー233に蓄積されている場合には、キュー管理部227は、ページAを示す処理報告PRをキュー233に入力せずに消去する。そして、第i管理リスト232iにページAが登録されている場合のnは、第j管理リスト232j(j>i)にページAが登録されている場合のnに比べて高い値に設定されてもよい。
【0079】
ここまで第2実施例とその変形例について説明した。第2実施例において開示された管理リスト232の数や、複数の管理リスト232によるページ管理方法、また数値nの設定方法は一例であり、当業者が適宜変更し得るものである。
【0080】
また第2実施例及びその変形例においても、第1実施例の変形例と同様に、処理報告PRをキュー233に入力せずに消去する処理に代えて、キュー233に蓄積された処理報告QRを消去する処理、又は処理報告PRを生成しない処理が行われてもよい。
【0081】
開示の実施形態に基づき、更に以下の付記を開示する。
(付記1)
複数の領域を含むキャッシュメモリを有し、
情報処理装置からコマンドを受信し、
前記コマンドの受信に基づき、前記キャッシュメモリへのアクセスを含むコマンド処理を実行し、
前記複数の領域のうち、前記コマンド処理においてアクセスされた領域を特定する処理報告を生成し、
生成された前記処理報告をキューに入力し、
前記キューに入力された前記処理報告に基づき、前記領域へのアクセスを管理リストに記録する管理リスト更新処理を実行するストレージ制御装置であって、
前記情報処理装置から第1コマンドを受信した場合、前記第1コマンドの受信に基づき、前記キャッシュメモリの前記複数の領域の第1領域へのアクセスを含む第1コマンド処理を実行し、
前記第1領域を特定する第1処理報告を生成し、前記キューに、前記第1領域を特定する1又は複数の第2処理報告が保持されている場合には、生成された前記第1処理報告の前記キューへの入力を行わないか、若しくは、1又は複数の前記第2処理報告の少なくとも一つを前記キューから削除するか、又は、
前記キューに、前記第1領域を特定する1又は複数の前記第2処理報告が保持されている場合には、前記第1処理報告の生成を実行しない
ことを特徴とするストレージ制御装置。
(付記2)
前記管理リストに前記第1領域を含む前記複数の領域が登録されている場合、前記第1処理報告に基づく前記管理リスト更新処理は、前記複数の領域のうち前記第1領域が、直近にアクセスされた時刻が最も新しいことを示すよう、前記管理リストを変更する処理を含むことを特徴とする付記1に記載のストレージ制御装置。
(付記3)
前記複数の領域のうち、直近にアクセスされた前記時刻が最も古い領域に保持されたデータを消去することを特徴とする付記2に記載のストレージ制御装置。
(付記4)
前記第1コマンドが第1データの読み出しを要求する場合であって、前記第1データが前記第1領域に保持されている場合は、前記第1データを前記第1領域から読み出して、読み出された前記第1データを前記情報処理装置へ送信し、
前記第1コマンドが前記第1データの読み出しを要求する場合であって、前記第1データが前記第1領域を含む前記キャッシュメモリに保持されていない場合は、前記第1データをストレージ装置から読み出して、読み出された前記第1データを前記情報処理装置へ送信し、前記第1データを前記キャッシュメモリの前記第1領域へ保持させる
ことを特徴とする付記1乃至3何れか一つに記載のストレージ制御装置。
(付記5)
前記第1コマンドが第1データの書き込みを要求する場合、前記第1データを前記第1領域に保持させることを特徴とする付記1乃至3何れか一つに記載のストレージ制御装置。
(付記6)
前記キューに1又は複数の前記第2処理報告が保持されている場合に、1又は複数の前記第2処理報告の個数を特定し、
前記個数が所定値以上の場合に、生成された前記第1処理報告の前記キューへの入力を行わない、若しくは、前記1又は複数の第2処理報告の少なくとも一つを前記キューから削除する、又は、前記第1処理報告の生成を行わない
ことを特徴とする付記1乃至5何れか一つに記載のストレージ制御装置。
(付記7)
更に、前記管理リスト更新処理を実行するプロセッサを含み、
前記プロセッサの処理負荷を特定し、
前記プロセッサの前記処理負荷が第1の値である場合は、前記所定値は第2の値であり、
前記プロセッサの前記処理負荷が、前記第1の値よりも高い第3の値である場合は、前記所定値は、前記第2の値よりも低い第4の値である
ことを特徴とする付記6に記載のストレージ制御装置。
(付記8)
複数の前記コマンドが前記ストレージ制御装置によって受信された場合、複数の前記コマンドの受信に基づいて複数の前記コマンド処理を実行し、
複数の前記コマンド処理に基づいて複数の前記処理報告を生成し、
複数の前記処理報告を前記キューに入力し、
複数の前記処理報告を前記キューから順次取り出すことにより、複数の前記管理リスト更新処理を順次実行する
ことを特徴とする付記1乃至7何れか一つに記載のストレージ制御装置。
(付記9)
前記管理リストに、前記第1領域が登録されているかを示す第1情報と、前記キューに、1又は複数の前記第2処理報告が保持されているかを示す第2情報とに基づいて、前記第1処理報告の前記キューへの入力を行うかの判断、若しくは、1又は複数の前記第2処理報告の少なくとも一つを前記キューから削除するかの判断、又は、前記第1処理報告の生成を行うかの判断を行う
ことを特徴とする付記1乃至8何れか一つに記載のストレージ制御装置。
(付記10)
前記コマンド処理は、前記ストレージ装置へのアクセスを更に含み、
前記処理報告の生成は、前記ストレージ装置へのアクセスの後に実行される
ことを特徴とする付記4乃至9何れか一つに記載のストレージ制御装置。
(付記11)
複数の領域を含むキャッシュメモリを有するストレージ制御装置が、
情報処理装置からコマンドを受信し、
前記コマンドの受信に基づき、前記キャッシュメモリへのアクセスを含むコマンド処理を実行し、
前記複数の領域のうち、前記コマンド処理においてアクセスされた領域を特定する処理報告を生成し、
生成された前記処理報告をキューに入力し、
前記キューに入力された前記処理報告に基づき、前記領域へのアクセスを管理リストに記録する管理リスト更新処理を実行し、
前記情報処理装置から第1コマンドを受信した場合、前記第1コマンドの受信に基づき、前記キャッシュメモリの前記複数の領域の第1領域へのアクセスを含む第1コマンド処理を実行し、
前記第1領域を特定する第1処理報告を生成し、前記キューに、前記第1領域を特定する1又は複数の第2処理報告が保持されている場合には、生成された前記第1処理報告の前記キューへの入力を行わないか、若しくは、1又は複数の前記第2処理報告の少なくとも一つを前記キューから削除するか、又は、
前記キューに、前記第1領域を特定する1又は複数の前記第2処理報告が保持されている場合には、前記第1処理報告の生成を実行しない
ことを特徴とするキャッシュメモリ制御方法。
(付記12)
前記管理リストに前記第1領域を含む前記複数の領域が登録されている場合、前記第1処理報告に基づく前記管理リスト更新処理は、前記複数の領域のうち前記第1領域が、直近にアクセスされた時刻が最も新しいことを示すよう、前記管理リストを変更する処理を含むことを特徴とする付記11に記載のキャッシュメモリ制御方法。
(付記13)
前記複数の領域のうち、直近にアクセスされた前記時刻が最も古い領域に保持されたデータを消去することを特徴とする付記12に記載のキャッシュメモリ制御方法。
(付記14)
前記第1コマンドが第1データの読み出しを要求する場合であって、前記第1データが前記第1領域に保持されている場合は、前記第1データを前記第1領域から読み出して、読み出された前記第1データを前記情報処理装置へ送信し、
前記第1コマンドが前記第1データの読み出しを要求する場合であって、前記第1データが前記第1領域を含む前記キャッシュメモリに保持されていない場合は、前記第1データをストレージ装置から読み出して、読み出された前記第1データを前記情報処理装置へ送信し、前記第1データを前記キャッシュメモリの前記第1領域へ保持させる
ことを特徴とすることを特徴とする付記11乃至13何れか一つに記載のキャッシュメモリ制御方法。
(付記15)
前記第1コマンドが第1データの書き込みを要求する場合、前記第1データを前記第1領域に保持させることを特徴とする付記11乃至13何れか一つに記載のキャッシュメモリ制御方法。
(付記16)
前記キューに1又は複数の前記第2処理報告が保持されている場合に、1又は複数の前記第2処理報告の個数を特定し、
前記個数が所定値以上の場合に、生成された前記第1処理報告の前記キューへの入力を行わないか、若しくは、1又は複数の前記第2処理報告の少なくとも一つを前記キューから削除するか、又は、前記第1処理報告の生成を行わない
ことを特徴とする付記11乃至15何れか一つに記載のキャッシュメモリ制御方法。
(付記17)
前記ストレージ制御装置に含まれる、前記管理リスト更新処理を実行するプロセッサの処理負荷を特定する工程を更に含み、
前記プロセッサの前記処理負荷が第1の値である場合は、前記所定値は第2の値であり、
前記プロセッサの前記処理負荷が、前記第1の値よりも高い第3の値である場合は、前記所定値は、前記第2の値よりも低い第4の値である
ことを特徴とする付記16に記載のキャッシュメモリ制御方法。
(付記18)
複数の前記コマンドが前記ストレージ制御装置によって受信された場合、複数の前記コマンドの受信に基づいて複数の前記コマンド処理を実行し、
複数の前記コマンド処理に基づいて複数の前記処理報告を生成し、
複数の前記処理報告を前記キューに入力し、
複数の前記処理報告を前記キューから順次取り出すことにより、複数の前記管理リスト更新処理を順次実行する
ことを特徴とする付記11乃至17何れか一つに記載のキャッシュメモリ制御方法。
(付記19)
前記管理リストに、前記第1領域が登録されているかを示す第1情報と、前記キューに、1又は複数の前記第2処理報告が保持されているかを示す第2情報とに基づいて、前記第1処理報告の前記キューへの入力を行うかの判断、若しくは、前記1又は複数の第2処理報告の少なくとも一つを前記キューから削除するかの判断、又は、前記第1処理報告の生成を行うかの判断を行う
ことを特徴とする付記11乃至18何れか一つに記載のキャッシュメモリ制御方法。
(付記20)
ストレージ装置と、
複数の領域を含むキャッシュメモリを有するストレージ制御装置と、
を含み、
前記ストレージ制御装置は、
情報処理装置からコマンドを受信し、
前記コマンドの受信に基づき、前記キャッシュメモリへのアクセスを含むコマンド処理を実行し、
前記複数の領域のうち、前記コマンド処理においてアクセスされた領域を特定する処理報告を生成し、
生成された前記処理報告をキューに入力し、
前記キューに入力された前記処理報告に基づき、前記領域へのアクセスを管理リストに記録する管理リスト更新処理を実行するストレージ制御装置であって、
前記情報処理装置から第1コマンドを受信した場合、前記第1コマンドの受信に基づき、前記キャッシュメモリの前記複数の領域の第1領域へのアクセスを含む第1コマンド処理を実行し、
前記第1領域を特定する第1処理報告を生成し、前記キューに、前記第1領域を特定する1又は複数の第2処理報告が保持されている場合には、生成された前記第1処理報告の前記キューへの入力を行わないか、若しくは、1又は複数の前記第2処理報告の少なくとも一つを前記キューから削除するか、又は、
前記キューに、前記第1領域を特定する1又は複数の前記第2処理報告が保持されている場合には、前記第1処理報告の生成を実行しない
ことを特徴とするストレージシステム。
【符号の説明】
【0082】
10 情報処理装置
20 ストレージ制御装置
21、21a、21b 制御装置(CM)
30 ストレージ装置
210 CA
220 プロセッサ
240 不揮発性メモリ
250 揮発性メモリ
260 IOC
270 EXP
221 データ送受信部
222 ヒット判定部
223 キャッシュメモリ制御部
224 ストレージ装置制御部
225 完了通知部
226 処理報告生成部
227 キュー制御部
228 管理リスト制御部
231 メタデータリスト
232 管理リスト
2321 第1管理リスト
2322 第2管理リスト
233 キュー
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20