(57)【要約】    【課題】ページ内にダーティデータが不連続に存在してもライトバックのコマンド発行数を必要最小限に抑えて処理時間を短縮する。    【解決手段】キャッシュ処理部３６は、キャッシュメモリ上のデータをホストのアクセス単位となるブロックデータを複数含むページ単位で管理してホストの記憶デバイス２２に対する入出力要求を処理する。ライトバック処理部５４は、ホストにより更新された記憶デバイス２８の記憶データより新しいキャッシュメモリ上のダーティデータを記憶デバイス２８に書き戻す際に、ダーティデータのページ内での不連続領域を判定した場合は、リードコマンドの発行で不連続領域を記憶デバイス２８から読み出してマージすることにより連続領域を生成し、１回のライトコマンドの発行でライトバックする。    【選択図】      図１
2006163474.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュメモリ上のデータを、上位装置のアクセス単位となるブロックデータを複数含むページデータ単位に管理して、前記上位装置の記憶デバイスに対する入出力要求を処理するキャッシュ制御部と、
上位装置により更新された前記記憶デバイスの記憶データより新しい前記キャッシュメモリ上のダーティデータを前記記憶デバイスに書き戻す際に、前記ダーティデータのページ内での不連続領域を判定した場合は、不連続領域を前記記憶デバイスから読み出してマージすることにより連続領域を生成してライトバックするライトバック処理部と、
を備えたことを特徴とする記憶装置。
【請求項２】
請求項１記載の記憶装置に於いて、前記ライトバック処理部は、３回以上のコマンド発行によるライトバック処理となる場合に、不連続領域を前記記憶デバイスから読み出してマージすることにより連続領域を生成してライトバックすることを特徴とする記憶装置。
【請求項３】
請求項１記載の記憶装置に於いて、前記ライトバック処理部は、ページ内のダーティデータの分布として、ページ先端に最も近い第１連続領域とページ末尾に最も近い第２連続領域の間に不連続領域を介して少なくとも1つの第３連続領域が存在する場合に、前記第１連続領域と第２連続領域の間の第３連続領域を含む不連続領域を判定して前記記憶デバイスから読み出し、前記不連続領域に存在する第３連続領域以外の領域を読み出したデータのマージにより連続領域を生成してライトバックすることを特徴とする記憶装置。
【請求項４】
請求項３記載の記憶装置に於いて、前記キャッシュ制御部は、
前記ページ内におけるダーティデータの有無を各ブロック対応のビットにより管理するダーティビットマップと、
前記ページ内におけるデータの有無を各ブロック対応のビットにより管理する現在データビットマップと、
を備え、
前記ライトバック処理部は、前記ダーティデータビットマップを参照してダーティデータのページ内での前記不連続領域を判定し、前記不連続領域の一端又は両端について前記現在データビットマップから連続現在データを判別した場合は、残りの不連続領域につき前記記憶デバイスから読み出してマージすることを特徴とする記憶装置。
【請求項５】
請求項１記載の記憶装置に於いて、前記記憶デバイスのストリップデータのサイズを前記キャッシュメモリのページサイズと同一としたことを特徴とする記憶装置。
【請求項６】
記憶装置の制御方法に於いて、
キャッシュメモリ上のデータを、上位装置のアクセス単位となるブロックデータを複数含むページデータ単位に管理して、前記上位装置の記憶デバイスに対する入出力要求を処理するキャッシュ制御ステップと、
上位装置により更新された前記記憶デバイスの記憶データより新しい前記キャッシュメモリ上のダーティデータを前記記憶デバイスに書き戻す際に、前記ダーティデータのページ内での不連続領域を判定した場合は、不連続領域を前記記憶デバイスから読み出してマージすることによりページ連続データを生成してページ単位にライトバックするライトバック処理ステップと、
を備えたことを特徴とする記憶装置の制御方法。
【請求項７】
請求項６記載の記憶装置の制御方法に於いて、前記ライトバック処理ステップは、３回以上のコマンド発行によるライトバック処理となる場合に、不連続領域を前記記憶デバイスから読み出してマージすることによりページ連続データを生成してページ単位にライトバックすることを特徴とする記憶装置の制御方法。
【請求項８】
請求項６記載の記憶装置の制御方法に於いて、前記ライトバック処理ステップは、ページ内のダーティデータの分布として、ページ先端に最も近い第１連続領域とページ末尾に最も近い第２連続領域の間に不連続領域を介して少なくとも1つの第３連続領域が存在する場合に、前記大地連続領域と第２連続領域の間の第３連続領域を含む不連続領域を判定して前記記憶デバイスから読み出し、前記不連続領域に存在する第３連続領域以外の領域を読み出したデータのマージにより連続領域を生成してライトバックすることを特徴とする記憶装置の制御方法。
【請求項９】
請求項８記載の記憶装置の制御方法に於いて、前記キャッシュ制御ステップは、
前記ページ内におけるダーティデータの有無を各ブロック対応のビットにより管理するダーティビットマップと、
前記ページ内におけるデータの有無を各ブロック対応のビットにより管理する現在データビットマップと、
を生成し、
前記ライトバック処理ステップは、前記ダーティデータビットマップを参照してダーティデータのページ内での前記不連続領域を判定し、前記不連続領域の一端又は両端について前記現在データビットマップから連続現在データを判別した場合は、残りの不連続領域につき前記記憶デバイスから読み出してマージすることを特徴とする記憶装置の制御方法。
【請求項１０】
記憶装置のコンピュータに、
キャッシュメモリ上のデータを、上位装置のアクセス単位となるブロックデータを複数含むページデータ単位に管理して、前記上位装置の記憶デバイスに対する入出力要求を処理するキャッシュ制御ステップと、
上位装置により更新された前記記憶デバイスの記憶データより新しい前記キャッシュメモリ上のダーティデータを前記記憶デバイスに書き戻す際に、前記ダーティデータのページ内での不連続領域を判定した場合は、不連続領域を前記記憶デバイスから読み出してマージすることによりページ連続データを生成してページ単位にライトバックするライトバック処理ステップと、
を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、上位装置の記憶デバイスに対する入出力要求をキャッシュメモリを介して処理する記憶装置、その制御方法及びプログラムに関し、特にキャッシュメモリ上で更新された最新のデータを記憶デバイスにライトバックする記憶装置、その制御方法及びプログラムに関する。
【背景技術】
【０００２】
従来、ホストからの入出力要求を処理するＲＡＩＤ装置にあっては、制御モジュールにキャッシュメモリを設け、キャッシュメモリ上でホストからの入出力要求を処理するようにしている。
【０００３】
このようなＲＡＩＤ装置のキャッシュデータはページ単位に管理されており、図１１のように、キャッシュページ１００は例えば６６，５６０バイトを１ページとして管理している。
【０００４】
キャッシュページ１００はホストのアクセス単位となる複数のブロック単位のユーザデータで構成され、１ブロックのユーザデータは５１２バイトであり、５１２バイト毎に８バイトのブロックチェックコード（ＢＣＣ）が付加され、この５２０バイトのブロックを１２８ブロック単位で１ページとして管理し、このため１ページは５２０×１２８=６６，５６０バイトとなる。
【０００５】
またキャッシュページを管理するためにキャッシュバンドルエレメントＣＢＥと呼ばれるキャッシュ管理テーブルを用意する。キャッシュ管理テーブルには１ページごとに対応する管理レコードが存在し、管理レコードは論理ユニット番号ＬＵＮ、論理ブロックアドレスＬＢＡ、１ブロックを１ビットで対応したダーティデータを示す図１２（Ｂ）のダーティデータビットマップ１０４、及び同じく１ブロックを１ビットで対応した現在データの有無を示す図１２（Ａ）の現在データビットマップ１０２等を保持している。このキャッシュ管理テーブルの１ページはＲＡＩＤグループを構成するディスク装置のストリップは１対１のサイズに合わせている。
【０００６】
ＲＡＩＤ装置のキャッシュ制御にあっては、ホストからライト要求時にキャッシュページを必要分割り当てるが、ライトデータは必ず１ページ分の全て存在する分けではないため、ページ内のライト処理で更新されたブロックについてダーティビットマップの対応するビットをビット１にセットしてダーティデータの有無を管理している。
【０００７】
また従来のキャッシュ制御にあっては、キャッシュメモリ空き領域が不足した場合やＬＲＵアルゴリズムにより古いキャッシュデータを追い出す際に、ページ内に存在するダーティデータをディスク装置に書き戻すライトバック処理を行う。
【特許文献１】特開平０５−３０３５２８号公報
【特許文献２】特開平０８−１１５１６９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、このような従来のキャッシュ制御処理にあっては、ページ内に存在するダーティデータをディスク装置にライトバックする場合、ダーティデータビットマップで管理されたビット１となるブロックのみをディクス装置へライトするため、ページ内にダーティデータのブロックが不連続に存在する場合、ビット１のかたまりとなる連続領域ごとにライトコマンドを発行してディスク装置に書き込むこととなり、ディスク装置に対するコマンド処理の時間が長くなり、性能が低下する問題がある。
【０００９】
本発明は、ページ内にダーティデータが不連続に存在してもライトバックのコマンド発行数を必要最小限に抑えてライトバック処理時間を低減する記憶装置、その制御方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
図１は本発明の原理説明図である。本発明は記憶装置を提供する。本発明の記憶装置は、
キャッシュメモリ上のデータを、上位装置のアクセス単位となるブロックデータを複数含むページデータ単位に管理して上位装置の記憶デバイス２２に対する入出力要求を処理するキャッシュ制御部４２と、
上位装置により更新された記憶デバイス２２の記憶データより新しいキャッシュメモリ上のダーティデータを記憶デバイスに書き戻す際に、ダーティデータのページ内での不連続領域を判定した場合は、不連続領域を記憶デバイス２２から読み出してマージすることにより連続領域を生成してライトバックするライトバック処理部５４と、
を備えたことを特徴とする。
【００１１】
ここで、ライトバック処理部は、３回以上のコマンド発行によるライトバック処理となる場合に、不連続領域を前記記憶デバイスから読み出してマージすることにより連続領域を生成してページ単位にライトバックする。
【００１２】
ライトバック処理部は、ページ内のダーティデータの分布として、ページ先端に最も近い第１連続領域とページ末尾に最も近い第２連続領域の間に不連続領域を介して少なくとも1つの第３連続領域が存在する場合に、第１連続領域と第２連続領域の間の第３連続領域を含む不連続領域を判定して記憶デバイスから読み出し、不連続領域に存在する第３連続領域以外の領域を読み出したデータでマージした連続領域を生成してライトバックする。
【００１３】
キャッシュ制御部は、ページ内におけるダーティデータの有無を各ブロック対応のビットにより管理するダーティビットマップと、ページ内におけるデータの有無を各ブロック対応のビットにより管理する現在データビットマップとを備え、ライトバック処理部は、ダーティデータビットマップを参照してダーティデータのページ内での不連続領域を判定し、不連続領域の一端又は両端について現在データビットマップから連続現在データを判別した場合は、残りの不連続領域につき記憶デバイスから読み出してマージする。
【００１４】
記憶デバイスのストリップデータのサイズはキャッシュメモリのページサイズと同一とする。
【００１５】
本発明は記憶装置の制御方法を提供する。本発明による記憶装置の制御方法は、
キャッシュメモリ上のデータを、上位装置のアクセス単位となるブロックデータを複数含むページデータ単位に管理して、前記上位装置の記憶デバイスに対する入出力要求を処理するキャッシュ制御ステップと、
上位装置により更新された記憶デバイスの記憶データより新しいキャッシュメモリ上のダーティデータを記憶デバイスに書き戻す際に、ダーティデータのページ内での不連続領域を判定した場合は、不連続領域を記憶デバイスから読み出してマージすることにより連続領域を生成してライトバックするライトバック処理ステップと、
を備えたことを特徴とする。
【００１６】
本発明は記憶装置のコンピュータで実行されるプログラムを提供する。本発明のプログラムは、記憶装置のコンピュータに、
キャッシュメモリ上のデータを、上位装置のアクセス単位となるブロックデータを複数含むページデータ単位に管理して、上位装置の記憶デバイスに対する入出力要求を処理するキャッシュ制御ステップと、
上位装置により更新された記憶デバイスの記憶データより新しいキャッシュメモリ上のダーティデータを記憶デバイスに書き戻す際に、ダーティデータのページ内での不連続領域を判定した場合は、不連続領域を記憶デバイスから読み出してマージすることにより連続領域を生成してライトバックするライトバック処理ステップと、
を実行させることを特徴とする。
【００１７】
なお、本発明における記憶装置の制御方法及びプログラムの詳細は、本発明の記憶装置の場合と基本的に同じになる。
【発明の効果】
【００１８】
本発明によれば、ページ内に少なくとも３箇所以上に分かれてダーティデータが存在する場合であっても、不連続領域を記憶デバイスから読み出してマージするためのリードコマンドの発行と、読み出しによるマージで生成した連続領域を記憶デバイスに書き込むライトコマンドの発行の２回のコマンド発行でライトバックすることができ、ページ内にダーティデータが不連続に分散して存在しても、コマンド発生回数を２回に抑えてコマンド処理時間を短縮し、装置全体としての性能向上に大きく寄与させることができる。
【発明を実施するための最良の形態】
【００１９】
図２は本発明が適用されるＲＡＩＤ装置のハードウェア構成のブロック図であり、大型の装置構成を例にとっている。図２において、ＲＡＩＤ装置１０に対しては、フレーム系ホスト１２とＵＮＩＸ（Ｒ）／ＡＩサーバ系ホスト１４が設けられている。
【００２０】
ＲＡＩＤ装置１０内には、ＣＰＵ１５を備えたチャネルアダプタ１６、制御モジュール１８−１〜１８−４、バックエンドルータ２０−１，２０−２、記憶デバイスとして機能するＲＡＩＤ構成をとるハードディスクドライブなどのディスク装置２２−１〜２２−４、更にフロントエンドルータ３２−１〜３２−４を設けている。
【００２１】
ＲＡＩＤ装置１０は最大構成で制御モジュールを８台実装することができるが、この例にあっては制御モジュール１８−１〜１８−４の４台構成とした場合を例にとっている。チャネルアダプタ１６はＣＰＵ１５を備え、フレームワーク系ホスト１２を制御モジュール１８−１〜１８−４に接続している。
【００２２】
制御モジュール１８−１〜１８−４には、制御モジュール１８−１に代表して示すように、ＣＰＵ２４、チャネルアダプタ２６、キャッシュメモリ２８及びファイバチャネル３０−１〜３０−８が設けられている。チャネルアダプタ２６はＵＮＩＸ（Ｒ）／ＡＩサーバ系ホスト１４を接続する。
【００２３】
ＣＰＵ２４には、ホスト１２からのライトコマンド及びリードコマンドに対する入出力要求をキャッシュメモリ２８上で処理して応答する入出力処理機能に加え、キャッシュメモリ２８の制御と管理、更にキャッシュメモリ２８からバックエンドルータ２０−１，２０−２を介して、ディスク装置２２−１〜２２−４に対するキャッシュデータのライトバック、及びディスク装置２２−１〜２２−４からのディスクデータのステージングなどをプログラム制御により行っている。
【００２４】
フロントエンドルータ３２−１〜３２−４は、制御モジュール１８−１に対し他の制御モジュール１８−２〜１８−４を接続して、制御の多重化を図っている。またバックエンドルータ２０−１，２０−２に対しては制御モジュール１８−１〜１８−４がそれぞれ接続され、制御モジュール側のＣＰＵ２４によるＲＡＩＤ制御によるデータの入出力処理を行っている。
【００２５】
図３は本発明が適用されるＲＡＩＤ装置の他のハードウェア構成のブロック図であり、図２の大型装置に対し規模の小さな小型あるいは中型装置とした場合を例にとっている。図３において、ＲＡＩＤ装置１０は、ＣＰＵ１５を備えたチャネルアダプタ１６、二重構成の制御モジュール１８−１，１８−２、及びＲＡＩＤ構成をとるディスク装置２２−１〜２２−３を備えている。制御モジュール１８−１，１８−２には、制御モジュール１８−１に代表して示すように、ＣＰＵ２４、チャネルアダプタ２６、キャッシュメモリ２８及びファイバチャネル３０−１〜３０−８が設けられている。
【００２６】
この小型及び中型に対応した図３のＲＡＩＤ装置１０は、図２のＲＡＩＤ装置１０からバックエンドルータ２０−１，２０−２及びフロントエンドルータ３２−１〜３２−４を除いた規模の小さな構成であり、それ以外の構成は基本的に図２の実施形態と同じである。
【００２７】
図４は本発明によるＲＡＩＤ装置の機能構成のブロック図である。図４において、ＲＡＩＤ装置１０の機能は、制御モジュール１８に設けているＣＰＵ２４のプログラム制御により実現され、図４の制御モジュール１８内に示すように、リソース処理部３４、キャッシュ処理部３６、ＲＡＩＤ制御部３８及びコピー処理部４０を構築している。
【００２８】
キャッシュ処理部３６にはキャッシュ制御部４２、キャッシュ管理テーブル４４及びライトバック処理部５４が設けられている。キャッシュ処理部３６の対象となる図２または図３に示したキャッシュメモリ２８は、図１１に示したようにページ単位に管理されており、ホスト側のアクセス単位である５１２バイトのユーザデータと８バイトのＢＣＣで構成される５２０バイトのブロックデータを１２８ブロック備えた６６，５６０バイトで１ページを構成している。
【００２９】
このようなキャッシュメモリ上のページに対し、キャッシュ管理テーブル４４はページごとにレコード管理を行っており、ページに対応したレコードは図示のように、論理ユニット番号（ＬＵＮ）４６、論理ブロックアドレス（ＬＢＡ）４８、ダーティデータビットマップ５０及び現在データビットマップ５２で構成されている。
【００３０】
ダーティデータビットマップ５０は１ページを構成する１２８ブロックのそれぞれを１ビットに対応した１２８ビットデータで構成されており、ホストからのライトコマンドにより更新が行われたブロックの対応ビットが１にセットされ、ダーティデータ以外のブロックはビット０となっている。
【００３１】
現在データビットマップ５２はダーティデータビットマップと同様、１ページを構成する１２８ブロックをビット対応で表した１２８ビットのビットマップであり、ダーティデータを含めてデータの有無を示しており、データありでビット１、データなしでビット０となっている。
【００３２】
ライトバック処理部５４は、キャッシュ制御部４２から記憶デバイス２２に対するライトバック指示を受けた際に、対象となったページ内のダーティデータについて不連続領域を判定した場合は、不連続領域を記憶デバイスは２２から読み出してマージすることにより連続領域を生成して、記憶デバイス２２にライトバックする。
【００３３】
このライトバック処理にあっては、ページ内におけるダーティデータの分布状態により、３回以上のコマンド発行によるライトバック処理となる場合に、不連続領域を記憶デバイスから読み出してマージすることにより連続領域を生成してライトバックする。
【００３４】
具体的には、ページ内のダーティデータを２回のライトコマンドの発行で記憶デバイス２２にライトバックできる場合には、そのままライトバック処理を終了し、ライトコマンドを３回以上発行する必要のある場合に限り、ページ内のダーティデータの不連続領域を記憶デバイス２２から読み出してマージすることにより、ページ内で連続した１つのダーティデータの連続領域とし、記憶デバイス２２から不連続領域のデータを読み出すための１回のリードコマンドの発行と、リードコマンドで読み出した不連続領域にデータをマージすることで連続領域としたダーティデータの１回のライトコマンド発行によるライトバックの合計２回のコマンド発行でライトバック処理を終了させるように処理する。
【００３５】
図５は本発明のライトバック処理におけるダーティデータ、現在データ及びライトバックデータのビットマップの説明図である。図５（Ａ）はダーティデータビットマップ５０であり、この例では１ページの１２８ブロックに対応した１２８ビットデータのビット列において、ビット１がダーティデータを表している。
【００３６】
この例でダーティデータの分布は、ページ先頭側の２ブロックの連続領域５８−１、その後ろに２ブロック空いた１ブロックとなる連続領域５８−２、更に末尾に複数ブロック連続した連続領域５８−３の３つの領域に分かれており、その間にビット０となる不連続領域を持っている。
【００３７】
この図８（Ａ）のダーティデータビットマップ５０のダーティデータは、連続領域５８−１，５８−２，５８−３ごとにライトコマンドを発行して記憶デバイス２８にライトバックする必要があるため、コマンド発行が３回となる。このようにコマンド発行が３回以上となった場合には、本発明によるライトバック処理が適用される。
【００３８】
本発明のライトバック処理にあっては、図５（Ａ）のダーティデータビットマップ５０について、ダーティデータの連続領域と記憶デバイス２８からの読出しによりマージを必要とする不連続領域６０を判定する。この場合、ページ先頭側の連続領域５８−１とページ末尾側の連続領域５８−３に挟まれた連続領域５８−２を含む領域を不連続領域６０として判定する。
【００３９】
次に図５（Ｂ）の現在データビットマップ５２を参照して、ダーティデータビットマップ５０から判定した不連続領域６０について現在データの有無を判定する。図５（Ｂ）の現在データビットマップ５２にあっては、ダーティデータを含んで各ブロックのデータの有無を示しており、連続領域５８−１，５８−２，５８−３はダーティデータであり、これに加えて、連続領域５８−３の先頭側から前方に３ブロックの現在データがビット１として存在しており、この３ブロックの現在データ領域６２を図５（Ａ）で判定した不連続領域６０から除去した不連続領域６４をリード対象として特定する。
【００４０】
続いて図５（Ｂ）で特定された不連続領域６４について、記憶デバイス２８からデータを読み出し、図５（Ｃ）に示すようにダーティデータの連続領域５８−２を除くブロックのリードデータを不連続領域６４にマージする。
【００４１】
そして、図５（Ｃ）のライトバックビットマップ５６に示すように、１ページ分の全ブロックをダーティデータとして、１回のライトコマンドの発行で記憶デバイスに対するライトバック処理を行う。
【００４２】
この結果、図５の場合には、図５（Ｂ）で生成した不連続領域６４を記憶デバイスから読み出すためのリードコマンドの発行と、図５（Ｃ）の連続ブロックとなった１ページ分のダーティデータをライトバックするための１回のライトコマンド発行の２回のコマンド発行で、不連続領域を含むダーティデータのライトバックを完了することができる。
【００４３】
図６は本発明のライトバック処理におけるダーティデータの不連続領域が現在データでリカバリされて通常のライトバック処理となる場合の説明図である。図６（Ａ）は図５（Ａ）のダーティデータビットマップ５０と同じであるが、図６（Ｂ）の現在データビットマップ５２にあっては、ダーティデータビットマップ５０における連続領域５８−２と５８−３の間の全ブロックにつき、現在データ連続領域６６でリカバリできている。
【００４４】
その結果、図６（Ｃ）に示すように、ライトバックビットマップ５６にあってはダーティデータの連続領域は連続領域５８−１と５８−４の２つになっている。この場合には、連続領域５８−１を記憶デバイス２８にライトバックするライトコマンドの発行と、連続領域５８−４を記憶デバイス２８にライトバックするためには、ライトコマンドの発行の２回のコマンド発行で済むことから、本発明による記憶デバイスからの読出しによるマージは必要とせずに、そのまま従来と同様なライトバック処理とする。
【００４５】
図７は本発明のライトバック処理から除外されるダーティデータのビットマップ説明図である。図７（Ａ）のダーティデータビットマップ５０にあっては、ページの先頭の連続領域５８−１と末尾の連続領域５８−２の間が不連続領域６０となっており、この場合にも連続領域５８−１と連続領域５８−２のそれぞれをライトバックする２回のライトコマンドの発行で済むことから、本発明のライトバック処理は適用されない。
【００４６】
図７（Ｂ）のダーティデータビットマップ５０にあっては、ページ内の前半が不連続領域６０、後半が連続領域５８となった場合であり、この場合には連続領域５８について１回のライトコマンドの発行でライトバックできることから、本発明によるライトバック処理は適用されない。
【００４７】
図８はキャッシュメモリのライトバックの際に出現するダーティデータのページ内の分布パターンをまとめて示した説明図である。図８（Ａ）（Ｂ）（Ｃ）（Ｄ）は本発明によるライトバック処理が適用されるダーティデータの分布パターンであり、残り図８（Ｅ）（Ｆ）（Ｇ）（Ｈ）（Ｉ）は本発明のライトバック処理が除外されるダーティデータ分布パターンである。
【００４８】
図８（Ａ）は図５（Ａ）と同じ分布パターンであり、ページ先頭側に連続領域５８−１が存在し、ページ末尾に連続領域５８−３が存在し、その間に不連続領域６６−１，６６−２を介して連続領域５８−２が存在している。
【００４９】
この場合には、先頭側の連続領域５８−１の直後から末尾側の連続領域５８−３の先頭直前までの連続領域５８−２を含む領域を不連続領域６０として記憶デバイス２８からデータをリードして、連続領域５８−２を除いた連続領域６６−１，６６−２にマージし、１ページ全体を１回のライトコマンドでライトバックする。
【００５０】
図８（Ｂ）は、ページ先頭が不連続領域６６−１となって、その後ろに連続領域５８−１、不連続領域６６−２、連続領域５８−２、不連続領域６６−３及び連続領域５８−３が分布した場合である。
【００５１】
この場合には、不連続領域６０で示す連続領域５８−２を含む領域について記憶デバイス２８からリードして、不連続領域６６−２，６６−３にマージし、連続領域５８−１からページ末尾までの領域を１回のライトコマンドでライトバックする。
【００５２】
図８（Ｃ）はページ末尾が不連続領域６６−３となった場合であり、ページ手前側に連続領域５８−１，５８−２，５８−３と不連続領域６６−１，６６−２が交互に存在している。
【００５３】
この場合にも、連続領域５８−２を含む不連続領域６０につき、記憶デバイス２８からデータをリードして不連続領域６２−１，６２−２をマージし、連続領域５８−１から連続領域５８−３までの領域のデータを１回のライトコマンドでライトバックする。
【００５４】
図８（Ｄ）はページ先頭とページ末尾がそれぞれ不連続領域６６−１，６６−４となった場合であり、その間に連続領域５８−１，５８−２，５８−３と不連続領域６６−２，６６−３が交互に存在している。
【００５５】
この場合には、連続領域５８−２を含む不連続領域６０を記憶デバイス２２からリードして不連続領域６６−２，６６−３をマージし、連続領域５８−１から連続領域５８−３までのブロックのデータを１回のライトコマンドでライトバックする。
【００５６】
この図８（Ａ）〜（Ｄ）の本発明のライトバック処理が適用されるダーティデータの分布パターンをまとめると、ページ内のダーティデータの分布として、ページ先端に最も近い第１連続領域５８−１とページ末尾に最も近い第２連続領域５８−３の間に、不連続領域６６−２，６６−３を介して少なくとも１つの第３連続領域５８−２が存在する場合に、第１連続領域５８−１と第２連続領域の間の第３連続領域５８−２を含む不連続領域６０を判定して記憶デバイス２８から読み出し、不連続領域６０に存在する第３連続領域５８−２以外の領域６６−２，６６−３を、読み出したデータのマージにより連続領域を作成してライトバックする、ということができる。
【００５７】
図８（Ｅ）はページ全領域がダーティデータの場合であり、１回のライトコマンドで済むことから、本発明のライトバック処理からは除外される。図８（Ｆ）は先頭側が連続領域５８−１、末尾側が不連続領域６６−１となった場合であり、１回のライトコマンドで連続領域５８−１のライトバックが可能であることから、本発明のライトバック処理からは除外される。
【００５８】
図８（Ｇ）は図７（Ｂ）と同じパターンであり、１回の連続領域５８−１のライトバックで済むことから、本発明のライトバック処理からは除外される。図８（Ｈ）は連続領域５８−１の前後に不連続領域６６−１，６６−２が存在した場合であり、この場合にも連続領域５８−１を１回のライトコマンドでライトバックできることから、本発明のライトバック処理からは除外される。
【００５９】
図８（Ｉ）は連続領域５８−１，５８−２の間に不連続領域６６−１が存在した場合であり、図７（Ａ）と同じ分布パターンであり、連続領域５８−１，５８−２のそれぞれのライトバックで２回のライトコマンドの発行で済むことから、本発明のライトバック処理からは除外される。
【００６０】
なお図８（Ａ）〜（Ｄ）は、先頭側の連続領域５８−１と末尾側の連続領域５８−３の間に不連続領域６６−１，６６−２を介して連続領域５８−２が存在した場合を例にとるものであったが、ヘッド側の連続領域５８−１と末尾側の連続領域５８−３の間に不連続領域を間に介して交互に存在する連続領域の数は、複数であっても全く同様に本発明のライトバック処理が適用されることになる。
【００６１】
図９は本発明によるライトバック処理のフローチャートである。図９において、ライトバック処理は、ステップＳ１でライトバックの対象となったページのダーティデータビットマップからダーティデータの連続領域と不連続領域を判定する。続いてステップＳ２でダーティデータは全て連続データか否かチェックし、もし連続データであればステップＳ１１に進み、そのままディスクライト処理を実行する。
【００６２】
ステップＳ２でダーティデータがページ内で不連続であった場合には、ステップＳ３に進み、ライトバック処理のコマンド発行回数は３回以上か否かチェックする。３回未満即ち１回または２回であった場合には、ステップＳ１１に進み、そのままディスクライト処理を実行する。
【００６３】
コマンド発行回数が３回以上の場合にはステップＳ４に進み、対象データの現在データビットマップを判定し、ステップＳ５で不連続領域が現在データにより全て連続領域として存在することになるか否かチェックする。もし不連続領域が全て現在データの連続領域としてリカバリされた場合には、ステップＳ１１に進み、そのままディスクライト処理を実行する。
【００６４】
不連続領域が現在データにより全て連続領域とならない場合には、ステップＳ６に進み、不連続領域の一端または両端に続く現在データは存在するか否かチェックする。もし存在すれば、ステップＳ７で現在データの存在領域を除いた不連続領域を生成する。存在しない場合はステップＳ９へ進む。
【００６５】
この新たに生成した不連続領域について、ステップＳ８でライトバック処理のコマンド回数が３回以上か否かチェックする。もし３回未満即ち１回または２回であれば、ステップＳ１１でそのままディスクライト処理を実行する。
【００６６】
コマンド回数が３回以上の場合には、ステップＳ９で不連続領域をディスク装置からリードし、ステップＳ１０でリードデータをキャッシュデータにマージする。もちろんダーティデータについては、マージは行わない。そしてステップＳ１１で連続データとなったダーティデータについてディスクライト処理を実行する。
【００６７】
図１０は図９のステップＳ１におけるダーティビットマップの判定処理のフローチャートであり、判定結果として記憶デバイスからデータを読み出してマージする不連続領域が存在するか、そのままライトバックできる不連続領域なしとするかの判定結果を得る。
【００６８】
図１０において、まずステップＳ１でダーティデータビットマップを先頭から１ビットずつビットサーチを開始する。続いてステップＳ２でエンドビットか否かチェックしており、エンドビットに達するまでは、ステップＳ３でビット変化がビット１からビット０となったか否かチェックしている。
【００６９】
このビット１からビット０への変化は、ダーティデータの連続領域から不連続領域への境界を検出している。ステップＳ３でビット１からビット０へのビット変化が検出されると、ステップＳ４に進み、不連続領域開始位置を登録し、ステップＳ５へ進む。
【００７０】
なお、ステップＳ２でステップＳ３のビット変化を検出することなくエンドビットに達した場合には、ステップＳ１３に進み、不連続領域なしと判定する。
【００７１】
ステップＳ５のビットサーチに続いて、ステップＳ６でエンドビットへの到達をチェックした後、ステップＳ７でビット変化がビット０からビット１となったか否かチェックしている。このビットが０から１に変化する状態は、ダーティデータの不連続領域から連続領域への境界を検出している。
【００７２】
ステップＳ７でビットがビット０からビット１に変化した場合には、ステップＳ８に進み、不連続領域終了位置を登録または更新する。即ち、最初の不連続領域位置の検出については登録し、２回目以降については前に登録した不連続領域終了位置を新たに検出した終了位置に更新する。
【００７３】
続いて、ステップＳ９でカウンタＡを１つカウントアップする。カウンタＡの初期値はＡ＝０である。このカウンタＡは連続領域の間に存在する不連続領域の数をカウントしている。続いて、ステップＳ１０で再度ビットサーチを開始し、ステップＳ１１でエンドビットか否かチェックし、ステップＳ１２でビット０からビット１へのビット変化、即ち２回目以降の不連続領域から連続領域への境界位置の検出を行っている。
【００７４】
ステップＳ１２で再度、ビット０からビット１への変化を検出すると、ステップＳ８に戻り、不連続領域終了位置を前回の登録位置から新たに検出した登録位置に更新した後、ステップＳ９でカウンタＡを１つカウントアップし、再びステップＳ１０でビットサーチに入る。
【００７５】
ステップＳ１０〜Ｓ１２におけるビットサーチの間に、ステップＳ１１でエンドビットへの到達が判別されると、ステップＳ１４に進み、不連続領域を計数しているカウンタＡの値が２以上か否かチェックし、２以上であればステップＳ１５に進み、ステップＳ４で検出した不連続領域開始位置からステップＳ８で更新している不連続領域終了位置までの分布を持つ不連続領域を判定して、図９のメインルーチンにリターンする。
【００７６】
ステップＳ１４でカウンタＡが２未満であった場合には、ステップＳ１６で不連続領域はないものと判断して、ステップＳ９にリターンする。
【００７７】
図９にリターンした場合、不連続領域なしについてはステップＳ２の全データが連続データであるとの判断、あるいはステップＳ３におけるライトバック処理のコマンド発行回数が３回以上との判断で３回未満と判定され、本発明によるライトバック処理をスキップして、ステップＳ１１でそのまま従来と同じディスクライト処理を行うことになる。
【００７８】
ここで図１０のビットマップ判定処理を例えば図８（Ａ）のダーティデータ分布パターンについて具体的に説明すると、次のようになる。
【００７９】
まずステップＳ１〜Ｓ３の処理により、ページ内の先頭側の連続領域５８−１から次の不連続領域６６−１の境界におけるビット１からビット０への変化をステップＳ３で検出し、ステップＳ４で不連続領域６０の開始位置を登録する。
【００８０】
続いてステップＳ５で不連続領域６６−１のビットサーチを行い、ステップＳ６を介して、ステップＳ７で不連続領域６６−１の末尾から連続領域５８−２の先頭へのビット０からビット１への変化を検出し、ステップＳ８で不連続領域６６−１の最後のビットを不連続領域終了位置として登録する。
【００８１】
続いて、ステップＳ９でカウンタＡを１つカウントアップしてＡ＝１とすることで不連続領域６６−１の数を計数した後、ステップＳ１０で連続領域５８−２のビットサーチを開始する。
【００８２】
このビットサーチにあっては、ステップＳ１２でビット０からビット１への変化はないことから、そのまま不連続領域６６−２のビットサーチに入り、不連続領域６６−２の最終ビットと次の連続領域５８−１の先頭ビットのビットサーチでステップＳ１２のビット０からビット１への変化が検出され、ステップＳ８で不連続領域６６−２の最終ビットを不連続領域終了位置として、前回の登録位置を更新し、ステップＳ９でカウンタＡを１つカウントアップしてＡ＝２とし、不連続領域の数を計数する。
【００８３】
続いて連続領域５８−３のビットサーチをステップＳ１０で繰り返していると、１２８ビット目のビットサーチでステップＳ１１のエンドビット判別が行われ、ステップＳ１４に進み、カウンタＡを判定すると、Ａ＝２であることから、ステップＳ１５に進み、ステップＳ４の開始位置とステップＳ８の終了位置を持つ不連続領域６０を判定することができる。もちろん、本発明が対象とするダーティデータの分布パターンの判定は図１０のビットマップ判定処理によらず、適宜のパターン判定の手法を適用することができる。
【００８４】
また本発明はＲＡＩＤ装置のＣＰＵ２４で実行されるプログラムを提供するものであり、図９のフローチャート及び図１０に示したフローチャートに従った手順でプログラムを実現することができる。
【００８５】
なお本発明は、その目的と利点を損なうことのない適宜の変形を含み、更に上記の実施形態に示した数値による限定は受けない。
【００８６】
ここで本発明の特徴をまとめて列挙すると次の付記のようになる。
（付記）
（付記１）
キャッシュメモリ上のデータを、上位装置のアクセス単位となるブロックデータを複数含むページデータ単位に管理して、前記上位装置の記憶デバイスに対する入出力要求を処理するキャッシュ制御部と、
上位装置により更新された前記記憶デバイスの記憶データより新しい前記キャッシュメモリ上のダーティデータを前記記憶デバイスに書き戻す際に、前記ダーティデータのページ内での不連続領域を判定した場合は、不連続領域を前記記憶デバイスから読み出してマージすることにより連続領域を生成してライトバックするライトバック処理部と、
を備えたことを特徴とする記憶装置。（１）
【００８７】
（付記２）
付記１記載の記憶装置に於いて、前記ライトバック処理部は、３回以上のコマンド発行によるライトバック処理となる場合に、不連続領域を前記記憶デバイスから読み出してマージすることにより連続領域を生成してライトバックすることを特徴とする記憶装置。（２）
【００８８】
（付記３）
付記１記載の記憶装置に於いて、前記ライトバック処理部は、ページ内のダーティデータの分布として、ページ先端に最も近い第１連続領域とページ末尾に最も近い第２連続領域の間に不連続領域を介して少なくとも1つの第３連続領域が存在する場合に、前記第１連続領域と第２連続領域の間の第３連続領域を含む不連続領域を判定して前記記憶デバイスから読み出し、前記不連続領域に存在する第３連続領域以外の領域を読み出したデータのマージにより連続領域を生成してライトバックすることを特徴とする記憶装置。（３）
【００８９】
（付記４）
付記３記載の記憶装置に於いて、前記キャッシュ制御部は、
前記ページ内におけるダーティデータの有無を各ブロック対応のビットにより管理するダーティビットマップと、
前記ページ内におけるデータの有無を各ブロック対応のビットにより管理する現在データビットマップと、
を備え、
前記ライトバック処理部は、前記ダーティデータビットマップを参照してダーティデータのページ内での前記不連続領域を判定し、前記不連続領域の一端又は両端について前記現在データビットマップから連続現在データを判別した場合は、残りの不連続領域につき前記記憶デバイスから読み出してマージすることを特徴とする記憶装置。（４）
【００９０】
（付記５）
付記１記載の記憶装置に於いて、前記記憶デバイスのストリップデータのサイズを前記キャッシュメモリのページサイズと同一としたことを特徴とする記憶装置。（５）
【００９１】
（付記６）
記憶装置の制御方法に於いて、
キャッシュメモリ上のデータを、上位装置のアクセス単位となるブロックデータを複数含むページデータ単位に管理して、前記上位装置の記憶デバイスに対する入出力要求を処理するキャッシュ制御ステップと、
上位装置により更新された前記記憶デバイスの記憶データより新しい前記キャッシュメモリ上のダーティデータを前記記憶デバイスに書き戻す際に、前記ダーティデータのページ内での不連続領域を判定した場合は、不連続領域を前記記憶デバイスから読み出してマージすることによりページ連続データを生成してページ単位にライトバックするライトバック処理ステップと、
を備えたことを特徴とする記憶装置の制御方法。（６）
【００９２】
（付記７）
付記６記載の記憶装置の制御方法に於いて、前記ライトバック処理ステップは、３回以上のコマンド発行によるライトバック処理となる場合に、不連続領域を前記記憶デバイスから読み出してマージすることによりページ連続データを生成してページ単位にライトバックすることを特徴とする記憶装置の制御方法。（７）
【００９３】
（付記８）
付記６記載の記憶装置の制御方法に於いて、前記ライトバック処理ステップは、ページ内のダーティデータの分布として、ページ先端に最も近い第１連続領域とページ末尾に最も近い第２連続領域の間に不連続領域を介して少なくとも1つの第３連続領域が存在する場合に、前記大地連続領域と第２連続領域の間の第３連続領域を含む不連続領域を判定して前記記憶デバイスから読み出し、前記不連続領域に存在する第３連続領域以外の領域を読み出したデータのマージにより連続領域を生成してライトバックすることを特徴とする記憶装置の制御方法。（８）
【００９４】
（付記９）
付記８記載の記憶装置の制御方法に於いて、前記キャッシュ制御ステップは、
前記ページ内におけるダーティデータの有無を各ブロック対応のビットにより管理するダーティビットマップと、
前記ページ内におけるデータの有無を各ブロック対応のビットにより管理する現在データビットマップと、
を生成し、
前記ライトバック処理ステップは、前記ダーティデータビットマップを参照してダーティデータのページ内での前記不連続領域を判定し、前記不連続領域の一端又は両端について前記現在データビットマップから連続現在データを判別した場合は、残りの不連続領域につき前記記憶デバイスから読み出してマージすることを特徴とする記憶装置の制御方法。（９）
【００９５】
（付記１０）
付記６記載の記憶装置の制御方法に於いて、前記記憶デバイスのストリップデータのサイズを前記キャッシュメモリのページサイズと同一としたことを特徴とする記憶装置の制御方法。
【００９６】
（付記１１）
記憶装置のコンピュータに、
キャッシュメモリ上のデータを、上位装置のアクセス単位となるブロックデータを複数含むページデータ単位に管理して、前記上位装置の記憶デバイスに対する入出力要求を処理するキャッシュ制御ステップと、
上位装置により更新された前記記憶デバイスの記憶データより新しい前記キャッシュメモリ上のダーティデータを前記記憶デバイスに書き戻す際に、前記ダーティデータのページ内での不連続領域を判定した場合は、不連続領域を前記記憶デバイスから読み出してマージすることによりページ連続データを生成してページ単位にライトバックするライトバック処理ステップと、
を実行させることを特徴とするプログラム。（１０）
【００９７】
（付記１２）
付記１１記載のプログラムに於いて、前記ライトバック処理ステップは、３回以上のコマンド発行によるライトバック処理となる場合に、不連続領域を前記記憶デバイスから読み出してマージすることによりページ連続データを生成してページ単位にライトバックすることを特徴とするプログラム。
【００９８】
（付記１３）
付記１１記載のプログラムに於いて、前記ライトバック処理ステップは、ページ内のダーティデータの分布として、ページ先端に最も近い第１連続領域とページ末尾に最も近い第２連続領域の間に不連続領域を介して少なくとも1つの第３連続領域が存在する場合に、前記大地連続領域と第２連続領域の間の第３連続領域を含む不連続領域を判定して前記記憶デバイスから読み出し、前記不連続領域に存在する第３連続領域以外の領域を読み出したデータのマージにより連続領域を生成してライトバックすることを特徴とするプログラム。
【００９９】
（付記１４）
付記１３記載のプログラムに於いて、前記キャッシュ制御ステップは、
前記ページ内におけるダーティデータの有無を各ブロック対応のビットにより管理するダーティビットマップと、
前記ページ内におけるデータの有無を各ブロック対応のビットにより管理する現在データビットマップと、
を生成し、
前記ライトバック処理ステップは、前記ダーティデータビットマップを参照してダーティデータのページ内での前記不連続領域を判定し、前記不連続領域の一端又は両端について前記現在データビットマップから連続現在データを判別した場合は、残りの不連続領域につき前記記憶デバイスから読み出してマージすることを特徴とするプログラム。
【０１００】
（付記１５）
付記１１記載のプログラムに於いて、前記記憶デバイスのストリップデータのサイズを前記キャッシュメモリのページサイズと同一としたことを特徴とするプログラム。
【図面の簡単な説明】
【０１０１】
【図１】本発明の原理説明図
【図２】本発明が適用されるＲＡＩＤ装置のハードウェア構成のブロック図
【図３】本発明が適用されるＲＡＩＤ装置の他のハードウェア構成のブロック図
【図４】本発明によるＲＡＩＤ装置の機能構成のブロック図
【図５】本発明のライトバック処理におけるダーティデータ、現在データ及びライトバックデータのビットマップの説明図
【図６】本発明のライトバック処理におけるダーティデータの不連続領域が現在データでリカバリされた場合のビットマップ説明図
【図７】本発明のライトバック処理から除外されるダーティデータのビットマップ説明図
【図８】ライトバックの際に出現するダーティデータの分布パターンをまとめて示した説明図
【図９】本発明によるライトバック処理のフローチャート
【図１０】図９のステップＳ１におけるダーティビットマップの判定処理のフローチャート
【図１１】従来装置におけるキャッシュページのレコード構造の説明図
【図１２】従来のキャッシュ管理テーブルに設けたダーティビットマップと現在データビットマップの説明図
【符号の説明】
【０１０２】
１０：ＲＡＩＤ装置
１２：ホスト（メインフレーム系）
１４：ホスト（ＵＮＩＸ（Ｒ）／ＡＩサーバ系）
１５，２４：ＣＰＵ
１６，２６：チャネルアダプタ
１８，１８−１〜１８−４：制御モジュール
２０−１，２０−２：バックエンドルータ
２２：記憶デバイス
２２−１〜２２−４：ディスク装置
２８：キャッシュメモリ
３０−１〜３０−８：ファイバチャネル
３２−１〜３２−４：フロントエンドルータ
３４：リソース処理部
３６：キャッシュ処理部
３８：ＲＡＩＤ制御部
４０：コピー処理部
４２：キャッシュ制御部
４４：キャッシュ管理テーブル
４６：論理ユニット番号（ＬＵＮ）
４８：論理ブロックアドレス（ＬＢＡ）
５０：ダーティデータビットマップ
５２：現在データビットマップ
５４：ライトバック処理部
５６：ライトバックビットマップ
【図１】
2006163474.tif 000003
【図２】
2006163474.tif 000004
【図３】
2006163474.tif 000005
【図４】
2006163474.tif 000006
【図５】
2006163474.tif 000007
【図６】
2006163474.tif 000008
【図７】
2006163474.tif 000009
【図８】
2006163474.tif 000010
【図９】
2006163474.tif 000011
【図１０】
2006163474.tif 000012
【図１１】
2006163474.tif 000013
【図１２】
2006163474.tif 000014