(57)【要約】【課題】ライトアクセスの性能を低下させることなく、キャッシュメモリへのデータ転送の途中での電源遮断に対してセクタデータを保証可能とする。【解決手段】実施形態によれば、データ記憶装置のコントローラは、キャッシュメモリと、キャッシュ管理手段と、データ転送制御手段とを具備する。キャッシュ管理手段は、ライトデータが格納されるべきキャッシュメモリ内のマスター用キャッシュブロックにディスク装置に未保存の旧ライトデータが存在する場合、マスタ用キャッシュブロックとは別のキャッシュブロックをワーク用として取得し、取得されたワーク用キャッシュブロックへのデータ転送制御手段によるライトデータの転送が完了した場合、マスター用キャッシュブロックをワーク用に、取得されたワーク用キャッシュブロックをマスター用にそれぞれ切り替え、ワーク用に切り替えられたキャッシュブロックを開放する。【選択図】      図１
2012014285.tif 000002
【特許請求の範囲】
【請求項１】
論理ディスクの記憶領域に割り当て可能な１つ以上のディスク装置と、
ホストコンピュータからの前記論理ディスクへのアクセスを制御するコントローラとを具備し、
前記コントローラは、
前記ホストコンピュータと前記コントローラとの間の転送データ及び前記コントローラと前記ディスク装置との間の転送データをキャッシュブロック単位に一時格納するキャッシュメモリと、
前記キャッシュメモリを管理するキャッシュメモリ管理手段であって、前記ホストコンピュータから転送されるライトデータが格納されるべきキャッシュブロックであるマスター用キャッシュブロックのライトアクセス範囲内に、前記ディスク装置に未保存の旧ライトデータが存在する場合に、前記マスタ用キャッシュブロックとは別のキャッシュブロックをワーク用キャッシュブロックとして前記キャッシュメモリから取得し、前記取得されたワーク用キャッシュブロックへの前記ライトデータの転送が完了した場合に、前記マスター用キャッシュブロックをワーク用に、前記取得されたワーク用キャッシュブロックをマスター用にそれぞれ切り替え、前記ワーク用に切り替えられたキャッシュブロックを開放するキャッシュメモリ管理手段と、
前記ホストコンピュータと前記キャッシュメモリとの間のデータ転送及び前記キャッシュメモリと前記ディスク装置との間のデータ転送を制御するデータ転送制御手段であって、前記ライトデータを前記取得されたワーク用キャッシュブロックに転送するデータ転送制御手段とを具備する
ことを特徴とするデータ記憶装置。
【請求項２】
前記コントローラは、前記キャッシュメモリ内のマスター用キャッシュブロック毎に、当該マスター用キャッシュブロックのメモリアドレス、当該マスター用キャッシュブロックに対応するワーク用キャッシュブロックの取得状態及び当該対応するワーク用キャッシュブロックのメモリアドレスを保持するキャッシュブロック管理テーブルを更に具備し、
前記キャッシュメモリ管理手段は、前記キャッシュブロック管理テーブルに保持されている、前記マスター用キャッシュブロックのアドレス及び当該マスター用キャッシュブロックに対応する前記取得されたワーク用キャッシュブロックのメモリアドレスを入れ替えることにより、前記マスター用キャッシュブロックを前記ワーク用に、前記取得されたワーク用キャッシュブロックをマスター用にそれぞれ切り替える
ことを特徴とする請求項１記載のデータ記憶装置。
【請求項３】
前記キャッシュブロック管理テーブルは、前記キャッシュメモリ内のマスター用キャッシュブロック毎に、当該マスター用キャッシュブロック及び前記ワーク用キャッシュブロックにおけるライトデータの格納状態を示すフラグ情報を保持しており、
前記メモリ管理手段は、前記マスタ用キャッシュブロックの前記ライトアクセス範囲が、当該マスタ用キャッシュブロックに既に格納されている前記ディスク装置に未保存の旧ライトデータの領域の範囲の一部である特定状態を前記キャッシュブロック管理テーブルに基づいて検出し、前記特定状態において前記メモリアドレスを入れ替える代わりに、当該マスタ用キャッシュブロックに対応する前記取得されたワーク用キャッシュブロックに格納されたライトデータを、当該マスター用キャッシュブロックに前記データ転送制御手段によって移動させ、この移動の後、前記取得されたワーク用キャッシュブロックにライトデータが格納されていないことを示すように、前記キャッシュブロック管理テーブルに保持されている対応する前記フラグ情報を書き換えると共に前記取得されたワーク用キャッシュブロックを開放する
ことを特徴とする請求項２記載のデータ記憶装置。
【請求項４】
キャッシュ管理手段は、前記データ記憶装置の電源の復帰時に、前記キャッシュブロック管理テーブルを参照して、マスター用キャッシュブロックに対応し、且つライトデータが格納されている状態にあるワーク用キャッシュブロックを検出し、検出されたワーク用キャッシュブロックに格納されているライトデータを、当該検出されたワーク用キャッシュブロックに対応する前記マスター用キャッシュブロックに前記データ転送制御手段によって移動させ、この移動の後、前記検出されたワーク用キャッシュブロックにライトデータが格納されていないことを示すように、前記キャッシュブロック管理テーブルに保持されている対応する前記フラグ情報を書き換えると共に前記検出されたワーク用キャッシュブロックを開放する
ことを特徴とする請求項３記載のデータ記憶装置。
【請求項５】
前記キャッシュ管理手段は、前記データ記憶装置の電源の復帰時に、前記キャッシュブロック管理テーブルを参照して、マスター用キャッシュブロックに対応し、且つライトデータが格納されていない状態にあるワーク用キャッシュブロックを検出し、検出されたワーク用キャッシュブロックを開放する
ことを特徴とする請求項４記載のデータ記憶装置。
【請求項６】
論理ディスクの記憶領域に割り当て可能な１つ以上のディスク装置と、ホストコンピュータからの前記論理ディスクへのアクセスを制御するコントローラであって、前記ホストコンピュータと前記コントローラとの間の転送データ及び前記コントローラと前記ディスク装置との間の転送データをキャッシュブロック単位に一時格納するキャッシュメモリ、キャッシュメモリ管理手段及びデータ転送制御手段を備えたコントローラとを具備するデータ記憶装置におけるキャッシュメモリ制御方法であって、
前記ホストコンピュータから転送されるライトデータが格納されるべきキャッシュブロックであるマスター用キャッシュブロックのライトアクセス範囲内に、前記ディスク装置に未保存の旧ライトデータが存在する場合に、前記キャッシュ管理手段が、前記マスタ用キャッシュブロックとは別のキャッシュブロックをワーク用キャッシュブロックとして前記キャッシュメモリから取得するステップと、
前記取得されたワーク用キャッシュブロックへ、前記データ転送制御手段が前記ライトデータを転送するステップと、
前記取得されたワーク用キャッシュブロックへの前記ライトデータの転送が完了した場合に、前記キャッシュメモリ管理手段が、前記マスター用キャッシュブロックをワーク用に、前記取得されたワーク用キャッシュブロックをマスター用にそれぞれ切り替え、前記ワーク用に切り替えられたキャッシュブロックを開放するステップと
を具備することを特徴とするキャッシュメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、データ記憶装置及び同装置におけるキャッシュ制御方法に関する。
【背景技術】
【０００２】
一般に、データ記憶装置の１つとして知られているディスクアレイ装置は、ディスクアレイと当該ディスクアレイへのアクセスを制御するコントローラとから構成される。ディスクアレイは、１つ以上のディスク装置の記憶領域を用いて構成される。ディスクアレイ装置において、ホストコンピュータから認識可能な論理ディスクは、ディスクアレイの記憶領域を用いて実現される。このような論理ディスクへのホストコンピュータからの例えばライトアクセスは、コントローラ上に実装されているバッファを介して実施される。通常このバッファにはキャッシュメモリが使用されるのが一般的である。キャッシュメモリは、キャッシュブロックを単位に管理される。
【０００３】
コントローラは、ホストコンピュータからのライトデータをキャッシュメモリ内のキャッシュブロックに一時的に格納した時点で、ホストコンピュータにライト完了を応答する。その後、コントローラは、キャッシュブロック上のライトデータを論理ディスクに書き込む（保存する）。この方式は、一般にライトバックキャッシュ（ＷＢＣ）と呼ばれている。このＷＢＣの適用により、高速なアクセスを実現することが可能となる。通常、キャッシュメモリは、ＷＢＣに対応するため、電源遮断が発生した場合でもライトデータを保持できるようにバッテリバックアップ機構を備えている。
【０００４】
ここで、ホストコンピュータからのライトアクセス時に、そのライトアクセス範囲に対応する論理アドレスのデータが既にキャッシュメモリ内のキャッシュブロック上に存在する場合を想定する。このような状態で、ホストコンピュータからのライトデータを、上記キャッシュブロックに転送する場合、コントローラのＤＭＡ機能によりデータ転送が行われる。このデータ転送（ＤＭＡ転送）の途中、例えば、ライトアクセス範囲に対応する上記キャッシュブロック内の複数のデータセクタのうちの或る１セクタのデータの転送の途中で、ディスクアレイ装置の電源遮断が発生したものとする。
【０００５】
このような場合、ライトアクセス範囲に対応する、以前に上記キャッシュブロックに格納されたデータ（旧ライトデータ）のうち、電源遮断が発生した時点に対応する位置以降のデータが、新たなライトデータ（新ライトデータ）に書き換えられずに、当該キャッシュブロックに残ってしまう。つまり、旧ライトデータの一部のみが、新ライトデータの該当部分で上書きされた状態が発生する。この場合、電源遮断が発生した際に新ライトデータの書き込みが行われていたキャッシュブロック内のセクタのデータ（セクタデータ）は、一部が書き換えられたデータ（新データ）、残りが書き換え前のデータ（旧データ）となり、新旧いずれでもないセクタデータとなる。
【０００６】
コントローラのＤＭＡ機能により、バスの転送幅単位でのデータ書き込みは保証される。しかし、１セクタに満たないデータのＤＭＡ転送途中で電源遮断が発生した場合、該当するセクタデータは保証されない。
【０００７】
そこで、ＤＭＡ転送途中で電源遮断が発生した場合においてライトデータを保証するために、コントローラ内にキャッシュメモリとは別のバッファを設け、当該バッファにライトデータを一度転送してから、当該ライトデータをキャッシュメモリ内の対応するキャッシュブロックに格納する方式が知られている。このように、ホストコンピュータからのライトデータをバッファに格納した場合、そのデータをキャッシュブロックに格納するまでは電源遮断に対するライトデータの保証は可能である。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平５−１５１０９４号公報
【特許文献２】特開２００５−２５３７１号公報
【特許文献３】特開２００１−１６６９９３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、ライトデータをキャッシュブロックに格納する前に、当該ライトデータをバッファに一時格納する方式では、ホストコンピュータからの次のライトデータの転送が待たされてしまい、ライトアクセスの性能が低下する。また、バッファに一時格納されたライトデータをキャッシュブロックに格納する際にも、電源遮断に対してライトデータ（セクタデータ）を保証するための仕組みが必要となる。
【００１０】
そこで、ディスクアレイ装置のようなデータ記憶装置において、ホストコンピュータからのライトデータが格納されるべきキャッシュブロックに、ディスク装置に未保存のデータが存在する場合でも、ライトアクセスの性能を低下させることなく、キャッシュメモリへのデータ転送の途中での電源遮断に対してセクタデータを保証可能とすることが望まれている。
【課題を解決するための手段】
【００１１】
実施形態によれば、データ記憶装置は、論理ディスクの記憶領域に割り当て可能な１つ以上のディスク装置と、ホストコンピュータからの前記論理ディスクへのアクセスを制御するコントローラとを具備する。前記コントローラは、キャッシュメモリと、前記キャッシュメモリを管理するキャッシュ管理手段と、前記ホストコンピュータと前記キャッシュメモリとの間のデータ転送及び前記キャッシュメモリと前記ディスク装置との間のデータ転送を制御するデータ転送制御手段とを具備する。前記キャッシュメモリは、前記ホストコンピュータと前記コントローラとの間の転送データ及び前記コントローラと前記ディスク装置との間の転送データをキャッシュブロック単位に一時格納する。前記キャッシュ管理手段は、前記ホストコンピュータから転送されるライトデータが格納されるべきキャッシュブロックであるマスター用キャッシュブロックに、前記ディスク装置に未保存の旧ライトデータが存在する場合に、前記マスタ用キャッシュブロックとは別のキャッシュブロックをワーク用キャッシュブロックとして前記キャッシュメモリから取得し、前記取得されたワーク用キャッシュブロックへの前記ライトデータの転送が完了した場合に、前記マスター用キャッシュブロックをワーク用に、前記取得されたワーク用キャッシュブロックをマスター用にそれぞれ切り替え、前記ワーク用に切り替えられたキャッシュブロックを開放する。前記データ転送制御手段は、前記ライトデータを前記取得されたワーク用キャッシュブロックに転送する。
【図面の簡単な説明】
【００１２】
【図１】実施形態に係るディスクアレイ装置の構成を示すブロック図。
【図２】同実施形態で適用される、キャッシュメモリの構造例を示す図。
【図３】同実施形態で適用されるキャッシュブロックの構造例を示す図。
【図４】同実施形態で適用される、キャッシュブロック管理テーブルのデータ構造例を示す図。
【図５】キャッシュブロックに有効なリードキャッシュデータが格納されている場合における、当該キャッシュブロックと、当該キャッシュブロックを管理するためのキャッシュブロック管理テーブル内のエントリのマスタデータフィールド及びワークデータフィールドの例を示す図。
【図６】キャッシュブロックに有効なライトバックキャッシュデータが格納されている場合における、当該キャッシュブロックと、当該キャッシュブロックを管理するためのキャッシュブロック管理テーブル内のエントリのマスタデータフィールド及びワークデータフィールドの例を示す図。
【図７】キャッシュブロックに有効なリードキャッシュデータ及びライトバックキャッシュデータが格納されている場合における、当該キャッシュブロックと、当該キャッシュブロックを管理するためのキャッシュブロック管理テーブル内のエントリのマスタデータフィールド及びワークデータフィールドの例を示す図。
【図８】ライト転送中のデータ管理を説明するために、マスタ用及びワーク用の両キャッシュブロックの状態と、キャッシュブロック管理テーブル内のエントリのマスタデータフィールド及びワークデータフィールドの状態の例を示す図。
【図９】ライト転送後のデータ管理を説明するために、マスタ用及びワーク用の両キャッシュブロックの状態と、キャッシュブロック管理テーブル内のエントリのマスタデータフィールド及びワークデータフィールドの状態の例を示す図。
【図１０】ライトアクセス完了後のデータ管理を説明するために、マスタ用に切り替えられたキャッシュブロックの状態と、キャッシュブロック管理テーブル内のエントリのマスタデータフィールド及びワークデータフィールドの状態の例を示す図。
【図１１】ライトアクセス範囲が旧ライトデータの範囲の一部となるライトアクセス時のデータ管理を説明するために、マスタ用及びワーク用の両キャッシュブロックの状態と、キャッシュブロック管理テーブル内のエントリのマスタデータフィールド及びワークデータフィールドの状態の例を示す図。
【図１２】図１１に示す状態でホストコンピュータに応答が返された後に行われるライトデータ移動の期間におけるデータ管理を説明するために、マスタ用及びワーク用の両キャッシュブロックの状態と、キャッシュブロック管理テーブル内のエントリのマスタデータフィールド及びワークデータフィールドの状態の例を示す図。
【図１３】ライトデータ移動後のデータ管理を説明するために、マスタ用キャッシュブロックの状態と、キャッシュブロック管理テーブル内のエントリのマスタデータフィールド及びワークデータフィールドの状態の例を示す図。
【図１４】同実施形態で適用されるライトアクセスの処理手順を説明するためのフローチャートの第１の部分を示す図。
【図１５】同実施形態で適用されるライトアクセスの処理手順を説明するためのフローチャートの第２の部分を示す図。
【図１６】同実施形態で適用されるリードアクセスの処理手順を説明するためのフローチャートの第１の部分を示す図。
【図１７】同実施形態で適用されるリードアクセスの処理手順を説明するためのフローチャートの第２の部分を示す図。
【図１８】同実施形態で適用されるワーク用ライトデータ移動処理を説明するためのフローチャート。
【図１９】同実施形態で適用されるバックグラウンド処理を説明するためのフローチャート。
【図２０】同実施形態で適用される電源復帰時処理を説明するためのフローチャート。
【発明を実施するための形態】
【００１３】
以下、実施の形態につき図面を参照して説明する。  
図１は実施形態に係るディスクアレイ装置の構成を示すブロック図である。
【００１４】
図１に示されるディスクアレイ装置１０は、コントローラ１１と、１つ以上のディスクドライブ（ディスク装置）、例えば３つのディスクドライブ１２ａ〜１２ｃとから構成されるデータ記憶装置である。ディスクドライブ１２ａ〜１２ｃは、例えば磁気ディスクドライブ（ＨＤＤ）である。そこで以下の説明では、ディスクドライブ１２ａ〜１２ｃを、ＨＤＤ１２ａ〜１２ｃと称する。ＨＤＤ１２ａ〜１２ｃの記憶領域は、１つ以上のディスクアレイを構成するのに用いられ、ディスクアレイの記憶領域は、１つ以上の論理ディスクを構成するのに用いられる。
【００１５】
ディスクアレイ装置１０（より詳細には、ディスクアレイ装置１０内のコントローラ１１）は、データ通信路２０を介して、ディスクアレイ装置１０のホストとなるコンピュータ（ホストコンピュータ）またはその集合体と接続されている。ディスクアレイ装置１０が、データ通信路２０を介して、他のディスクアレイ装置と接続されていても構わない。
【００１６】
コントローラ１１は、ホストインタフェース部（ホストＩ／Ｆ）１１１、マイクロプロセッサ１１２、メモリ１１３、キャッシュメモリ１１４及びディスクインタフェース部（ディスクＩ／Ｆ）１１５を備えている。
【００１７】
ホストインタフェース部１１１及びディスクインタフェース部１１５は、それぞれ外部接続される装置との間の通信を制御する。ホストインタフェース部１１１はデータ通信路２０側の通信を司る。ディスクインタフェース部１１５はＨＤＤ１２ａ〜１２ｃ側の通信を司る。
【００１８】
マイクロプロセッサ１１２は、コントローラ１１における必要処理を実行するものであり、メモリ１１３の一部の記憶領域には、そのための各種プログラムが格納されている。メモリ１１３の他の一部の記憶領域は、マイクロプロセッサ１１２が利用するデータ等を格納するのに用いられる。メモリ１１３には、キャッシュメモリ１１４を管理するのに用いられるキャッシュブロック管理テーブル１１６も格納される。
【００１９】
本実施形態で適用されるキャッシュメモリ１１４の管理（キャッシュ管理）は、メモリ１１３（コンピュータ読み取り可能な記憶媒体）に格納されているプログラムをマイクロプロセッサ１１２が読み取って実行することによって実現されるものとする。つまりマイクロプロセッサ１１２は、機能モジュールとしてのキャッシュ管理部１１７を有する。マイクロプロセッサ１１２はまた、機能モジュールとしてのデータ転送制御部１１８を有する。データ転送制御部１１８は、キャッシュ管理部１１７の管理の下で、外部装置とキャッシュメモリ１１４との間のデータ転送及びキャッシュメモリ１１４とＨＤＤ１２ａ〜１２ｃとの間のデータ転送を制御する。なお、データ転送制御部１１８が、ハードウェアによって構成されていても構わない。
【００２０】
キャッシュメモリ１１４は、データ通信路２０を介して接続される外部装置からディスクアレイ装置１０内のＨＤＤ１２ｉ（ｉ＝ａ，ｂ，ｃ）（より詳細には、ＨＤＤ１２ｉの少なくとも一部の領域が割り当てられた論理ディスク）に対して発行される入出力要求（ＩＯ要求）に対するバッファの役目を提供する。つまりキャッシュメモリ１１４は、ＨＤＤ１２ｉ（論理ディスク）に対して読み出しまたは書き込みされるデータを格納する。キャッシュメモリ１１４は電源遮断が発生した場合でもライトデータを保持できるように例えばバッテリバックアップ機構を備えている。外部装置は、ホストコンピュータ、或いは他のディスクアレイ装置である。以下、説明の簡略化のために、外部装置がホストコンピュータであるものとする。
【００２１】
ホストコンピュータからの入出力要求に従ってＨＤＤ１２ｉにデータを書き込む書き込み処理は、コントローラ１１において次のように行われる。まず、ライトデータがキャッシュメモリ１１４にエントリされ、しかる後に入出力要求を発行したホストコンピュータ（要求ホストコンピュータ）に対して書き込み完了が返される。その後、キャッシュメモリ１１４に格納されたデータをＨＤＤ１２ｉに実際に書き込むための書き込み処理が行われる。キャッシュメモリ１１４にエントリされたライトデータはライトバックキャッシュ（ＷＢＣ）データと呼ばれる。
【００２２】
また、ホストコンピュータからの入出力要求に従ってＨＤＤ１２ｉからデータを読み出す読み出し処理は、次のように行われる。まず、目的のデータがキャッシュメモリ１１４にエントリされているか否かが判定される。目的のデータがキャッシュメモリ１１４にエントリされている場合、そのエントリされているデータが要求ホストコンピュータに返される。一方、目的のデータがキャッシュメモリ１１４にエントリされていない場合、当該目的のデータがＨＤＤ１２ｉからキャッシュメモリ１１４に読み出される。そして、読み出されたデータが、要求ホストコンピュータにデータ通信路２０を介して返される。キャッシュメモリ１１４に読み出されたデータ（リードデータ）はリードキャッシュ（ＲＤＣ）データと呼ばれる。
【００２３】
キャッシュメモリ１１４は、ある論理的な単位に分割されて管理される。この分割された単位で自由にＨＤＤ１２ｉ（論理ディスク）内の記憶位置に対応させて、その記憶位置のデータをキャッシュメモリ１１４に格納することができる。この分割された１つの単位をキャッシュブロックと呼ぶ。
【００２４】
図２は、キャッシュメモリ１１４の構造例を示す。図２に示されるキャッシュメモリ１１４は、例えば１６ＫＢ（キロバイト）単位のキャッシュブロックに分割されている。キャッシュメモリ１１４において、キャッシュブロックは、図２に示されているように、論理的に縦横の配列に配置される。キャッシュブロックは、キャッシュ管理部１１７により、例えばセットアソシアティブ方式によるメモリマッピングで管理される。図２の例では、論理ディスク２００上の論理アドレスがｋの位置が、キャッシュメモリ１１４内のカラム（column）ｎ、ロウ（row）ｍで示される位置のキャッシュブロックにマッピングされている状態が示されている。
【００２５】
キャッシュメモリ１１４上では、リードキャッシュ（ＲＤＣ）データとライトバックキャッシュ（ＷＢＣ）データの２種類のデータが、キャッシュ管理部１１７によって管理される。ホストコンピュータからのリード／ライトアクセスに応じてキャッシュメモリ１１４の各エントリがサーチされ、対象となるキャッシュブロックとホストコンピュータまたはＨＤＤ１２ｉとの間でデータ転送が行われる。
【００２６】
また本実施形態では、１つのキャッシュブロックは、１セクタ（５１２バイト）のメモリ領域が３２セクタ分の連続したメモリ領域として、キャッシュ管理部１１７によって管理される。ＲＤＣ／ＷＢＣの有効なデータの格納は、この１セクタ単位で管理される。本実施形態で適用されるキャッシュブロックの構造を図３に示す。
【００２７】
キャッシュ管理部１１７は、キャッシュカラム単位に割り当てられているキャッシュブロックと対象となるＨＤＤ１２ｉ（論理ディスク）の領域とをマッピングし、ホストコンピュータからライトされたデータまたはＨＤＤ１２ｉ（論理ディスク）からリードされたデータの格納状態を管理する。このキャッシュ管理部１１７によるデータの格納状態の管理には、メモリ１１３に格納されているキャッシュブロック管理テーブル１１６が用いられる。つまりキャッシュブロック管理テーブル１１６は、キャッシュブロックに割り当てられている論理ディスク内のデータのアドレス、及びそのキャッシュメモリ上の有効なデータの格納状態を管理するのに用いられる。
【００２８】
図４はキャッシュブロック管理テーブル１１６のデータ構造例を示す。キャッシュブロック管理テーブル１１６の各エントリは、キャッシュ管理テーブルエントリ番号フィールド（以下、エントリ番号フィールドと称する）４０１、論理アドレスフィールド４０２、マスタデータフィールド４０３及びワークデータフィールド４０４を備えている。キャッシュブロック管理テーブル１１６の各エントリに登録されるエントリ情報を、キャッシュブロック管理情報と称する。
【００２９】
エントリ番号フィールド４０１は、対応するキャッシュブロック管理テーブル１１６のエントリの番号を保持するのに用いられる。論理アドレスフィールド４０２は、対応するキャッシュブロック管理テーブル１１６のエントリで管理されるキャッシュブロックに割り当てられている論理アドレス（論理ディスクのアドレス）を登録するのに用いられる。
【００３０】
キャッシュブロック管理テーブル１１６のエントリで管理されるキャッシュブロックのタイプは２つある。１つは、マスタデータを格納するのに用いられるキャッシュブロック（マスタ用キャッシュブロック）である。もう１つは、ワークデータを格納するのに用いられるキャッシュブロック（ワーク用キャッシュブロック）である。
【００３１】
マスタ用キャッシュブロック及びマスタデータは、ホストコンピュータからキャッシュメモリ１１４へのライトデータの転送またはＨＤＤ１２ｉからキャッシュメモリ１１４へのリードデータの転送が完了している状態において、それぞれ、転送が完了しているキャッシュブロック及び当該キャッシュブロックに格納されている有効なデータを指す。ワーク用キャッシュブロックは、ホストコンピュータからキャッシュメモリ１１４へ転送されるライトデータまたはＨＤＤ１２ｉからキャッシュメモリ１１４へ転送されるリードデータが仮に格納されるキャッシュブロックを指し、ワークデータは、ワーク用キャッシュブロックに格納されているデータを指す。
【００３２】
マスタデータフィールド４０３は、バリッド（Valid）フラグ、ダーティ（Dirty）フラグ及びアドレス（Address）を保持する。バリッドフラグは、対応するマスタ用キャッシュブロックのセクタ毎に、有効なデータであるかを示す。ダーティフラグは、対応するマスタ用キャッシュブロックのセクタ毎に、そのセクタのデータがＨＤＤ１２ｉの本来の格納位置に書かれる（ライトバックされる）べきであるかを示す。アドレス（マスタデータフィールド４０３に保持されているアドレス）は、対応するマスタ用キャッシュブロックのキャッシュメモリ１１４における位置（メモリアドレス）を示す。
【００３３】
ワークデータフィールド４０４は、ダーティ（Dirty）フラグ及びアドレス（Address）を保持する。ダーティフラグは、対応するワーク用キャッシュブロックのセクタ毎に、そのセクタのデータがＨＤＤ１２ｉの本来の格納位置に未保存であるか（つまり書かれるべきか）を示す。アドレス（ワークデータフィールド４０４に保持されているアドレス）は、対応するワーク用キャッシュブロックのキャッシュメモリ１１４における位置（メモリアドレス）を示す。
【００３４】
本実施形態において１キャッシュブロックは、図３を参照して説明したように、３２セクタから構成される。この３２セクタをそれぞれセクタ０〜３１と呼ぶものとする。また、バリッドフラグ及びダーティフラグは、いずれも３２ビットで構成される。この３２ビットのビット位置３１（最上位）〜０（最下位）は、それぞれキャッシュブロックのセクタ０〜３１と対応付けられている。
【００３５】
次に、本実施形態で適用される、キャッシュブロック管理テーブル１１６を用いたキャッシュメモリ１１４の管理、特にキャッシュメモリ１１４内のキャッシュブロックの管理について、図５乃至図７を参照して説明する。
【００３６】
図５は、アドレスが“Ａｄｄｒ１”のキャッシュブロック５００に有効なＲＤＣデータが格納されている場合における、当該キャッシュブロック５００と、当該キャッシュブロック５００を管理するためのキャッシュブロック管理テーブル１１６内のエントリのマスタデータフィールド４０３及びワークデータフィールド４０４の例を示す。
【００３７】
図５の例では、キャッシュブロック５００はマスタ用キャッシュブロックであり、当該キャッシュブロック５００のセクタ０〜２９に有効なＲＤＣデータが格納されている。この場合、マスタデータフィールド４０３内のバリッドフラグは、“０ｘＦＦＦＦＦＦＦＣ”（０ｘは１６進表現であることを示す）であり、マスタデータフィールド４０３内のアドレス“Ａｄｄｒ１”で指定されるキャッシュブロック５００のセクタ０〜２９のデータは有効で、当該キャッシュブロック５００のセクタ３０，３１のデータは無効であることを示す。またマスタデータフィールド４０３内のダーティフラグは“０ｘ００００００００”であり、キャッシュブロック５００内のデータはＨＤＤ１２ｉに保存されており、当該データをＨＤＤ１２ｉに書く必要がないことを示す。
【００３８】
また図５の例では、ワークデータフィールド４０４内のアドレスは無効を示す“０ｘＦＦＦＦＦＦＦＦ”であり、キャッシュブロック（マスタ用キャッシュブロック）５００に対応するワーク用キャッシュブロックが存在しないことを示す。
【００３９】
図６は、アドレスが“Ａｄｄｒ１”のキャッシュブロック６００に有効なＷＢＣデータが格納されている場合における、当該キャッシュブロック６００と、当該キャッシュブロック６００を管理するためのキャッシュブロック管理テーブル１１６内のエントリのマスタデータフィールド４０３及びワークデータフィールド４０４の例を示す。
【００４０】
図６の例では、キャッシュブロック６００のセクタ０〜２９に有効なＷＢＣデータが格納されている。この場合、マスタデータフィールド４０３内のバリッドフラグは、“０ｘＦＦＦＦＦＦＦＣ”であり、マスタデータフィールド４０３内のアドレス“Ａｄｄｒ１”で指定されるキャッシュブロック６００のセクタ０〜２９のデータが有効であることを示す。またマスタデータフィールド４０３内のダーティフラグは“０ｘＦＦＦＦＦＦＦＣ”であり、このダーティフラグのビット位置３１〜２に対応する、キャッシュブロック６００内の有効なＷＢＣデータ（セクタ０〜２９のデータ）はＨＤＤ１２ｉに保存されておらず、当該ＷＢＣデータをＨＤＤ１２ｉに書く必要があることを示す。
【００４１】
また図６の例では、ワークデータフィールド４０４内のアドレスは無効を示す“０ｘＦＦＦＦＦＦＦＦ”であり、キャッシュブロック（マスタ用キャッシュブロック）６００に対応するワーク用キャッシュブロックが存在しないことを示す。
【００４２】
図７は、アドレスが“Ａｄｄｒ１”のキャッシュブロック７００に有効なＲＤＣデータ及びＷＢＣデータが共に格納されている場合における、当該キャッシュブロック７００と、当該キャッシュブロック７００を管理するためのキャッシュブロック管理テーブル１１６内のエントリのマスタデータフィールド４０３及びワークデータフィールド４０４の例を示す。
【００４３】
図７の例では、キャッシュブロック７００のセクタ０，１に有効なＷＢＣデータが格納され、セクタ２〜２９に有効なＲＤＣデータが格納されている。この場合、マスタデータフィールド４０３内のバリッドフラグは、“０ｘＦＦＦＦＦＦＦＣ”であり、マスタデータフィールド４０３内のアドレス“Ａｄｄｒ１”で指定されるキャッシュブロック７００のセクタ０〜２９のデータが有効であることを示す。またマスタデータフィールド４０３内のダーティフラグは“０ｘＣ０００００００”であり、キャッシュブロック７００内のセクタ０，１のデータ（ＷＢＣデータ）はＨＤＤ１２ｉに存在せず、当該データをＨＤＤ１２ｉに書く必要があることを示す。
【００４４】
また図７の例では、ワークデータフィールド４０４内のアドレスは無効を示す“０ｘＦＦＦＦＦＦＦＦ”であり、キャッシュブロック（マスタ用キャッシュブロック）７００に対応するワーク用キャッシュブロックが存在しないことを示す。
【００４５】
次に、本実施形態で適用される、キャッシュブロック管理テーブル１１６を用いたキャッシュメモリ１１４への第１のライトアクセスの制御について、図７を援用しながら、図８乃至図１０を参照して説明する。
【００４６】
まず、ホストコンピュータからの入出力要求に従い、キャッシュメモリ１１４上に既に存在するＷＢＣデータを含む論理アドレスの範囲へのライトアクセスが実施されるものとする。このＷＢＣデータが、図７に示すように、アドレスが“Ａｄｄｒ１”のキャッシュブロック（マスタ用キャッシュブロック）７００のセクタ０，１に格納されており、上記論理アドレスの範囲に対応するライトアクセス範囲が、図８に示すように、ＷＢＣデータを含む有効なデータが格納されているキャッシュブロック７００内の領域を含むものとする。図８の例では、ライトアクセス範囲が、ＷＢＣデータを含む有効なデータが格納されているキャッシュブロック７００内のセクタ０〜２９の領域に一致する。この場合、従来技術であれば、ホストコンピュータから転送されるライトデータ（新ライトデータ）は、キャッシュブロック７００のセクタ０〜２９に書き込まれる。つまり、キャッシュブロック７００内のＷＢＣデータ（旧ライトデータ）を含むセクタ０〜２９の有効なデータ（旧データ）が、新ライトデータで上書きされる。
【００４７】
しかし本実施形態では、新ライトデータは、以下に述べるように空きのキャッシュブロックに書き込まれる。まずキャッシュ管理部１１７は、キャッシュメモリ１１４内の空きのキャッシュブロックをワーク用キャッシュブロックとして取得する。もし、空きのキャッシュブロックがない場合には、例えば周知のＬＲＵ（Least Recently Used）ルールに従ってキャッシュブロックが取得される。ここでは、図８に示されるキャッシュブロック８００がワーク用キャッシュブロックとして取得され、当該キャッシュブロック８００のアドレスが“Ａｄｄｒ２”であるものとする。
【００４８】
キャッシュ管理部１１７がキャッシュブロック８００を取得すると、データ転送制御部１１８は、ホストコンピュータから転送される新ライトデータを、当該キャッシュブロック（ワーク用キャッシュブロック）８００に転送して書き込むためのライトデータ転送（以下、ライト転送と称する）を行う。このように本実施形態では、キャッシュブロック（マスタ用キャッシュブロック）７００内の旧ライトデータを含むライトアクセス範囲の旧データが、新ライトデータで上書きされない点、つまり旧データがキャッシュブロック７００に保存されている点に注意されたい。
【００４９】
キャッシュブロック８００にライトデータを転送するライト転送の開始時には、キャッシュ管理部１１７は、キャッシュブロック６００の管理に用いられているキャッシュブロック管理テーブル１１６内のエントリのワークデータフィールド４０３のアドレスを、無効を示す“０ｘＦＦＦＦＦＦＦＦ”から“Ａｄｄｒ２”に更新する。
【００５０】
キャッシュ管理部１１７はライト転送が完了すると、上記ワークデータフィールド４０３のダーティフラグを、図８に示される“０ｘ００００００００”から、図９に示すように“０ｘＦＦＦＦＦＦＦＣ”に更新する。これにより、キャッシュブロック８００のセクタ０〜２９のデータ（新ライトデータ）がＨＤＤ１２ｉに存在せず、当該データをＨＤＤ１２ｉに書く必要があることが示される。
【００５１】
ライト転送が正常に終了すると、キャッシュ管理部１１７はマスタデータフィールド４０３及びワークデータフィールド４０４を操作して、マスタデータフィールド４０３に保持されているアドレス“Ａｄｄｒ１”とワークデータフィールド４０４に保持されているアドレス“Ａｄｄｒ２”とを入れ替える。つまりキャッシュ管理部１１７は、マスタ用キャッシュブロックをワーク用キャッシュブロックに切り替えると共に、ワーク用キャッシュブロックをマスタ用キャッシュブロックに切り替える。またキャッシュ管理部１１７は、マスタデータフィールド４０３のバリッドフラグ及びダーティフラグを、ワークデータフィールド４０４のダーティフラグに基づいて更新する。このフラグの更新の具体的な手法については後述する。
【００５２】
その後、キャッシュ管理部１１７は、アドレスが“Ａｄｄｒ１”のキャッシュブロックを開放する。するとデータ転送制御部１１８は、ホストコンピュータにライトアクセスの完了を応答する。図１０は、このライトアクセス完了後の、キャッシュブロック８００と、当該キャッシュブロック８００を管理するためのキャッシュブロック管理テーブル１１６内のエントリのマスタデータフィールド４０３及びワークデータフィールド４０４の例を示す。
【００５３】
もし、ライト転送が正常に終了した後、上述の入れ替えが完了する前に、つまりホストにライトアクセス完了を応答していない状態で、例えばディスクアレイ装置１０の電源遮断が発生した場合、キャッシュ管理部１１７は、アドレスが“Ａｄｄｒ２”のキャッシュブロックに転送されたライトデータを無効として扱う。この状態では、アドレスが“Ａｄｄｒ１”のキャッシュブロックに、旧データが残されている。このため、キャッシュメモリ１１４へのデータ転送の途中での電源遮断に対して当該キャッシュメモリ１１４上のセクタデータを保証することができる。
【００５４】
次に、ホストコンピュータによって指定された論理アドレスの範囲に対応するマスタ用キャッシュブロックのライトアクセス範囲が、当該マスタ用キャッシュブロック内の有効なデータが格納されている範囲の一部である場合における、キャッシュブロック管理テーブル１１６を用いたキャッシュメモリ１１４への第２のライトアクセスの制御について、図１１乃至図１３を参照して説明する。
【００５５】
図１１に示すように、アドレスが“Ａｄｄｒ１”のキャッシュブロック（マスタ用キャッシュブロック）１１１０のセクタ０〜２９には、ＷＢＣデータ（旧ライトデータ）を含む有効なデータが格納されている。ここでは、セクタ０〜２７に旧ライトデータが格納されており、当該旧ライトデータは未だＨＤＤ１２ｉに未保存のデータである。
【００５６】
このような状態で、ホストコンピュータからの入出力要求に従い、キャッシュブロック（マスタ用キャッシュブロック）１１１０のセクタ１〜３に格納されている旧ライトデータの一部を含む論理アドレスの範囲へのライトアクセスが実施されるものとする。図１１において、この論理アドレスの範囲に対応するライトアクセス範囲は、キャッシュブロック１１１０内の旧ライトデータが格納されているセクタ０〜２７のうちの一部、例えばセクタ１〜３である。この場合、従来技術であれば、ホストコンピュータから転送されるライトデータ（新ライトデータ）は、キャッシュブロック７００のセクタ１〜３に書き込まれる。つまり、キャッシュブロック７００内の旧ライトデータの一部（セクタ１〜３のデータ）が、新ライトデータで上書きされる。
【００５７】
しかし本実施形態では、新ライトデータは、図１１に示されるように、キャッシュブロック１１１０のワーク用キャッシュブロックとして用いられるキャッシュブロック１１２０のセクタ１〜３（ライトアクセス範囲）に書かれる。ワーク用キャッシュブロックに書かれた新ライトデータを、ワーク用ライトデータと呼ぶこともある。キャッシュブロック１１２０のアドレスは“Ａｄｄｒ２”である。新ライトデータの書き込み（転送）が完了すると、キャッシュブロック１１１０，１１２０を管理するためのキャッシュブロック管理テーブル１１６内のエントリにおけるワーク用ダーティフラグは、“０ｘ７０００００００”に更新される。つまり、ワーク用ダーティフラグのセクタ１〜３に対応するビットはオンされる。
【００５８】
第２のライトアクセスでは、新ライトデータの転送が正常に終了しても、第１のライトアクセスと異なって、マスタデータフィールド４０３に保持されているアドレス“Ａｄｄｒ１”とワークデータフィールド４０４に保持されているアドレス“Ａｄｄｒ２”との入れ替えは行われない。もし、図１１に示される状態、つまりワーク用のダーティフラグの上記ライトアクセス範囲のビットがオンしている状態で、ホストコンピュータから上記新ライトデータの一部または全部に対応する論理アドレスの範囲のデータのリードアクセスが実施された場合、データ転送制御部１１８は、アドレスが“Ａｄｄｒ２”のキャッシュブロック１１２０に格納されている新ライトデータ（ワーク用ライトデータ）のうち、指定された論理アドレスの範囲に対応するリードアクセス範囲のデータをホストコンピュータに応答する。
【００５９】
新ライトデータの転送が正常に終了すると、データ転送制御部１１８は、アドレスが“Ａｄｄｒ２”のキャッシュブロック（ワーク用キャッシュブロック）１１２０のセクタ１〜３に格納されている新ライトデータ（ワーク用ライトデータ）を、図１２に示すように、アドレスが“Ａｄｄｒ１”のキャッシュブロック１１２０の相対位置が同一の領域、つまりセクタ１〜３に移動（転送）する。このライトデータ移動中、キャッシュブロック１１１０，１１２０を管理するためのキャッシュブロック管理テーブル１１６内のエントリにおけるマスタデータフィールド４０３及びワークデータフィールド４０４は、新ライトデータの転送が正常に終了した際の状態を保持する。
【００６０】
ライトデータ移動が完了すると、キャッシュ管理部１１７は、アドレスが“Ａｄｄｒ２”のキャッシュブロック１１２０を開放する。図１３は、このキャッシュブロック１１２０を開放した後の、キャッシュブロック管理テーブル１１６内の対応するエントリ内のマスタデータフィールド４０３及びワークデータフィールド４０４の例を示す。
【００６１】
以上に述べた第２のライトアクセスの制御によれば、キャッシュブロック１１２０への新ライトデータの書き込み（転送）の途中で電源遮断が発生しても、旧ライトデータはキャッシュブロック１１１０に残されており、失われない。また、キャッシュブロック１１１０への新ライトデータの移動（転送）の途中で電源遮断が発生しても、新ライトデータはキャッシュブロック１１２０に残されており、失われない。
【００６２】
次に、上述のライトアクセスの処理手順について、図１４及び図１５のフローチャートを参照して説明する。  
まずキャッシュ管理部１１７は、ホストコンピュータからの入出力要求で指定されたライトアクセス先を示す論理アドレス（ライト論理アドレス）に基づき、キャッシュブロック管理テーブル１１６内の当該ライト論理アドレスに対応する論理アドレスフィールド４０２を持つエントリ（目的のエントリ）をサーチする（ステップＳ１）。もし、目的のエントリがサーチできなかったならば（ステップＳ２のＮｏ）、キャッシュ管理部１１７は、キャッシュブロック管理テーブル１１６内の空きのエントリを確保して、当該確保したエントリの論理アドレスフィールド４０２に上記ライト論理アドレスを登録する（ステップＳ３）。またキャッシュ管理部１１７は、キャッシュメモリ１１４内の空きのキャッシュブロックをマスタ用キャッシュブロックとして取得して、当該マスタ用キャッシュブロックのアドレスを上記確保したエントリのマスタデータフィールド４０３に登録する（ステップＳ４）。
【００６３】
するとデータ転送制御部１１８は、ホストコンピュータからの入出力要求で指定されたライトデータを、上記マスタ用キャッシュブロックの該当する領域（ライトアクセス範囲）にホストコンピュータから転送させる（ステップＳ５）。このライト転送が完了すると、キャッシュ管理部１１７は、上記確保したエントリのマスタデータフィールド４０３に保持されているバリッドフラグ（マスタ用バリッドフラグ）及びダーティフラグ（マスタ用ダーティフラグ）のライトアクセス範囲の各ビットをオンする（ステップＳ６）。するとデータ転送制御部１１８は、ホストコンピュータにライトアクセス完了を応答する（ステップＳ７）。
【００６４】
一方、目的のエントリがサーチできたならば（ステップＳ２のＹｅｓ）、キャッシュ管理部１１７は、当該エントリに登録されているマスタ用ダーティフラグの少なくとも１ビットがオンしているかにより、当該エントリにより管理されるマスタ用キャッシュブロックの該当セクタ位置のデータがＨＤＤ１２ｉに未保存であるかを判定する（ステップＳ８）。
【００６５】
もし、ステップＳ８の判定がＮｏであるならば、上記ステップＳ５以降の処理が行われる。これに対し、ステップＳ８の判定がＹｅｓであるならば、キャッシュ管理部１１７はステップＳ９に進む。ステップＳ９においてキャッシュ管理部１１７は、上記ステップＳ５と同様にマスタ用キャッシュブロックのライトアクセス範囲へのライト転送を行うならば、ＨＤＤ１２ｉに未保存のデータが、ホストコンピュータから転送されるライトデータで上書きされるかを判定する。この判定は、マスタ用ダーティフラグのライトアクセス範囲の少なくとも１ビットがオンしているかをチェックすることによって行われる。もし、ステップＳ９の判定がＮｏであるならば、上記ステップＳ５以降の処理が行われる。
【００６６】
これに対し、ステップＳ９の判定がＹｅｓであるならば、キャッシュ管理部１１７は、ＨＤＤ１２ｉに未保存のデータが、ホストコンピュータから転送されるライトデータで上書きされるのを回避するために、データ転送制御部１１８と協働して以下に述べる処理を実行する。
【００６７】
まずキャッシュ管理部１１７は、マスタ用キャッシュブロックに対応するワーク用キャッシュブロックが既に取得されているかを判定する（ステップＳ１０）。この判定は、ステップ１でサーチされたキャッシュブロック管理テーブル１１６内のエントリのワークデータフィールド４０４に有効なアドレスが登録されているかをチェックすることによって行われる。
【００６８】
もし、ワーク用キャッシュブロックが取得されていないならば（ステップＳ１０のＮｏ）、キャッシュ管理部１１７は、空きのキャッシュブロックをワーク用キャッシュブロックとして取得する（ステップＳ１１）。そしてキャッシュブロック管理テーブル１１６は、取得されたワーク用キャッシュブロックのアドレスを、上記サーチされたキャッシュブロック管理テーブル１１６内のエントリのワークデータフィールド４０４に登録する（ステップＳ１２）。
【００６９】
するとデータ転送制御部１１８は、ホストコンピュータからの入出力要求で指定されたライトデータ（新ライトデータ）を、上記ワーク用キャッシュブロックの該当する領域（ライトアクセス範囲）にホストコンピュータから転送させる（ステップＳ１３）。この転送（ライト転送）が完了すると、キャッシュ管理部１１７は、上記サーチされたエントリのワークデータフィールド４０４に保持されているワーク用ダーティフラグのライトアクセス範囲の各ビットをオンする（ステップＳ１４）。
【００７０】
次にキャッシュ管理部１１７は、上記サーチされたエントリのマスタデータフィールド４０３に保持されているマスタ用バリッドフラグによって有効なデータとして示されている範囲（バリッド範囲）が、ライトアクセス範囲に含まれているかを判定する（ステップＳ１５）。もし、バリッド範囲がライトアクセス範囲に含まれているならば（ステップＳ１５のＹｅｓ）、キャッシュ管理部１１７は上記サーチされたエントリのマスタデータフィールド４０３及びワークデータフィールド４０４を操作して、マスタ用キャッシュブロックのアドレスとワーク用キャッシュブロックのアドレスとを入れ替える（ステップＳ１６）
次にキャッシュ管理部１１７は、上記サーチされたエントリのマスタデータフィールド４０３に保持されているマスタ用バリッドフラグ及びマスタ用ダーティフラグを、上記サーチされたエントリのワークデータフィールド４０４に保持されているワーク用ダーティフラグに基づいて更新する（ステップＳ１７）。具体的には、キャッシュ管理部１１７は、ワーク用ダーティフラグを、マスタ用バリッドフラグ及びマスタ用ダーティフラグに、それぞれＯＲ設定する。即ちキャッシュ管理部１１７は、ワーク用ダーティフラグと、マスタ用バリッドフラグ及びマスタ用ダーティフラグとの間で、それぞれ対応するビット同士で論理和演算し、その論理和演算結果で、マスタ用バリッドフラグ及びマスタ用ダーティフラグを置き換える。
【００７１】
次にキャッシュ管理部１１７は、ワーク用ダーティフラグを０クリアすると共に、アドレス入れ替えによってワーク用キャッシュブロックに切り替えられたキャッシュブロックを開放し、ワークデータフィールド４０４に登録されている切り替え後のアドレスを無効化する（ステップＳ１８）。ここでは、アドレスを０ｘＦＦＦＦＦＦＦＦに書き換えることによって、当該アドレスが無効化される。
【００７２】
このように本実施形態では、ワークデータフィールド４０４に登録されているアドレスが無効化されることによって、当該ワークデータフィールド４０４によって管理されるべきワーク用キャッシュブロックが取得されていないことが示される。つまり、ワークデータフィールド４０４に登録されているアドレスは、当該ワークデータフィールド４０４によって管理されるべきワーク用キャッシュブロックが取得されているか否か（取得状態）をも表す。なお、このアドレスとは別に、ワーク用キャッシュブロックが取得されているか否か（取得状態）を示す情報を、ワークデータフィールド４０４に持たせることも可能である。
【００７３】
キャッシュ管理部１１７によって上記ステップＳ１８が実行されると、データ転送制御部１１８は、ホストコンピュータにライトアクセス完了を応答する（ステップＳ７）。  
これに対し、バリッド範囲がライトアクセス範囲に含まれていないならば（ステップＳ１５のＮｏ）、キャッシュ管理部１１７による上記ステップＳ１６乃至Ｓ１８が実行されずに、データ転送制御部１１８により、ホストコンピュータにライトアクセス完了が応答される（ステップＳ７）。
【００７４】
一方、ワーク用キャッシュブロックが既に取得されているならば（ステップＳ１０のＹｅｓ）、キャッシュ管理部１１７はデータ転送制御部１１８と協働して、図１２及び図１３を参照して説明したようなライトデータ移動処理（以下、ワーク用ライトデータ移動処理）を実行する（ステップＳ１９）。このワーク用ライトデータ移動処理では、ワーク用ライトデータの移動後に、ワーク用キャッシュブロックが開放される。このワーク用ライトデータライトデータ移動処理の手順については後述する。
【００７５】
ワーク用ライトデータ移動処理（ステップＳ１９）が終了すると、マスタ用キャッシュブロックに対応するワーク用キャッシュブロックが取得されていない場合と同様に、上記ステップＳ１１以降の処理が行われる。
【００７６】
次に、本実施形態で適用される、ホストコンピュータからの入出力要求で指定されたリードアクセスの処理手順について、図１６及び図１７のフローチャートを参照して説明する。
【００７７】
まずキャッシュ管理部１１７は、ホストコンピュータからの入出力要求で指定されたリードアクセス先を示す論理アドレス（リード論理アドレス）に基づき、キャッシュブロック管理テーブル１１６内の当該リード論理アドレスに対応する論理アドレスフィールド４０２を持つエントリ（目的のエントリ）をサーチする（ステップＳ２１）。もし、目的のエントリがサーチできなかったならば（ステップＳ２２のＮｏ）、キャッシュ管理部１１７は、キャッシュブロック管理テーブル１１６内の空きのエントリを確保して、当該確保したエントリの論理アドレスフィールド４０２に上記リード論理アドレスを登録する（ステップＳ２３）。またキャッシュ管理部１１７は、キャッシュメモリ１１４内の空きのキャッシュブロックをマスタ用キャッシュブロックとして取得して、当該マスタ用キャッシュブロックのアドレスを上記確保したエントリのマスタデータフィールド４０３に登録する（ステップＳ２４）。
【００７８】
するとデータ転送制御部１１８は、ホストコンピュータにより指定されたデータ（リードデータ）を、取得されたマスタ用キャッシュブロックの該当する領域（リードアクセス範囲）にＨＤＤ１２ｉから転送するためのリードデータ転送（以下、リード転送と称する）を行う（ステップＳ２５）。リード転送が完了すると、キャッシュ管理部１１７は、上記確保したエントリのマスタ用バリッドフラグのリードアクセス範囲の各ビットをオンする（ステップＳ２６）。するとデータ転送制御部１１８は、上記リードデータをホストコンピュータに転送し（ステップＳ２７）、しかる後に当該ホストコンピュータにリードアクセス完了を応答する（ステップＳ２８）。これによりリードアクセス処理は終了する。
【００７９】
一方、目的のエントリ（つまり、リード論理アドレスに対応する論理アドレスフィールド４０２を持つエントリ）がサーチできたならば（ステップＳ２２のＹｅｓ）、キャッシュ管理部１１７は、当該エントリに登録されているマスタ用バリッドフラグの少なくとも１ビットがオンしているかにより、当該エントリにより管理されるマスタ用キャッシュブロックの該当セクタ位置に有効なデータが登録されているかを判定する（ステップＳ２９）。
【００８０】
もし、ステップＳ２９の判定がＹｅｓであるならば、キャッシュ管理部１１７は、マスタ用バリッドフラグの中のオン状態にあるビットの範囲に対応するマスタ用キャッシュブロックの領域を、リード転送範囲（リードアクセス範囲）に含める（ステップＳ３０）。
【００８１】
ステップＳ３０を実行すると、キャッシュ管理部１１７は、サーチされたエントリ中のワークデータフィールド４０４に設定されているワーク用ダーティフラグの少なくとも１ビットがオンしているかを判定する（ステップＳ３１）。キャッシュ管理部１１７は、ステップＳ２９の判定がＮｏの場合には、ステップ３０をスキップしてステップＳ３１の判定を行う。
【００８２】
もし、ステップＳ３１の判定がＹｅｓであるならば、キャッシュ管理部１１７は、ワーク用バリッドフラグの中のオン状態にあるビットの範囲に対応するワーク用キャッシュブロックの領域を、リード転送範囲に含める（ステップＳ３２）。
【００８３】
ステップＳ３２を実行すると、キャッシュ管理部１１７は、サーチされたエントリによって管理されているマスタ用キャッシュブロックに有効なデータが未登録の領域があるかを判定する（ステップ３３）。この未登録の領域があるかは、対応するマスタ用バリッドフラグにオフ状態にあるビットが含まれているかによって判定される。キャッシュ管理部１１７は、ステップＳ３１の判定がＮｏの場合には、ステップ３２をスキップしてステップＳ３３の判定を行う。
【００８４】
もし、ステップＳ３３の判定がＹｅｓであるならば、データ転送制御部１１８は、マスタ用キャッシュブロック内の未登録の領域に対応するデータ（未登録のデータ）を、ＨＤＤ１２ｉから当該マスタ用キャッシュブロック内の未登録の領域に転送（リード転送）する（ステップＳ３４）。するとキャッシュ管理部１１７は、マスタ用バリッドフラグ中の上記未登録の領域に対応するビットを全てオンする（ステップＳ３５）。
【００８５】
ステップＳ３５が実行されると、上記ステップＳ２７に進む。ステップＳ３３の判定がＮｏの場合には、ステップＳ３４及びＳ３５をスキップしてステップＳ２７に進む。ステップＳ２７においてデータ転送制御部１１８は、マスタ用キャッシュブロック内の現在のリード転送範囲のリードデータを、ホストコンピュータに転送し（ステップＳ２７）、しかる後に当該ホストコンピュータにリードアクセス完了を応答する（ステップＳ２８）。これによりリードアクセス処理は終了する。
【００８６】
次に、上記ワーク用ライトデータ移動処理の手順について図１８のフローチャートを参照して説明する。  。
【００８７】
まずデータ転送制御部１１８が、ワーク用キャッシュブロックに格納されている、対応するワーク用ダーティフラグ中のオン状態にあるビットの範囲（以下、ワーク用ダーティフラグの設定範囲と称する）に相当するデータを、図１２を参照して説明したように、当該ワーク用キャッシュブロックからマスタ用キャッシュブロックに転送する（ステップＳ４１）。
【００８８】
するとキャッシュ管理部１１７は、上記ステップＳ１７と同様に、ワーク用ダーティフラグを、マスタ用バリッドフラグ及びマスタ用ダーティフラグに、それぞれＯＲ設定する（ステップＳ４２）。次にキャッシュ管理部１１７は、ワーク用ダーティフラグを０クリアすると共に、ワーク用キャッシュブロックを開放し、当該ワーク用キャッシュブロックを管理するワークデータフィールド４０４に登録されているアドレスを無効化する（ステップＳ４３）。これによりワーク用ライトデータ移動処理は終了する。
【００８９】
本実施形態において、ディスクアレイ装置１０のコントローラ１１では、ホストコンピュータからの入出力要求とは無関係の処理（以下、バックグラウンド処理と称する）が自律的に行われる。以下、このバックグラウンド処理の手順について、図１９のフローチャートを参照して説明する。本実施形態では、バックグラウンド処理が定期的に行われるものとするが、不定期で行われても構わない。
【００９０】
キャッシュ管理部１１７は、バックグラウンド処理の定期起動時刻が到来したかを、例えばバックグラウンド処理の実行周期よりも短い周期で判定する（ステップＳ５１）。もし、定期起動時刻が到来したならば（ステップＳ５１のＹｅｓ）、キャッシュ管理部１１７はキャッシュブロック管理テーブル１１６内のエントリのワークデータフィールド４０４を参照することにより、当該エントリによって管理されるマスタ用キャッシュブロックに対応するワーク用キャッシュブロックが取得されているかを判定する（ステップＳ５２）。
【００９１】
もし、ワーク用キャッシュブロックが取得されているならば（ステップＳ５２のＹｅｓ）、キャッシュ管理部１１７は、当該ワーク用キャッシュブロックから対応するマスタ用キャッシュブロックにワーク用ライトデータを移動するためのワーク用ライトデータ移動処理を、図１８のフローチャートに示される手順でデータ転送制御部１１８と協働して実行する（ステップＳ５３）。
【００９２】
ワーク用ライトデータ移動処理（ステップＳ５３）が終了すると、ステップＳ５４に進む。ステップＳ５４においてキャッシュ管理部１１７は、ワーク用ライトデータの移動先のマスタ用キャッシュブロックに対応するマスタ用ダーティフラグの少なくとも１ビットがオンしているかにより、当該マスタ用キャッシュブロックの該当セクタ位置のデータがＨＤＤ１２ｉに未保存であるかを判定する。一方、ステップＳ５２の判定がＮｏの場合、キャッシュ管理部１１７はステップＳ５３をスキップしてステップＳ５４の判定を実行する。
【００９３】
ステップＳ５４の判定がＹｅｓの場合、データ転送制御部１１８は、マスタ用キャッシュブロックに格納されている、対応するマスタ用ダーティフラグの設定範囲に相当するデータを、当該マスタ用キャッシュブロックからＨＤＤ１２ｉに転送する（ステップＳ５５）。ここでマスタ用キャッシュブロックからのデータの転送先は、当該マスタ用キャッシュブロックを管理する、キャッシュブロック管理テーブル１１６内のエントリ中の論理アドレスフィールド４０２に設定されている論理アドレスに基づいて決定される。
【００９４】
キャッシュ管理部１１７は、ステップＳ５５が終了すると、対応するマスタ用ダーティフラグを０クリアする（ステップＳ５６）。これにより、バックグラウンド処理は終了する。また、ステップＳ５４の判定がＮｏの場合、そのままバックグラウンド処理は終了する。
【００９５】
本実施形態では、ディスクアレイ装置１０の電源が遮断したならば、当該電源が復帰した際に、電源復帰時処理が行われる。以下、この電源復帰時処理の手順について、図２０のフローチャートを参照して説明する。
【００９６】
キャッシュ管理部１１７は、電源遮断状態から復帰した場合（ステップＳ６１のＹｅｓ）、キャッシュブロック管理テーブル１１６の全エントリを先頭から順次サーチするための処理を実行する（ステップＳ６２）。既に最後のエントリまで処理済みでないならば（ステップ６３のＮｏ）、キャッシュ管理部１１７は、サーチされたエントリ中のワークデータフィールド４０４に基づき、当該エントリによって管理されるマスタ用キャッシュブロックに対応するワーク用キャッシュブロックが取得されているかを判定する（ステップＳ６４）。
【００９７】
もし、ワーク用キャッシュブロックが取得されているならば（ステップＳ６４のＹｅｓ）、キャッシュ管理部１１７は、当該ワーク用キャッシュブロックに対応するワーク用ダーティフラグの少なくとも１ビットがオンしているかを判定する（ステップＳ６５）。ステップＳ６５の判定がＹｅｓの場合、キャッシュ管理部１１７は、対応するワーク用キャッシュブロックからマスタ用キャッシュブロックにワーク用ライトデータを移動するためのワーク用ライトデータ移動処理を、図１８のフローチャートに示される手順でデータ転送制御部１１８と協働して実行する（ステップＳ６６）。これに対し、ステップＳ６５の判定がＮｏの場合、キャッシュ管理部１１７は、対応するワーク用キャッシュブロックを開放し、当該ワーク用キャッシュブロックの管理に用いられていたワークデータフィールド４０４に登録されているアドレスを０ｘＦＦＦＦＦＦＦＦに書き換えることによって、当該アドレスを無効化する（ステップＳ６７）。
【００９８】
キャッシュ管理部１１７は、ステップＳ６６またはＳ６７が終了すると、サーチされたエントリ中のマスタデータフィールド４０３に設定されているマスタ用バリッドフラグの少なくとも１ビットがオンしているかを判定する（ステップＳ６８）。キャッシュ管理部１１７は、ステップＳ６４の判定がＮｏの場合には、ステップＳ６５〜Ｓ６７をスキップしてステップＳ６８の判定を行う。
【００９９】
ステップＳ６８の判定がＮｏの場合、キャッシュ管理部１１７は、対応するマスタ用キャッシュブロックを開放し（ステップＳ６９）、しかる後に当該開放されたマスタ用キャッシュブロックを管理するのに用いられていた、キャッシュブロック管理テーブル１１６内のエントリを開放する（ステップＳ７０）。ステップＳ７０が実行されると、ステップＳ６２に戻る。また、ステップＳ６８の判定がＹｅｓの場合には、そのままステップＳ６２に戻る。また、最後のエントリまで処理済みであったならば（ステップ６３のＹｅｓ）、つまりキャッシュブロック管理テーブル１１６の全エントリに基づいて対応する処理が既に行われているならば、電源復帰時処理は終了する。  
なお、上記実施形態では、データ記憶装置がディスクアレイ装置である場合を想定している。しかし、データ記憶装置がディスクアレイ装置である必要はない。
【０１００】
上述の実施形態によれば、ホストコンピュータからのライトデータが格納されるべきキャッシュブロック（マスタ用キャッシュブロック）に、ディスク装置に未保存のデータが存在する場合でも、当該キャッシュブロックとは別のキャッシュブロックがワーク用キャッシュブロックとして取得されて、当該取得されたワーク用キャッシュブロックに、上記ライトデータが転送（格納）される。そして、取得されたワーク用キャッシュブロックへの上記ライトデータの転送が完了した場合に、マスター用キャッシュブロックがワーク用に、取得されたワーク用キャッシュブロックがマスター用にそれぞれ切り替えられ、ワーク用に切り替えられたキャッシュブロックが開放される。これにより、ホストコンピュータからのライトデータが格納されるべきキャッシュブロック（マスタ用キャッシュブロック）に、ディスク装置に未保存のデータが存在する場合でも、ライトアクセスの性能を低下させることなく、キャッシュメモリへのデータ転送の途中での電源遮断に対してセクタデータを保証することが可能となる。
【０１０１】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１０２】
１０…ディスクアレイ装置（データ記憶装置）、１１…コントローラ、１２ａ〜１２ｃ…ＨＤＤ（ディスク装置）、２０…データ通信路、１１１…ホストインタフェース部、１１２…マイクロプロセッサ、１１３…メモリ、１１４…キャッシュメモリ、１１５…ディスクインタフェース部、１１６…キャッシュブロック管理テーブル、１１７…キャッシュ管理部、４０１…エントリ番号フィールド、４０２…論理アドレスフィールド、４０３…マスタデータフィール、４０４…ワークデータフィールド。
【図１】
2012014285.tif 000003
【図２】
2012014285.tif 000004
【図３】
2012014285.tif 000005
【図４】
2012014285.tif 000006
【図５】
2012014285.tif 000007
【図６】
2012014285.tif 000008
【図７】
2012014285.tif 000009
【図８】
2012014285.tif 000010
【図９】
2012014285.tif 000011
【図１０】
2012014285.tif 000012
【図１１】
2012014285.tif 000013
【図１２】
2012014285.tif 000014
【図１３】
2012014285.tif 000015
【図１４】
2012014285.tif 000016
【図１５】
2012014285.tif 000017
【図１６】
2012014285.tif 000018
【図１７】
2012014285.tif 000019
【図１８】
2012014285.tif 000020
【図１９】
2012014285.tif 000021
【図２０】
2012014285.tif 000022