(57)【特許請求の範囲】
【請求項１】
ディスクアレイと、キャッシュメモリと、停電時に前記キャッシュメモリに電力を供給するバッテリと、前記キャッシュメモリにデータを格納するキャッシュコントローラとを含むディスクアレイ装置の制御方法であって、
前記キャッシュコントローラが、前記キャッシュメモリを複数のメモリバンクに分割するステップと、
前記キャッシュコントローラが、予め定められた更新周期で、前記バッテリの電力供給能力を示す電力供給能力情報を取得するステップと、
前記キャッシュコントローラが、前記電力供給能力情報の取得の都度に、前記電力供給能力情報に応じて、前記キャッシュメモリにおける、前記ディスクアレイへ書き込むべきライトデータであって前記ディスクアレイに書き込まれていないデータであるダーティデータの書き込みが許容された許容領域のサイズと、前記ダーティデータの書き込みが禁止された禁止領域のサイズとを定め、前記複数のメモリバンクの各々について、前記禁止領域又は前記許容領域であることを示す識別情報を、前記許容領域の数が前記電力供給能力情報に応じて定まる数となるように、キャッシュテーブルに設定するステップと、
前記キャッシュコントローラが、前記キャッシュテーブルに基づいて、前記禁止領域とされたメモリバンクに前記ディスクアレイから読み出したリードデータのみを格納し、前記許容領域とされたメモリバンクに前記ダーティデータ又は前記リードデータを格納するステップとを含む
ことを特徴とするディスクアレイ装置の制御方法。
【請求項２】
前記キャッシュコントローラが、前記電力供給能力情報が複数の閾値における最大の閾値よりも大きい場合に前記複数のメモリバンクを全て前記許容領域に設定し、前記電力供給能力情報が前記複数の閾値における最少の閾値よりも大きい場合に前記ライトデータを前記キャッシュメモリに格納しかつ前記ライトデータの書込み要求の要求元へ書込み完了を通知した後に前記ディスクアレイに書き込むライトバック状態で動作し、前記電力供給能力情報が前記複数の閾値における最少の閾値よりも小さい場合に前記複数のメモリバンクを全て前記禁止領域に設定して前記ライトデータを前記キャッシュメモリに一旦書き込み、前記キャッシュメモリに書き込んだ前記ライトデータを前記ディスクアレイに書き込んだ後に前記ライトデータの書込み要求の要求元へ書込み完了を通知するライトスルー状態で動作する
ことを特徴とする請求項１に記載のディスクアレイ装置の制御方法。
【請求項３】
前記キャッシュコントローラが、前記複数のメモリバンクの各々について、書き込まれた前記ダーティデータの量が少ない順に優先順位を決定し、前記優先順位に従って、前記複数のメモリバンクに格納されたダーティデータを前記ディスクアレイに書き込む
ことを特徴とする請求項１に記載のディスクアレイ装置の制御方法。
【請求項４】
前記キャッシュコントローラが、前記ダーティデータが格納されたメモリバンクの数が最小となるように、前記複数のメモリバンクに格納されたダーティデータを再配置する
ことを特徴とする請求項１に記載のディスクアレイ装置の制御方法。
【請求項５】
前記キャッシュメモリが、ローカル領域と第２のキャッシュメモリのローカル領域のデータのコピーを格納するミラー領域とを含む第１のキャッシュメモリと、ローカル領域と第１のキャッシュメモリのローカル領域のデータのコピーを格納するミラー領域とを含む第２のキャッシュメモリとを含み、
前記キャッシュコントローラが、前記第１のキャッシュメモリに対応して設けられる第１のキャッシュコントローラと、前記第２のキャッシュメモリに対応して設けられ、前記第１のキャッシュコントローラと接続される第２のキャッシュコントローラとを含み、
前記第１のキャッシュコントローラが、前記第１のキャッシュメモリにおいて、前記ローカル領域を前記複数のメモリバンクに分割し、前記メモリバンクの各々について、前記識別情報を、前記許容領域の数が前記電力供給能力情報に応じて定まる数となるように、前記第１のキャッシュメモリのキャッシュテーブルに設定し、
前記第２のキャッシュコントローラが、前記第２のキャッシュメモリにおいて、前記ローカル領域を前記複数のメモリバンクに分割し、前記メモリバンクの各々について、前記識別情報を、前記許容領域の数が前記電力供給能力情報に応じて定まる数となるように、前記第２のキャッシュメモリのキャッシュテーブルに設定し、
前記第１及び第２のキャッシュコントローラが、前記第１のキャッシュメモリの前記ローカル領域に格納されたデータを前記第２のキャッシュメモリの前記ミラー領域にコピーし、前記第２のキャッシュメモリの前記ローカル領域に格納されたデータを前記キャッシュメモリの前記第１のミラー領域にコピーする
ことを特徴とする請求項１に記載のディスクアレイ装置の制御方法。
【請求項６】
前記キャッシュコントローラが、前記許容領域から前記禁止領域に変更されたメモリバンクに前記ダーティデータが格納されている場合、前記許容領域から前記禁止領域に変更されたメモリバンクに格納された前記ダーティデータを前記ディスクアレイに書き込むまでの間、前記第１のキャッシュメモリ及び第２のキャッシュメモリのいずれか一方のみを、前記バッテリによるバックアップ電源の供給対象とする
ことを特徴とする請求項５に記載のディスクアレイ装置の制御方法。
【請求項７】
前記キャッシュコントローラが、前記第１のキャッシュメモリ及び第２のキャッシュメモリにおいて、書き込まれた前記ダーティデータの量が少ない方を、前記バッテリによるバックアップ電源の供給対象とする
ことを特徴とする請求項６に記載のディスクアレイ装置の制御方法。
【請求項８】
前記キャッシュコントローラが、前記許容領域から前記禁止領域に変更されたメモリバンクに前記ダーティデータが格納されている場合、前記許容領域から前記禁止領域に変更されたメモリバンクに格納された前記ダーティデータを前記ディスクアレイに書き込むまでの間、前記第１のキャッシュメモリの前記ローカル領域及び第２のキャッシュメモリの前記ローカル領域のみを、前記バッテリによるバックアップ電源の供給対象とする
ことを特徴とする請求項５に記載のディスクアレイ装置の制御方法。
【請求項９】
ディスクアレイと、
前記ディスクアレイから読み出したリードデータと、前記ディスクアレイへ書き込むべきライトデータであって前記ディスクアレイに書き込まれていないデータであるダーティデータとを格納するキャッシュメモリと、
停電時に前記キャッシュメモリに電力を供給するバッテリと、
予め定められた更新周期で、前記バッテリの電力供給能力を示す電力供給能力情報を取得し、前記電力供給能力情報の取得の都度に、前記電力供給能力情報に応じて、前記キャッシュメモリにおける、前記ダーティデータの書き込みが許容された許容領域のサイズと、前記ダーティデータの書き込みが禁止された禁止領域のサイズとを定め、前記複数のメモリバンクの各々について、前記禁止領域又は前記許容領域であることを示す識別情報を、前記許容領域の数が前記電力供給能力情報に応じて定まる数となるように、キャッシュテーブルに設定し、前記キャッシュテーブルに基づいて、前記禁止領域とされたメモリバンクに前記ディスクアレイから読み出したリードデータのみを格納し、前記許容領域とされたメモリバンクに前記ダーティデータ又は前記リードデータを格納するキャッシュコントローラとを含む
ことを特徴とするディスクアレイ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディスクアレイ装置及びディスクアレイ装置制御方法に関する。
【背景技術】
【０００２】
ディスクアレイ装置は、高速デバイスであるキャッシュ（ディスクキャッシュメモリ）を内蔵することにより、データへのアクセス時間を短くしている。例えば、ディスクアレイ装置は、ホストコンピュータからデータの書き込み要求を受信すると、当該データを一旦キャッシュに保存し、ホストコンピュータへ処理完了を通知する。換言すれば、ディスクアレイ装置は、データをディスク（磁気ディスク）ではなくキャッシュに書き込む処理（ライトバック状態での書き込み処理）により、ホストコンピュータに対してデータ処理時間を短く見せている。キャッシュに書き込まれ、ディスクに書き込まれていないデータは「ダーティデータ」と呼ばれる。ダーティデータは、ホストコンピュータへ処理完了を通知した後に、ディスクへ書き込まれる。
【０００３】
なお、ダーティデータ処理方法、ダーティデータ処理装置及びダーティデータ処理プログラムにおいて、記憶装置が有するバッテリ残容量を監視しながら、前記バッテリ残容量に伴って前記記憶装置が有するキャッシュメモリ内のダーティデータの許容量を制御し、前記ダーティデータの許容量が閾値以下のときにはライトスルー運用を、前記ダーティデータの許容量が閾値より大きいときにはライトバック運用を行なうことが、提案されている。
【０００４】
また、制御ルールがフレキシブルに拡張する機能を有する電池管理システムチップにおいて、中央処理装置（ＣＰＵ）、ＲＯＭ及びＲＯＭ＿ＲＡＭデコーダ、ＳＲＡＭが内蔵された電池管理チップに、電池管理のアプリケーションプログラムが格納された不揮発性メモリを外付けし、本体の電源投入又はリセット時に不揮発性メモリの内容をＳＲＡＭに書き込み、本体がシャットダウンする前に、ＳＲＡＭの内容を不揮発性メモリに戻され再格納することが、提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−３１３４０７号公報
【特許文献２】特開２００８−２０４９３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
キャッシュに書き込まれたダーティデータは、その時点では、まだ不揮発性記憶装置であるディスクに書き込まれていない。ディスクへ書き込み処理を行う前に、停電などが発生してキャッシュへの電源供給が停止すると、ダーティデータは、消失してしまう。このため、キャッシュに記憶されたダーティデータを保護する必要がある。
【０００７】
そこで、ダーティデータの保護のため、ダーティデータのバックアップ処理が実行される。例えば、停電発生時にはバックアップ電源によりキャッシュに電力を供給して、数十時間データを格納する方法が採用される。又は、ディスクアレイ装置を一部だけ稼動させて、ダーティデータを不揮発デバイスへ強制的に書き込む方法が採用される。
【０００８】
しかし、ダーティデータ量の許容量は、バックアップ電源によりその時点で実際に保護できるダーティデータ量である。バックアップ電源の電力供給能力は、例えば経年劣化や充電状態等に起因して徐々に低下する。一方、許容量の閾値は固定されている。このため、バックアップ電源の電力供給能力が閾値以下になると、ディスクアレイ装置は、それまでのライトバック状態からライトスルー状態へ移行しなければならない。
【０００９】
この移行により、ディスクアレイ装置は、ホストコンピュータからデータの書き込み要求を受信すると、当該データをディスクに書き込んだ後で無ければ、ホストコンピュータへ処理完了を通知できず、データ処理時間が長くなる。また、ディスクアレイ装置は、バックアップ電源の電力供給能力が閾値より大きくなるまではライトスルー状態で動作しなければならず、データ処理時間が長くなる期間が長時間に及んでしまう。
【００１０】
本発明は、バックアップ電源の電力供給能力に応じて、キャッシュメモリにおけるダーティデータの書き込みの禁止領域を動的に割り当てるディスクアレイ装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
開示されるディスクアレイ装置の制御方法は、ディスクアレイと、キャッシュメモリと、停電時にキャッシュメモリに電力を供給するバッテリと、キャッシュメモリにデータを格納するキャッシュコントローラとを含むディスクアレイ装置の制御方法である。前記ディスクアレイ装置の制御方法は、取得ステップと、設定ステップと、格納ステップとを含む。取得ステップにおいて、キャッシュコントローラが、予め定められた更新周期で、バッテリの電力供給能力を示す電力供給能力情報を取得する。設定ステップにおいて、キャッシュコントローラが、電力供給能力情報の取得の都度に、電力供給能力情報に応じて、前記キャッシュメモリにおける、ディスクアレイへ書き込むべきライトデータであってディスクアレイに書き込まれていないデータであるダーティデータの書き込みが許容された許容領域のサイズと、ダーティデータの書き込みが禁止された禁止領域のサイズとを定め、複数のメモリバンクの各々について、禁止領域又は許容領域であることを示す識別情報を、許容領域の数が電力供給能力情報に応じて定まる数となるように、キャッシュテーブルに設定する。格納ステップにおいて、キャッシュコントローラが、キャッシュテーブルに基づいて、禁止領域とされたメモリバンクにディスクアレイから読み出したリードデータのみを格納し、許容領域とされたメモリバンクにダーティデータ又はリードデータを格納する。
【発明の効果】
【００１２】
開示されるディスクアレイ装置の制御方法によれば、経年劣化や充電状態等に起因するバックアップ電源の電力供給能力に応じて、キャッシュメモリにおいて、メモリバンクを単位としてダーティデータの書き込みを禁止する禁止領域とダーティデータの書き込みを許容する許容領域とを設定することにより、動的にダーティデータ禁止領域を割り当てることができ、これにより、ディスクアレイ装置がライトスルー状態で動作することにより書き込み速度性能が低下する期間を短縮することができる。
【図面の簡単な説明】
【００１３】
【図１】ディスクアレイ装置の構成を示す図である。
【図２】キャッシュコントローラの構成を示す図である。
【図３】キャッシュテーブル及びバッテリテーブルの一例を示す図である。
【図４】キャッシュ制御処理フローを示す図である。
【図５】キャッシュ制御処理フローを示す図である。
【図６】キャッシュ制御処理フローを示す図である。
【図７】キャッシュ制御処理フローを示す図である。
【図８】キャッシュメモリ上のローカル領域へのデータ格納を説明する図である。
【図９】キャッシュメモリ上のローカル領域へのデータ格納を説明する図である。
【発明を実施するための形態】
【００１４】
（第１の実施態様）
図１は、ディスクアレイ装置の構成を示す図である。
【００１５】
ディスクアレイ装置１は、２個のホストアダプタ１１、２個のキャッシュコントローラ１２、２個のディスクアダプタ１４、２個のスイッチ１５、２個のディスクアレイ１６、キャッシュ間信号線１７、２個の監視コントローラ１８、複数のバッテリユニット１９を含む。２個のキャッシュコントローラ１２は、各々、一時的にデータを格納するキャッシュメモリ１３を備える。
【００１６】
ディスクアレイ装置１は、２個のホストコンピュータ２と接続される。ディスクアレイ装置１は、ホストコンピュータ２からの書き込み要求に応じて、ホストコンピュータ２からデータを受信して、ディスクアレイ１６に書き込む。また、ディスクアレイ装置１は、ホストコンピュータ２からの読み出し要求に応じて、ディスクアレイ１６からデータを読み出して、ホストコンピュータ２へ送信する。
【００１７】
キャッシュコントローラ１２は、ホストコンピュータ２に対応して設けられる。キャッシュコントローラ１２に対応して、ホストアダプタ１１、キャッシュメモリ１３、ディスクアダプタ１４、スイッチ１５、ディスクアレイ１６、監視コントローラ１８が設けられる。
【００１８】
従って、このコンピュータシステム又はディスクアレイ装置１は、データの信頼性の向上のために、データの二重化、換言すれば、ミラーリングを行う。２個のホストコンピュータ２を区別する場合には、例えばホストコンピュータＡ、Ｂ等と表す。ホストコンピュータＡに対応するキャッシュコントローラ１２をキャッシュコントローラＡと表す。ホストアダプタ１１、キャッシュメモリ１３、ディスクアダプタ１４、スイッチ１５、バッテリユニット１９についても同様である。
【００１９】
ホストアダプタ１１は、ホストコンピュータ２とキャッシュコントローラ１２との間に接続され、ホストコンピュータ２とディスクアレイ装置１との間のデータ転送を制御する。例えば、ホストアダプタ１１は、ホストコンピュータ２から書き込み要求とライトデータとを受信して、キャッシュコントローラ１２に書込み要求を転送する。「ライトデータ」は、ディスクアレイ１６に書き込むべきデータである。また、ホストアダプタ１１は、ホストコンピュータ２から読み出し要求を受信して、キャッシュコントローラ１２に読み出し要求を転送する。この後、ホストアダプタ１１は、キャッシュコントローラ１２からリードデータを受信して、読み出し要求に対する応答として、ホストコンピュータ２に転送する。「リードデータ」は、ディスクアレイ１６から読み出されたデータである。
【００２０】
キャッシュコントローラ１２は、ホストコンピュータ２から受信した書き込み要求に従って、キャッシュメモリ１３又はディスクアレイ１６へのデータの書き込みを制御する。また、キャッシュコントローラ１２は、ホストコンピュータ２から受信した読み出し要求に従って、キャッシュメモリ１３又はディスクアレイ１６からのデータの読み出しを制御する。キャッシュコントローラＡとキャッシュコントローラＢとは、キャッシュ間信号線１７により相互に接続される。
【００２１】
キャッシュメモリ１３は、ディスクアレイ１６よりも十分に高速な揮発性メモリ、例えばＤＲＡＭ（Dynamic Random Access Memory）のような半導体メモリである。キャッシュメモリ１３は、キャッシュコントローラ１２に接続される。キャッシュメモリ１３には、ホストコンピュータ２から転送されたライトデータ、又は、ディスクアレイ１６から読み出されたリードデータが、一時的に格納される。ここで、キャッシュメモリ１３に書き込まれたライトデータであって、未だディスクアレイ１６へ書き込まれていないライトデータを、「ダーティデータ」と言う。キャッシュメモリ１３は、ミラー領域１３１とローカル領域１３２とを含む。ミラー領域１３１とローカル領域１３２については図２を参照して後述する。
【００２２】
一方、ディスクアレイ１６は、高速なキャッシュメモリ１３よりも低速な不揮発性メモリであり、複数の磁気ディスク装置を含む。ディスクアレイ１６は、スイッチ１５及びディスクアダプタ１４を介して、キャッシュコントローラ１２に接続される。
【００２３】
キャッシュコントローラ１２は、「ライトバック状態」で動作中に書き込み要求とライトデータとを受信した場合、ライトデータをキャッシュメモリ１３に書き込み、その後、書込み要求の転送元であるホストアダプタ１１に書き込み完了を通知する。この通知を受信したホストアダプタ１１は、書込み要求の要求元であるホストコンピュータ２に書き込みの完了を通知する。この後、キャッシュメモリ１３に格納されたライトデータ、換言すれば、ダーティデータは、キャッシュコントローラ１２により、ディスクアダプタ１４を介して、ディスクアレイ１６に書き込まれる。
【００２４】
キャッシュコントローラ１２は、「ライトスルー状態」で動作中に書き込み要求とライトデータとを受信した場合、ライトデータを一旦キャッシュメモリ１３に書き込み、その後、キャッシュメモリ１３に書き込んだライトデータを読み出してディスクアレイ１６に書き込み、更にその後、書込み要求の転送元であるホストアダプタ１１に書き込み完了を通知する。この通知を受信したホストアダプタ１１は、書込み要求の要求元であるホストコンピュータ２に書き込みの完了を通知する。
【００２５】
キャッシュコントローラ１２は、状態情報を生成して保持する。状態情報は、ディスクアレイ装置１の動作モードを示し、具体的には、ライトデータの書込み処理の状態が「ライトバック状態」であるか「ライトスルー状態」であるかを示す。例えば、通常バッテリユニット１９が充電されているので、状態情報は、例えばディスクアレイ装置１の初期化処理において「ライトバック状態」とされる。状態情報は、後述するダーティデータ制限フラグとは別に設けられる。
【００２６】
キャッシュコントローラＡ及びＢは、各々、独立して状態情報を生成する。例えば、キャッシュコントローラＡは、状態情報を「ライトスルー状態」から「ライトバック状態」に変更した場合、キャッシュ間信号線１７を介して、状態情報の変更をキャッシュコントローラＢに通知する。また、キャッシュコントローラＢは、状態情報を「ライトスルー状態」から「ライトバック状態」に変更した場合、キャッシュ間信号線１７を介して、状態情報の変更をキャッシュコントローラＡに通知する。これにより、キャッシュコントローラＡ及びＢにおける状態情報が一致させられる。
【００２７】
キャッシュコントローラ１２は、読み出し要求を受信した場合、要求されたデータがキャッシュメモリ１３に存在するかキャッシュメモリ１３を検索する。具体的には、キャッシュコントローラ１２は、キャッシュメモリ１３にどのようなデータが記憶されているかを管理するリストを検索する。要求されたデータ（リードデータ）がキャッシュメモリ１３に存在する場合、キャッシュコントローラ１２は、要求されたリードデータをキャッシュメモリ１３から読み出して、ホストアダプタ１１に送信する。ホストアダプタ１１は、受信したリードデータをホストコンピュータ２に送信する。
【００２８】
要求されたデータがキャッシュメモリ１３に存在しない場合、キャッシュコントローラ１２は、要求されたデータをディスクアレイ１６から直接読み出して、ホストアダプタ１１に送信する。ホストアダプタ１１は、受信したデータをホストコンピュータ２に送信する。なお、同一データを再度読み出す可能性があるので、ディスクアレイ１６から読み出したデータを一旦キャッシュメモリ１３に格納してから、ホストコンピュータ２に送信するようにしても良い。
【００２９】
ディスクアダプタ１４は、キャッシュコントローラ１２とスイッチ１５との間に設けられ、キャッシュコントローラ１２とスイッチ１５との間のデータ転送を制御する。例えば、ディスクアダプタ１４は、キャッシュコントローラ１２から書き込み命令とダーティデータ又はライトデータとを受信して、スイッチ１５に転送する。書き込み命令は、キャッシュコントローラ１２により書き込み要求に基づいて生成される。また、ディスクアダプタ１４は、キャッシュコントローラ１２から読み出し命令を受信して、スイッチ１５に転送する。この後、ディスクアダプタ１４は、スイッチ１５からリードデータを受信して、読み出し命令に対する応答として、キャッシュコントローラ１２に転送する。読み出し命令は、キャッシュコントローラ１２により読み出し要求に基づいて生成される。
【００３０】
スイッチ１５は、書き込み命令を受信した場合、ディスクアレイ１６の複数のディスク装置の中の書き込み対象のディスク装置に、書き込み命令と受信したダーティデータ又はライトデータとを転送する。また、スイッチ１５は、読み出し命令を受信した場合、ディスクアレイ１６の複数のディスク装置の中の読み出し対象のディスク装置に読み出し命令を転送し、読出し対象のディスク装置から読み出されたデータ（リードデータ）を、ディスクアダプタ１４を介して、キャッシュコントローラ１２に転送する。
【００３１】
前述したように、キャッシュコントローラＡとキャッシュコントローラＢとは相互に接続され、例えば、キャッシュメモリＡの後述するローカル領域１３２に格納されたデータが、キャッシュメモリＢにおける後述するミラー領域１３１へコピーされる。換言すれば、キャッシュメモリＡのローカル領域１３２に格納されたデータとキャッシュメモリＢのミラー領域１３１に格納されたデータとがミラーリングされる。
【００３２】
例えば、キャッシュコントローラＡは、ダーティデータについてホストアダプタＡに書き込み完了を通知した後、当該ダーティデータのコピーをキャッシュコントローラＢに送信する。キャッシュコントローラＢは、受信したダーティデータのコピーをキャッシュメモリＢのミラー領域に格納する。また、キャッシュコントローラＡは、リードデータについてキャッシュメモリＡに格納した後、当該リードデータのコピーをキャッシュコントローラＢに送信する。キャッシュコントローラＢは、受信したリードのコピーをキャッシュメモリＢのミラー領域に格納する。キャッシュコントローラＢからキャッシュコントローラＡに対しても、同様にデータ転送が行われる。
【００３３】
なお、ディスクアレイ１６においても、データが二重化されるようにしても良い。このために、ディスクアダプタ１４は、２個のスイッチ１５を介して、２個のディスクアレイ１６と接続される。この場合、例えば、ディスクアダプタＡは、キャッシュコントローラＡから書き込み命令とダーティデータ又はライトデータとを受信して、スイッチＡ及びスイッチＢの双方に転送する。これにより、当該ダーティデータ又はライトデータは、ディスクアレイＡ及びディスクアレイＢの双方に書き込まれる。従って、例えば、キャッシュメモリＡのライトデータがディスクアレイＡ及びＢに格納され、かつ、キャッシュメモリＡのライトデータのコピーであるキャッシュメモリＢのデータがディスクアレイＡ及びＢに格納される。従って、データは４重化される。
【００３４】
２個の監視コントローラ１８は、各々、複数のバッテリユニット１９の電力供給能力を監視する。監視コントローラ１８は、例えば、キャッシュコントローラ１２の要求に応じて、監視したバッテリユニット１９の電力供給能力を通知する。また、監視コントローラ１８は、キャッシュコントローラ１２からの指示に基づいて、バッテリユニット１９からキャッシュメモリ１３へのバックアップ電源、換言すれば、バッテリからの電力の供給を制御する。
【００３５】
バッテリユニット１９は、例えば鉛蓄電池等のバッテリであり、ディスクアレイ装置１に複数設けられる。バッテリユニット１９は、通常時には主電源により充電され、主電源が停電した場合には、例えば２個のキャッシュコントローラ１２の双方及び２個のキャッシュメモリ１３の双方にバックアップ電源から電力を供給する。ホストアダプタ１１、ディスクアダプタ１４、スイッチ１５、ディスクアレイ１６、監視コントローラ１８のバックアップ電源は、別に設けられる。
【００３６】
なお、バッテリユニット１９は、１個であってもよく、ディスクアレイ装置１の内部に直接設けられなくても良い。また、バッテリユニット１９が、主電源が停電した場合において、キャッシュメモリ１３以外に、ホストアダプタ１１、キャッシュコントローラ１２、ディスクアダプタ１４、スイッチ１５、ディスクアレイ１６、監視コントローラ１８に、バックアップ電源から電力を供給するようにしても良い。
【００３７】
図２は、図１のディスクアレイ装置に含まれるキャッシュメモリ及びキャッシュコントローラの構成を示す図である。なお、図２は、キャッシュメモリＡ及びキャッシュコントローラＡについて示すが、キャッシュメモリＢはキャッシュメモリＡと同様の構成を備え、キャッシュコントローラＢはキャッシュコントローラＡと同様の構成を備える。
【００３８】
キャッシュメモリ１３は、ミラー領域１３１と、ローカル領域１３２とを含む。ミラー領域１３１には、ローカル領域１３２に格納されたデータのコピー、換言すればミラーリングされたデータ、が格納される。ローカル領域１３２には、ダーティデータ及びリードデータが格納される。例えば、キャッシュメモリＡのローカル領域Ａに格納されたデータが、キャッシュメモリＢのミラー領域にコピーされる。キャッシュメモリＡのミラー領域Ａに格納されたデータは、キャッシュメモリＢのローカル領域に格納されたデータのコピーである。
【００３９】
キャッシュコントローラ１２Ａは、メモリコントローラ１２１、キャッシュテーブル１２２、テーブル管理部１２３、バッテリテーブル１２４を含む。
【００４０】
メモリコントローラ１２１は、キャッシュコントローラ１２の全体を制御する。具体的には、メモリコントローラ１２１は、キャッシュコントローラ１２が実行する処理として前述した処理、換言すれば、ホストアダプタ１１との通信、キャッシュメモリ１３の制御、状態情報の生成と保持、ディスクアダプタ１４との通信、他方のキャッシュコントローラ１２との間の通信を実行する。
【００４１】
キャッシュメモリ１３の制御において、メモリコントローラ１２１は、キャッシュメモリ１３Ａをミラー領域１３１とローカル領域１３２とに２分割して管理する。換言すれば、ミラー領域１３１のサイズとローカル領域１３２のサイズは等しい。これは、前述したように、ローカル領域１３２の全てのデータを、ミラー領域１３１にコピーできるようにするためである。更に、メモリコントローラ１２１は、ローカル領域１３２を、複数のメモリバンク１３３に細かく分割して管理する。なお、図２においては、図示の便宜上、１個のメモリバンクのみについて、斜線を施し符号１３３を付す。
【００４２】
例えば、キャッシュメモリ１３のメモリ容量が３２ＧＢ（ギガバイト）である場合、ミラー領域１３１及びローカル領域１３２は、各々、１６ＧＢとされる。また、１６ＧＢのローカル領域１３２は、例えば３２個のメモリバンク１３３に分割される。この場合、１個のメモリバンク１３３のサイズは、５１２ＭＢ（メガバイト）である。
【００４３】
メモリコントローラ１２１は、メモリバンク１３３毎にメモリバンクＮｏ（メモリバンク番号）を割り当てる。メモリバンクＮｏは、メモリバンク１３３毎に一意に定められた識別番号である。例えば、図３（Ｂ）に示すように、３２個のメモリバンク１３３に対して、＃１〜＃３２のメモリバンクＮｏが付与される。
【００４４】
ミラー領域１３１は、ローカル領域１３２とは異なり、メモリバンクに細分化されない。ミラー領域１３１においては、ローカル領域１３２に格納されたデータのコピーが、例えば、先頭から順に格納される。
【００４５】
メモリコントローラ１２１は、メモリバンクＮｏを用いてキャッシュメモリ１３を制御する。このために、メモリコントローラ１２１は、キャッシュテーブル１２２を参照する。キャッシュテーブル１２２は、ディスクアレイ装置１の起動時にメモリコントローラ１２１により用意され、テーブル管理部１２３により更新される。なお、テーブル管理部１２３が、メモリコントローラ１２１からメモリバンクＮｏの通知を受けて、キャッシュテーブル１２２を用意するようにしても良い。また、メモリコントローラ１２１が、テーブル管理部１２３からバッテリの電力供給能力を示す電力供給能力情報の通知を受けて、キャッシュテーブル１２２を更新するようにしても良い。
【００４６】
テーブル管理部１２３は、バッテリテーブル１２４を参照して、キャッシュテーブル１２２を更新する。バッテリテーブル１２４は、ディスクアレイ装置１の起動時にテーブル管理部２３により用意され、監視コントローラ１８により更新される。バッテリユニット１９の数は、テーブル管理部１２３に予め設定される。なお、テーブル管理部１２３が、監視コントローラ１８から電力供給能力情報の通知を受けて、バッテリテーブル１２４を更新するようにしても良い。
【００４７】
図３（Ａ）は、バッテリテーブル１２４の一例を示す。
【００４８】
バッテリテーブル１２４は、バッテリユニット１９毎に、電力供給能力情報を含む。電力供給能力情報は、例えば、充電量Ｘ（％）、劣化係数Ｙを含む。充電量Ｘ（％）は、バッテリユニット１９の充電の程度を示す。劣化係数Ｙは、バッテリの経年劣化の程度を示す。
【００４９】
充電量Ｘは、例えば、バッテリユニット１９が完全に充電された状態を「１００％」、全く充電されていない状態を「０％」として、％により表される。監視コントローラ１８は、バッテリユニット１９毎に、その出力電圧を測定し、これに基づいて充電量Ｘを算出して、バッテリテーブル１２４の充電量Ｘを更新する。監視コントローラ１８は、バッテリユニット１９の出力電圧を測定する手段を備える。
【００５０】
劣化係数Ｙは、バッテリユニット１９が全く劣化していない状態を「１」、完全に劣化した状態を「０」として、表される。劣化係数Ｙは、例えば、バッテリユニット１９の製造年月日に基づいて決定される。監視コントローラ１８は、バッテリユニット１９の製造年月日と現在の年月日とを比較して製造日からの経過期間を算出し、これに基づいて劣化係数Ｙを算出して、バッテリテーブル１２４の劣化係数Ｙを更新する。製造年月日は、例えば、ディスクアレイ装置１の出荷時に、オペレータにより、監視コントローラ１８に入力され、保持される。現在の年月日は、例えば、キャッシュコントローラ１２の備えるＣＰＵのＣＰＵタイマの値であり、キャッシュコントローラ１２から与えられる。経過期間を劣化係数Ｙに変換するための変換テーブルは、予め監視コントローラ１８に与えられる。
【００５１】
なお、実際には、劣化係数Ｙの値としては、後述する図５に示すように、「１」〜「０．３」が用いられる。バッテリユニット１９の製造年月日から長期間が経過すると、劣化係数Ｙの値が、例えば「０．２」となる場合がある。この場合、充電量Ｘの値が大きくても、後述するように、Ｘ×Ｙの平均値に基づいて定まるバッテリユニット１９の電力供給能力が小さくなってしまう。そこで、劣化係数Ｙの値として「０．２」以下の値は用いられない。劣化係数Ｙの値「０．３」は、例えば、バッテリユニット１９の交換時期に対応すると考えることができる。
【００５２】
充電量Ｘ及び劣化係数Ｙの更新は、予め定められた更新周期で周期的に実行される。更新周期は、充電量Ｘの急激な変化に対応するために、例えば数分とされる。更新周期は、例えば、数秒、数１０分又は数時間であっても良い。なお、劣化係数Ｙの変化は予め知ることができるので、前述の更新周期よりも長い周期、例えば、数日、数週間毎又は数ヶ月で更新するようにしても良い。また、劣化係数Ｙは、前記経過期間に加えて、バッテリユニット１９の周囲の温度、周囲の湿度、放電回数等に基づいて、決定するようにしても良い。周囲の温度は、監視コントローラ１８の備える温度センサにより測定され、監視コントローラ１８に保持される。周囲の湿度は、監視コントローラ１８の備える湿度センサにより測定され、監視コントローラ１８に保持される。放電回数は、放電の都度に監視コントローラ１８によりカウントされ保持される。
【００５３】
テーブル管理部１２３は、前述の更新周期で、電力供給能力情報を取得する。具体的には、テーブル管理部１２３は、バッテリテーブル１２４を参照してバッテリチェックを実行する。具体的には、テーブル管理部１２３は、バッテリユニット１９毎に、充電量Ｘ％、劣化係数ＹについてＸ×Ｙを算出し、更に、複数のバッテリユニット１９についての値Ｘ×Ｙの平均値を算出する。この平均値が、バッテリユニット１９の電力供給能力を示す電力供給能力情報である。バッテリチェックは、例えば前述の更新周期で周期的に実行されるので、バッテリユニット１９の電力供給能力の急激な変化に対応することができる。
【００５４】
テーブル管理部１２３は、バッテリチェックの結果である電力供給能力情報に基づいてキャッシュテーブル１２２を更新し、更に、この更新に続けて、キャッシュメモリ１３のローカル領域１３２においてメモリバンク１３３毎にダーティデータの書き込みを制限する。キャッシュテーブル１２２の更新は、例えば前述の更新周期で周期的に実行される。これにより、バッテリユニット１９の電力供給能力の急激な変化に対応して、ダーティデータの書き込みを制限し、ライトデータが失われることを回避することができる。なお、キャッシュテーブル１２２の更新は、更新周期以外の周期で実行するようにしても良い。また、キャッシュテーブル１２２の更新とダーティデータの書き込みの制限とを、異なる周期で実行するようにしても良い。
【００５５】
図３（Ｂ）は、キャッシュテーブル１２２の一例を示す。
【００５６】
キャッシュテーブル１２２は、メモリバンク１３３毎に、換言すれば、メモリバンクＮｏ毎に、ダーティデータ制限フラグ、ダーティデータ量（ＭＢ；メガバイト）の情報を含む。
【００５７】
ダーティデータ制限フラグは、複数のメモリバンク１３３の各々について、ダーティデータの書き込みを許可する許容領域であるか、ダーティデータの書き込みを禁止する禁止領域であるかを示す識別情報である。例えば、図３（Ｂ）に示すように、ダーティデータの書き込みを禁止するメモリバンク＃３２にはダーティデータ制限フラグとして「１」が設定され、ダーティデータの書き込みを許可するメモリバンク＃１、＃２にはダーティデータ制限フラグとして「０」が設定される。
【００５８】
ダーティデータ制限フラグ「１」を有するメモリバンク１３３は、禁止領域であり、ダーティデータの書き込みを禁止される。従って、メモリコントローラ１２１は、キャッシュテーブル１２２に基づいて、ダーティデータ制限フラグ「１」を有するメモリバンク１３３に、ディスクアレイ１６から読み出したリードデータのみを書き込む。これにより、ダーティデータ制限フラグ「１」を有するメモリバンク１３３には、ダーティデータが存在せず、リードデータが存在するのみである。
【００５９】
ダーティデータ制限フラグ「０」を有するメモリバンク１３３は、ダーティデータの書き込みが許容された許容領域である。従って、メモリコントローラ１２１は、キャッシュテーブル１２２に基づいて、ダーティデータ制限フラグ「０」を有するメモリバンク１３３に、リードデータ及びダーティデータを書き込む。これにより、ダーティデータ制限フラグ「０」を有するメモリバンク１３３には、リードデータの他に、ダーティデータが存在する可能性がある。
【００６０】
以上から、ローカル領域１３２に格納されるダーティデータ量は、最大で、ダーティデータ制限フラグ「０」を有するメモリバンク１３３の合計のサイズＳに等しい。１個のキャッシュメモリ１３に格納されるダーティデータ量は、ミラー領域１３１に存在する他方のキャッシュメモリ１３のローカル領域１３２のデータのコピーを考慮して、最大で、前記サイズＳの２倍のサイズ２Ｓである。２個のキャッシュメモリ１３に格納されるダーティデータ量は、最大で、前記サイズＳの４倍のサイズ４Ｓである。
【００６１】
そこで、主電源の停電時において、バッテリユニット１９からの放電によりバックアップ電源から電力が供給されている期間に、前記サイズ４Ｓのデータをディスクアレイ１６に転送することができれば良い。換言すれば、前記サイズ４Ｓのデータをディスクアレイ１６に転送することができれば、全てのダーティデータをバックアップする、換言すれば、全てのダーティデータの退避を保証することができる。一方、キャッシュメモリ１３からディスクアレイ１６へのデータ転送の時間は、経験的に知ることができる。また、バッテリユニット１９からの有効なレベルの放電が持続する時間も、その時点でのバッテリユニット１９の電力供給能力に基づいて、知ることができる。
【００６２】
従って、ダーティデータ制限フラグ「１」の数は、その時点でのバッテリユニット１９の電力供給能力に基づいて、前記サイズ４Ｓのデータが、ディスクアレイ１６に転送することができるデータサイズ以下となるように設定される。換言すれば、メモリコントローラ１２１は、許容領域の数、従って、禁止領域の数が、バッテリユニット１９の電力供給能力に応じて定まる数となるように、キャッシュテーブル１２２に設定する。
【００６３】
なお、キャッシュメモリ１３の全容量は定まっているので、許容領域の数を定めれば、結果的に、禁止領域の数も定まる。従って、許容領域及び禁止領域のサイズを決定することには、許容領域及び禁止領域の一方のサイズを定め、これにより、結果的に許容領域及び禁止領域の他方のサイズが定まる場合を含む。
【００６４】
ダーティデータ制限フラグ「１」は、例えば、メモリバンク１３３のメモリバンクＮｏの降順に、メモリバンクＮｏ＃３２から順に設定される。また、ダーティデータ制限フラグ「１」を、メモリバンクＮｏの昇順に設定するようにしても良く、メモリバンクＮｏとは無関係にランダムに設定するようにしても良い。
【００６５】
なお、２個のキャッシュメモリ１３について、ダーティデータ制限フラグ「１」の数は等しくされ、また、ダーティデータ制限フラグ「１」が設定されるメモリバンク１３３のメモリバンクＮｏも等しくされる。これにより、ダーティデータの退避の保証のための処理が煩雑になることを回避することができる。例えば、２個のメモリコントローラ１２１の一方がダーティデータ制限フラグ「１」の数及び設定されるメモリバンク１３３を変更した場合、これらの結果が他方のメモリコントローラ１２１にキャッシュ間信号線１７を介して送信される。これらの結果に従って、他方のメモリコントローラ１２１は、ダーティデータ制限フラグ「１」の数及び設定されるメモリバンク１３３を変更する。
【００６６】
ダーティデータ量は、メモリバンク１３３に書き込まれたダーティデータの量を示す。例えば、メモリバンク＃１に５１２ＭＢのダーティデータが書き込まれた場合、図３（Ｂ）に示すように、メモリバンク＃１のダーティデータ量が「５１２（ＭＢ）」に更新される。
【００６７】
ここで、キャッシュテーブル１２２において、ダーティデータ制限フラグが「１」のメモリバンク１３３であっても、そのダーティデータ量が「０」でない場合がある。このようなメモリバンク１３３を、書き込みを禁止するという制限を越えてダーティデータが格納されているので、「ダーティデータ制限値を越えるメモリバンク１３３」ということとする。また、ダーティデータ制限フラグ「０」を有するメモリバンク１３３の数を、「ダーティデータ制限値」ということとする。
【００６８】
なお、ダーティデータ制限フラグ「０」を有するメモリバンク１３３において、そのダーティデータ量が「０」でない場合、実際には、ダーティデータ制限値を越えないことになる。従って、ダーティデータ制限値を越えるメモリバンク１３３は、ダーティデータ制限値を越える可能性のあるメモリバンク１３３と言うことができる。
【００６９】
ダーティデータ制限値を越えるメモリバンク１３３は、ダーティデータ制限フラグが「０」のメモリバンク１３３にダーティデータが書き込まれた後にダーティデータ制限フラグが「１」とされた場合に、発生する。メモリコントローラ１２１は、キャッシュテーブル１２２を参照して、キャッシュテーブル１２２にダーティデータ制限値を越えるメモリバンク１３３が存在する場合、ダーティデータ制限値を越えるメモリバンク１３３のダーティデータをディスクアレイ１６に転送する。
【００７０】
例えば、最初に、テーブル管理部１２３により、ダーティデータ制限フラグが「０」から「１」に変更される。この後、メモリコントローラ１２１により、ダーティデータ制限フラグが「０」から「１」に変更されたメモリバンク１３３のダーティデータが、ディスクアダプタ１４及びスイッチ１５を介して、ディスクアレイ１６に転送され、書き込まれる（退避される）。この書き込みは、ディスクアレイ１６へのアクセスが可能となった時点で、他のメモリバンク１３３に格納されたダーティデータ、換言すれば、ダーティデータ制限フラグが「０」のメモリバンク１３３のダーティデータの書き込みよりも優先して実行される。これにより、ダーティデータが失われる可能性を低減することができる。また、ダーティデータ制限フラグが「０」から「１」に変更されるであろうメモリバンク１３３に、更に、ダーティデータが書き込まれることを回避することができる。
【００７１】
テーブル管理部１２３は、バッテリチェックの結果である電力供給能力情報の取得の都度に、電力供給能力情報に応じて、キャッシュテーブル１２２において、メモリバンク１３３の各々について、ダーティデータ制限フラグを設定する。換言すれば、テーブル管理部１２３は、電力供給能力情報に応じて、メモリバンク１３３を単位として、ダーティデータの書き込みを禁止する禁止領域と、ダーティデータの書き込みを許容する許容領域とを設定する。これにより、キャッシュメモリ１３のローカル領域１３２における、禁止領域と許容領域との比率が定まる。禁止領域のサイズ、許容領域のサイズ、禁止領域と許容領域の比率は、経験的に定めることができ、電力供給能力に応じて予め定められる。
【００７２】
なお、前述したように、ミラー領域１３１はメモリバンクに細分化されないので、ミラー領域１３１においては、禁止領域と許容領域との比率が定められることはない。
【００７３】
例えば、テーブル管理部１２３は、禁止領域と許容領域との比率が電力供給能力に応じて予め定められた比率となるように、ダーティデータ制限フラグを設定する。換言すれば、ダーティデータ制限フラグ「１」を有するメモリバンク１３３の数（従って、禁止領域のサイズ）と、ダーティデータ制限フラグ「０」を有するメモリバンク１３３の数（従って、許容領域のサイズ）とが、電力供給能力に応じて定められる。
【００７４】
メモリコントローラ１２１は、キャッシュメモリ１３にライトデータ、換言すれば、ダーティデータを書き込む場合、キャッシュテーブル１２２を参照する。そして、メモリコントローラ１２１は、ダーティデータ制限フラグが「０」であるメモリバンク１３３に、ダーティデータを書き込み、書き込んだダーティデータの量をキャッシュテーブル１２２における当該メモリバンクＮｏのダーティデータ量の値に加算する。これにより、メモリコントローラ１２１は、メモリバンク１３３毎に、書き込まれたダーティデータ量を管理する。
【００７５】
メモリコントローラ１２１は、主電源の停電時において、バッテリユニット１９を制御して、キャッシュコントローラ１２自体及びキャッシュメモリ１３へバッテリユニット１９から電力を供給する。これにより、メモリコントローラ１２１は、ダーティデータ制限フラグが「０」であるメモリバンク１３３に格納されたダーティデータを、ディスクアレイ１６に転送する。
【００７６】
なお、実際には、ダーティデータの転送のために、キャッシュメモリ１３においてダーティデータが格納されたアドレスを知る必要がある。このために、メモリコントローラ１２１は、キャッシュテーブル１２２とは別に、キャッシュメモリ管理テーブルを備え、ダーティデータ毎に、キャッシュメモリ１３においてダーティデータが書き込まれたアドレスを格納する。ダーティデータは、ディスクアレイ１６において、キャッシュコントローラ１２が使用する領域であるシステム領域内における予め定められたダーティデータの書込み領域に格納される。リードデータは、ディスクアレイ１６において、キャッシュコントローラ１２が使用する領域であるシステム領域内における予め定められたリードデータの書込み領域に格納される。なお、キャッシュテーブル１２２とキャッシュメモリ管理テーブルとを一体に設けるようにしても良い。
【００７７】
図４〜図６は、一体となってキャッシュ制御処理フローを示す図であり、図１に示すディスクアレイ装置１の起動時におけるキャッシュ制御処理を示す。
【００７８】
ディスクアレイ装置１の主電源、例えばＡＣ（交流）電源が投入されると、当該主電源からディスクアレイ装置１にＡＣ電力が供給（ＡＣ  Ｏｎ）され（ステップＳ１１）、これに応じて、ディスクアレイ装置１の内部電源装置を介して、バッテリユニット１９の充電が開始される（ステップＳ１２）。
【００７９】
一方、ディスクアレイ装置１の主電源が投入されると、ディスクアレイ装置１はパワーオン（ＰｏｗｅｒＯｎ）状態となり（ステップＳ１３）、これに応じて、ディスクアレイ装置１が起動され、初期化処理を実行する。初期化処理において、例えば、メモリコントローラ１２１が、キャッシュメモリ１３のメモリ容量（例えば、３２ＧＢ）を認識し、また、キャッシュテーブル１２２とバッテリテーブル１２４とを生成し、状態情報を「ライトバック状態」とする。通常バッテリユニット１９は１００％に近い程度まで充電されているので、状態情報は、「ライトバック状態」とされる。なお、全く又は殆ど充電されていないバッテリユニット１９が用いられる場合、初期化処理において、状態情報を「ライトスルー状態」とするようにすれば良い。
【００８０】
初期化処理の後、メモリコントローラ１２１は、キャッシュメモリ１３のメモリ容量を、ローカル領域１３２とミラー領域１３１に対して、５０％（例えば、１６ＧＢ）ずつ割当てる（ステップＳ１４）。更に、メモリコントローラ１２１は、キャッシュメモリ１３のローカル領域１３２を、複数のメモリバンク１３３（例えば、５１２ＭＢ）に細分化する（ステップＳ１５）。換言すれば、キャッシュコントローラ１２は、ローカル領域１３２を３２個のメモリバンク１３３に分割して、３２個のメモリバンク１３３にメモリバンクＮｏ＃１〜＃３２を付与する。また、キャッシュテーブル１２２にメモリバンクＮｏを格納する。
【００８１】
以上のステップＳ１１〜Ｓ１５は、ディスクアレイ装置１の起動時に実行される処理である。一方、以下のステップＳ１６〜Ｓ１２０は、起動後のディスクアレイ装置１の運用時に繰り返し実行される処理である。
【００８２】
監視コントローラ１８は、バッテリユニット１９毎に、バッテリチェックを実行して、充電量Ｘ％及び劣化係数Ｙを求め、求めた充電量Ｘ％及び劣化係数Ｙを電力供給能力情報としてバッテリテーブル１２４に格納する（ステップＳ１６）。なお、ステップＳ１６は、例えば前述の更新周期である数分間隔で繰り返し実行される。
【００８３】
また、キャッシュコントローラ１２のテーブル管理部１２３は、バッテリテーブル１２４を参照して、複数のバッテリユニット１９についての充電量Ｘ％、劣化係数ＹについてＸ×Ｙを算出し、更に、その平均値を算出する。テーブル管理部１２３は、平均値をバッテリユニット１９の電力供給能力を示す電力供給能力情報として用いる。なお、以下の図５、図６を参照した説明において、「電力供給能力情報」を「バッテリチェック結果Ｘ×Ｙ」ということとする。
【００８４】
テーブル管理部１２３は、バッテリチェック結果Ｘ×Ｙが９０％以上であるか否かを判断する（ステップＳ１７）。バッテリチェック結果Ｘ×Ｙが９０％以上である場合（ステップＳ１７  Ｙｅｓ）、テーブル管理部１２３は、キャッシュテーブル１２２において、全ての、換言すれば、３２個のメモリバンク＃１〜＃３２のダーティデータ制限フラグを解除する、換言すれば、「０」とする（ステップＳ１８）。換言すれば、バッテリチェック結果Ｘ×Ｙの値が複数の閾値２０％〜９０％における最大の閾値９０％よりも大きい場合、３２個の（例えば、１６ＧＢの）メモリバンク１３３が、ダーティデータの書き込みを許容する許容領域に設定される。
【００８５】
なお、監視コントローラ１８が、ステップＳ１７を実行するようにしても良い。同様に、監視コントローラ１８が、後述するステップＳ１９、Ｓ１１２及びＳ１１５を実行するようにしても良い。
【００８６】
以上により、メモリコントローラ１２１は、ライトバック状態で、全ての、換言すれば、３２個のメモリバンク１３３にダーティデータを書き込むことができる。リードデータは、３２個のメモリバンク１３３に書き込むことができる。この場合、バッテリチェック結果Ｘ×Ｙが９０％以上である、換言すれば、バッテリユニット１９の電力供給能力が十分に大きいので、主電源が停電した場合、３２個のメモリバンク１３３に格納されたデータは、バッテリユニット１９からのバックアップ電源からの電力の供給期間内にディスクアレイ１６に退避することができる。以後、この状態でディスクアレイ装置１が運用され、ステップＳ１６が実行される。従って、状態情報は変更されない。
【００８７】
バッテリチェック結果Ｘ×Ｙが９０％以上でない場合（ステップＳ１７  Ｎｏ）、テーブル管理部１２３は、更に、バッテリチェック結果Ｘ×Ｙが６０％以上であるか否かを判断する（ステップＳ１９）。バッテリチェック結果Ｘ×Ｙが６０％以上である場合（ステップＳ１９  Ｙｅｓ）、テーブル管理部１２３は、例えば、メモリバンク＃１〜＃３２の６０％について、ダーティデータ制限フラグを「０」に設定することを決定し（ステップＳ１１０）、メモリバンク＃１〜＃３２の中の１９個のメモリバンク１３３のダーティデータ制限フラグを「０」に設定し、他の１３個のメモリバンク１３３のダーティデータ制限フラグを「１」に設定する（ステップＳ１１１）。換言すれば、１９個の（例えば、９．５ＧＢの）メモリバンク１３３が、ダーティデータの書き込みを許容する許容領域に設定される。
【００８８】
なお、ステップＳ１１１において、メモリコントローラ１２１は、キャッシュテーブル１２２を参照して、ダーティデータ制限フラグが「１」でダーティデータ量が「０」でないメモリバンク１３３、換言すれば、ダーティデータ制限値を越えるメモリバンク１３３が存在するか否かを判断する。ダーティデータ制限値を越えるメモリバンク１３３が存在する場合、メモリコントローラ１２１は、ステップＳ１１１の実行後に、ダーティデータ制限値を越えるメモリバンク１３３のダーティデータをディスクアレイ１６に書き込む。
【００８９】
以上により、メモリコントローラ１２１は、バッテリユニット１９の電力供給能力が低下したにも拘らず、ライトバック状態で、１９個のメモリバンク１３３にダーティデータを書き込むことができる。リードデータは、３２個のメモリバンク１３３に書き込むことができる。この場合、主電源が停電した場合、１９個のメモリバンク１３３に格納されたデータは、バッテリユニット１９からのバックアップ電源からの電力の供給期間内に退避することができる。換言すれば、バッテリユニット１９のバックアップ対象を１９個のメモリバンク１３３に制限することにより、ライトバック状態での動作を維持することができる。以後、この状態でディスクアレイ装置１が運用され、ステップＳ１６が実行される。従って、状態情報は変更されない。
【００９０】
バッテリチェック結果Ｘ×Ｙが６０％以上でない場合（ステップＳ１９  Ｎｏ）、テーブル管理部１２３は、更に、バッテリチェック結果Ｘ×Ｙが４０％以上であるか否かを判断する（ステップＳ１１２）。バッテリチェック結果Ｘ×Ｙが４０％以上である場合（ステップＳ１１２  Ｙｅｓ）、テーブル管理部１２３は、例えば、メモリバンク＃１〜＃３２の４０％について、ダーティデータ制限フラグを「０」に設定することを決定し（ステップＳ１１３）、メモリバンク＃１〜＃３２の中の１２個のメモリバンク１３３のダーティデータ制限フラグを「０」に設定し、他の２０個のメモリバンク１３３のダーティデータ制限フラグを「１」に設定する（ステップＳ１１４）。換言すれば、１２個の（例えば、６ＧＢの）メモリバンク１３３が、ダーティデータの書き込みを許容する許容領域に設定される。
【００９１】
なお、ステップＳ１１４において、メモリコントローラ１２１は、キャッシュテーブル１２２を参照して、ダーティデータ制限フラグが「１」でダーティデータ量が「０」でないメモリバンク１３３、換言すれば、ダーティデータ制限値を越えるメモリバンク１３３が存在するか否かを判断する。ダーティデータ制限値を越えるメモリバンク１３３が存在する場合、メモリコントローラ１２１は、ステップＳ１１４の実行後に、ダーティデータ制限値を越えるメモリバンク１３３のダーティデータをディスクアレイ１６に書き込む。
【００９２】
以上により、メモリコントローラ１２１は、バッテリユニット１９の電力供給能力が低下したにも拘らず、ライトバック状態で、１２個のメモリバンク１３３にダーティデータを書き込むことができる。リードデータは、３２個のメモリバンク１３３に書き込むことができる。この場合、主電源が停電した場合、１２個のメモリバンク１３３に格納されたデータは、バッテリユニット１９からのバックアップ電源からの電力の供給期間内に退避することができる。換言すれば、ダーティデータ制限フラグを用いてバッテリユニット１９のバックアップ対象を１２個のメモリバンク１３３に制限することにより、更に長くライトバック状態での動作を維持することができる。以後、この状態でディスクアレイ装置１が運用され、ステップＳ１６が実行される。従って、状態情報は変更されない。
【００９３】
なお、この場合、バックアップ対象である１２個のメモリバンク１３３のデータが全て退避される。従って、バックアップ対象である１２個のメモリバンク１３３において、書き込まれたデータがダーティデータであるかリードデータであるかの判別処理を実行する必要がない。
【００９４】
バッテリチェック結果Ｘ×Ｙが４０％以上でない場合（ステップＳ１１２  Ｎｏ）、テーブル管理部１２３は、更に、バッテリチェック結果Ｘ×Ｙが２０％以上であるか否かを判断する（ステップＳ１１５）。バッテリチェック結果Ｘ×Ｙが２０％以上である場合（ステップＳ１１５  Ｙｅｓ）、テーブル管理部１２３は、例えば、メモリバンク＃１〜＃３２の２０％について、ダーティデータ制限フラグを「０」に設定することを決定し（ステップＳ１１６）、メモリバンク＃１〜＃３２の中の６個のメモリバンク１３３のダーティデータ制限フラグを「０」に設定し、他の２６個のメモリバンク１３３のダーティデータ制限フラグを「１」に設定する（ステップＳ１１７）。換言すれば、バッテリチェック結果Ｘ×Ｙが複数の閾値９０％〜２０％における最少の閾値２０％よりも大きい場合、６個の（例えば、３ＧＢの）メモリバンク１３３が、ダーティデータの書き込みを許容する許容領域に設定される。これにより、バッテリチェック結果Ｘ×Ｙが複数の閾値９０％〜２０％における最少の閾値２０％よりも大きい場合、メモリコントローラ１２１は、ライトバック状態で動作することができる。
【００９５】
なお、ステップＳ１１７において、メモリコントローラ１２１は、キャッシュテーブル１２２を参照して、ダーティデータ制限フラグが「１」でダーティデータ量が「０」でないメモリバンク１３３、換言すれば、ダーティデータ制限値を越えるメモリバンク１３３が存在するか否かを判断する。ダーティデータ制限値を越えるメモリバンク１３３が存在する場合、メモリコントローラ１２１は、ステップＳ１１７の実行後に、ダーティデータ制限値を越えるメモリバンク１３３のダーティデータをディスクアレイ１６に書き込む。
【００９６】
以上により、メモリコントローラ１２１は、バッテリユニット１９の電力供給能力が低下したにも拘らず、ライトバック状態で、６個のメモリバンク１３３にダーティデータを書き込むことができる。リードデータは、３２個のメモリバンク１３３に書き込むことができる。この場合、主電源が停電した場合、６個のメモリバンク１３３に格納されたデータは、バッテリユニット１９からのバックアップ電源からの電力の供給期間内に退避することができる。換言すれば、バッテリユニット１９のバックアップ対象を６個のメモリバンク１３３に制限することにより、更に長くライトバック状態での動作を維持することができる。以後、この状態でディスクアレイ装置１が運用され、ステップＳ１６が実行される。従って、状態情報は変更されない。
【００９７】
一方、例えば、全く充電されていないバッテリユニット１９を充電してバッテリチェック結果Ｘ×Ｙが２０％以上に達した時点で、直ちに、それまでのライトスルー状態からライトバック状態に移行することができる。これにより、ディスクアレイ装置１がライトバック状態で動作する期間を、更に長くすることができる。
【００９８】
バッテリチェック結果Ｘ×Ｙが２０％以上でない場合（ステップＳ１１５  Ｎｏ）、換言すれば、バッテリチェック結果Ｘ×Ｙが２０％未満である場合、テーブル管理部１２３は、例えば、全てのメモリバンク１３３について、ダーティデータ制限フラグを「０」に設定しないことを決定し（ステップＳ１１８）、３２個のメモリバンク１３３のダーティデータ制限フラグを「１」に設定する（ステップＳ１１９）。換言すれば、バッテリチェック結果Ｘ×Ｙが複数の閾値９０％〜２０％における最少の閾値２０％よりも小さい場合、ダーティデータの書き込みを許容する許容領域に設定されるメモリバンク１３３が存在しない状態になる。これにより、ダーティデータの保護が保証されないので、後述するように、バッテリチェック結果Ｘ×Ｙが複数の閾値９０％〜２０％における最少の閾値２０％よりも小さい場合、メモリコントローラ１２１は、ライトスルー状態で動作することになる。
【００９９】
なお、ステップＳ１１９において、メモリコントローラ１２１は、キャッシュテーブル１２２を参照して、ダーティデータ制限フラグが「１」でダーティデータ量が「０」でないメモリバンク１３３、換言すれば、ダーティデータ制限値を越えるメモリバンク１３３が存在するか否かを判断する。ダーティデータ制限値を越えるメモリバンク１３３が存在する場合、メモリコントローラ１２１は、ステップＳ１１９の実行後に、ダーティデータ制限値を越えるメモリバンク１３３のダーティデータをディスクアレイ１６に書き込む。
【０１００】
以上により、メモリコントローラ１２１は、この時点で初めてそれまでのライトバック状態からライトスルー状態に移行する（ステップＳ１２０）。具体的には、メモリコントローラ１２１は、自己が保持する状態情報を「ライトバック状態」から「ライトスルー状態」に変更し、キャッシュ間信号線１７を介して、状態情報の変更を他方のメモリコントローラ１２１に通知する。以後、この状態でディスクアレイ装置１が運用され、ステップＳ１６が実行される。この結果、メモリコントローラ１２１は、ライトデータを、一旦キャッシュメモリ１３に書き込み、その後、キャッシュメモリ１３に書き込んだライトデータを読み出してディスクアレイ１６に書き込み、更にその後、書込み要求の転送元であるホストアダプタ１１に書き込み完了を通知する。
【０１０１】
なお、６０％、４０％及び２０％以外の値のバッテリチェック結果Ｘ×Ｙに基づいて、ダーティデータ制限フラグ「０」であるメモリバンク１３３の個数、換言すれば、ダーティデータの許容領域であるメモリバンク１３３の個数を決定するようにしても良い。メモリバンク１３３の個数を決定するために用いられるバッテリチェック結果Ｘ×Ｙの値は、３段階に限られない。換言すれば、ダーティデータ制限フラグ「０」であるメモリバンク１３３の個数は、３段階で動的に変更される以外に、更に多くの段階で動的に変更されるようにしても良い。また、バッテリチェック結果Ｘ×Ｙが何％の時に何個のメモリバンク１３３のダーティデータ制限フラグを「０」とするかは、種々変更することができる。
【０１０２】
（第２の実施態様）
図１に示すディスクアレイ装置１においては、ダーティデータ量がダーティデータ制限値を越える可能性のあるメモリバンク１３３、換言すれば、ダーティデータ制限フラグが「０」から「１」に変更されたメモリバンク１３３のダーティデータを、ディスクアレイ１６に転送する必要がある。この際、当該ダーティデータがディスクアレイ１６に転送される前に、主電源が停電すると、当該ダーティデータのいずれか一部が失われてしまう。従って、ダーティデータの退避の保証ができない。そこで、ダーティデータ制限値を越えるメモリバンク１３３のダーティデータが、図７に示すように、ディスクアレイ１６に転送されるまでの期間について、退避が保証される。
【０１０３】
図７は、他のキャッシュ制御処理フローを示す図であり、ディスクアレイ装置１の運用時における他のキャッシュ制御処理を示す。
【０１０４】
監視コントローラ１８及びテーブル管理部１２３は、前述の更新周期で、ディスクアレイ装置１の運用中に、図５に示すステップＳ１６のバッテリチェックを実行する（ステップＳ２１）。ステップＳ１６の後において、ステップＳ１８、Ｓ１１１、Ｓ１１４、Ｓ１１７及びＳ１１９を実行する場合、メモリコントローラ１２１は、ステップＳ１８、Ｓ１１１、Ｓ１１４、Ｓ１１７及びＳ１１９の処理に加えて、以下のステップＳ２２〜Ｓ２９を実行する。なお、ステップＳ２６が、ステップＳ１８、Ｓ１１１、Ｓ１１４、Ｓ１１７及びＳ１１９に相当する。
【０１０５】
メモリコントローラ１２１は、ダーティデータ制限値、換言すれば、ダーティデータ制限フラグ「０」を有するメモリバンク１３３の数の変更が必要であるか否かを判断する（ステップＳ２２）。このために、メモリコントローラ１２１は、キャッシュテーブル１２２を参照して現在のダーティデータ制限値を求める。この後、メモリコントローラ１２１は、現在のダーティデータ制限値と、Ｓ１７、Ｓ１１０、Ｓ１１３、Ｓ１１６、Ｓ１１８の処理により決定された新たなダーティデータ制限値とを比較する。ダーティデータ制限値の変更が必要でない場合（ステップＳ２２  Ｎｏ）、メモリコントローラ１２１は、ステップＳ２１を繰り返す。
【０１０６】
ダーティデータ制限値の変更が必要である場合（ステップＳ２２  Ｙｅｓ）、メモリコントローラ１２１は、更に、キャッシュメモリ１３が新しいダーティデータ制限値を超える容量のダーティデータを格納しているか否かを判断する（ステップＳ２３）。換言すれば、メモリコントローラ１２１は、ダーティデータ制限フラグを「０」から「１」に変更する必要があるメモリバンク１３３を決定し、決定されたメモリバンク１３３がダーティデータを格納しているか否かを判断する。決定されたメモリバンク１３３がダーティデータを格納している場合、キャッシュメモリ１３が新しいダーティデータ制限値を超える容量のダーティデータを格納していることになる。
【０１０７】
キャッシュメモリ１３が新しいダーティデータ制限値を超える容量のダーティデータを格納していない場合（ステップＳ２３  Ｎｏ）、メモリコントローラ１２１は、ダーティデータ制限値を変更し（ステップＳ２４）、ステップＳ２１を繰り返す。
【０１０８】
キャッシュメモリ１３が新しいダーティデータ制限値を超える容量のダーティデータを格納している場合（ステップＳ２３  Ｙｅｓ）、メモリコントローラ１２１は、バッテリユニット１９によるバックアップ電源からの電力の供給対象を、２個のキャッシュメモリ１３のいずれか一方、例えばキャッシュメモリＡのみに制限する（ステップＳ２５）。これにより、許容領域から禁止領域に変更されたメモリバンク１３３がダーティデータを格納している場合、許容領域から禁止領域に変更されたメモリバンク１３３に格納されたダーティデータをディスクアレイ１６に書き込むまでの間、キャッシュメモリＡのみが、前記バッテリによるバックアップ電源からの電力の供給対象とされる。なお、バックアップ電源からの電力の供給対象をキャッシュメモリＢとしても良い。
【０１０９】
これにより、主電源の停電時において、バッテリユニット１９は、バックアップ電源からの電力を、キャッシュメモリＡにのみ供給し、キャッシュメモリＢには供給しない。これにより、キャッシュメモリＡに格納されたダーティデータのみがディスクアレイ１６に書き込まれる。しかし、キャッシュメモリＢのローカル領域１３２に格納されたダーティデータは、キャッシュメモリＡのミラー領域Ａにコピーされている。このため、一時的にキャッシュメモリＢのバックアップを停止しても、キャッシュメモリＢのダーティデータが失われたことにはならない。
【０１１０】
以上から、主電源の停電時において、バッテリユニット１９からの放電によりバックアップ電源からの電力が供給されている期間に、１個のキャッシュメモリＡにおける合計サイズ２Ｓのダーティデータをディスクアレイ１６に転送することができれば良い。換言すれば、例えば１個のキャッシュコントローラＡ及び１個のキャッシュメモリＡに通電すればよいので、停電処理時の消費電力を少なく抑えることができる。これにより、ダーティデータ制限値を越えるメモリバンク１３３についても、ダーティデータの退避を保証することができる。
【０１１１】
ステップＳ２５の後、メモリコントローラ１２１は、ダーティデータ制限値を変更する（ステップＳ２６）。具体的には、メモリコントローラ１２１は、キャッシュテーブル１２２において、ダーティデータ制限フラグを「０」から「１」に変更する。
【０１１２】
この後、メモリコントローラ１２１は、キャッシュメモリＡのメモリバンク１３３であって、ダーティデータ制限フラグが「０」から「１」に変更されたメモリバンク１３３に格納されたダーティデータをディスクアレイ１６に書き込む（ステップＳ２７）。この処理の結果、ダーティデータ制限フラグが「０」から「１」に変更されたメモリバンク１３３に格納されたダーティデータが存在しなくなると、メモリコントローラ１２１は、キャッシュメモリＡを、新しいダーティデータ制限値を超える容量のダーティデータを格納していない状態とする（ステップＳ２８）。
【０１１３】
この後、メモリコントローラ１２１は、ステップＳ２５において設定したバッテリユニット１９によるバックアップ電源からの電力の供給対象の制限を解除する（ステップＳ２９）。換言すれば、メモリコントローラ１２１は、バックアップ電源からの電力の供給対象から除外したキャッシュメモリＢを、再度、バックアップ電源からの電力の供給対象とする。
【０１１４】
（第３の実施態様）
図７のキャッシュ制御処理において、ステップＳ２５の処理に代えて、メモリコントローラ１２１が、バッテリユニット１９によるバックアップ電源からの電力の供給対象を、２個のキャッシュメモリ１３におけるローカル領域１３２のみに制限するようにしても良い。換言すれば、許容領域から禁止領域に変更されたメモリバンク１３３にダーティデータが格納されている場合、許容領域から禁止領域に変更されたメモリバンク１３３に格納されたダーティデータをディスクアレイ１６に書き込むまでの間、キャッシュメモリＡのローカル領域Ａ及びキャッシュメモリＢのローカル領域のみが、バッテリユニット１９によるバックアップ電源からの電力の供給対象とされる。
【０１１５】
これにより、主電源の停電時において、バッテリユニット１９は、バックアップ電源からの電力を、２個のキャッシュメモリ１３のローカル領域１３２にのみ供給し、ミラー領域１３１には供給しない。これにより、２個のキャッシュメモリ１３のローカル領域１３２に格納されたダーティデータのみがディスクアレイ１６に書き込まれる。従って、ダーティデータが失われることはない。この結果、ステップＳ２５の処理の場合と同様に、ダーティデータ制限値を越えるメモリバンク１３３についても、ダーティデータの退避を保証することができる。
【０１１６】
（第４の実施態様）
図７のキャッシュ制御処理のステップＳ２５においては、バッテリユニット１９によるバックアップ電源からの電力の供給対象とされるキャッシュメモリ１３は、キャッシュメモリＡに固定される。しかし、ステップＳ２５において、２個のメモリコントローラ１２１がキャッシュ間信号線１７を介して相互に通信を行うことにより、バックアップ電源からの電力の供給対象から一時的に除外するキャッシュメモリ１３を決定するようにしても良い。
【０１１７】
例えば、キャッシュメモリＡにおいてダーティデータを格納しているメモリバンク１３３の数が１８個であり、キャッシュメモリＢにおいてダーティデータを格納しているメモリバンク１３３の数が１６個であるとする。この状態で、ダーティデータ制限値が１９個から１２個に変更されたとする。従って、キャッシュメモリＡでは６個のメモリバンク１３３のダーティデータを転送する必要があり、キャッシュメモリＢでは４個のメモリバンク１３３のダーティデータを転送する必要がある。
【０１１８】
そこで、メモリコントローラＡ及びＢは、キャッシュメモリＡ及びキャッシュメモリＢにおいて、書き込まれたダーティデータの量が少ない方を、バッテリユニット１９によるバックアップ電源からの電力の供給対象とする。ここで、例えばキャッシュメモリＡが電力の供給対象でないとされたとする。この場合、キャッシュメモリＡのデータのコピーは、キャッシュメモリＢのミラー領域１３１に存在する。従って、この場合には、キャッシュメモリＡ又はキャッシュメモリＢのいずれが電力の供給対象とされた場合でも、そのミラー領域１３１のデータは、ディスクアレイ１６に退避する必要がある。ミラー領域１３１のデータの量は、キャッシュメモリＡ又はキャッシュメモリＢにおいて同一である。従って、キャッシュメモリＡ又はキャッシュメモリＢのいずれを電力の供給対象とするかは、そのローカル領域１３２においてダーティデータを格納しているメモリバンク１３３の数に基づいて決定される。
【０１１９】
この場合、メモリコントローラＡ及びＢは、ステップＳ２５において、キャッシュメモリＢの方がデータを転送すべきメモリバンク１３３の数が少ない、換言すれば、ダーティデータ量が少ないと判断する。そこで、メモリコントローラＡ及びＢは、ダーティデータ量の少ないキャッシュメモリＢを、バッテリユニット１９によるバックアップ電源からの電力の供給対象とする。
【０１２０】
これにより、バックアップ電源からの電力の供給対象の制限に加えて、ダーティデータの転送時間をより短くして、ダーティデータ制限値を越えるメモリバンク１３３について、より確実にダーティデータの退避を保証することができる。
【０１２１】
（第５の実施態様）
図１に示すディスクアレイ装置１においては、ダーティデータ制限フラグ「１」は、メモリバンク１３３のメモリバンクＮｏの降順に、換言すれば、メモリバンクＮｏ＃３２から順に設定される。しかし、個々のメモリバンク１３３のダーティデータ量に基づいて、ダーティデータ制限フラグ「１」を設定するメモリバンク１３３、換言すれば、ディスクアレイ１６へダーティデータを書き込むメモリバンク１３３を決定するようにしても良い。
【０１２２】
図８は、キャッシュメモリ１３のローカル領域１３２のメモリバンク１３３へのダーティデータの格納の状態を示す図である。
【０１２３】
図８（Ａ）に示すように、例えば、ダーティデータ制限値が１９個の状態で、メモリバンク＃１〜＃１９に、ダーティデータが格納されている。なお、図８及び後述する図９において、メモリバンク＃１〜＃３２におけるダーティデータ量を斜線で示す。メモリバンク＃１〜＃３２におけるダーティデータ量は、各々異なる。斜線の無いメモリバンク＃２０〜＃３２にはダーティデータが格納されていないものとする。また、メモリバンク＃３、＃５、＃８、＃１０、＃１３、＃１５及び＃１７のダーティデータ量が、他のメモリバンク１３３のダーティデータ量より少ないものとする。
【０１２４】
この状態で、ダーティデータ制限値が１９個から１２個に変更されたとする。従って、７個のメモリバンク１３３について、ダーティデータ制限フラグを「０」から「１」に変更する必要がある。そこで、メモリコントローラ１２１は、複数のメモリバンク１３３の各々について、書き込まれたダーティデータの量が少ない順に優先順位を決定し、この優先順位に従って、複数のメモリバンク１３３に格納されたダーティデータをディスクアレイ１６に書き込む。
【０１２５】
この場合、メモリコントローラ１２１は、メモリバンク１３３のダーティデータ量に基づいて、ダーティデータ制限フラグ「１」を設定するメモリバンク１３３を決定する。そこで、メモリコントローラ１２１は、図８（Ｂ）において点線で囲んで示すように、ダーティデータ量が少ないメモリバンク＃３、＃５、＃８、＃１０、＃１３、＃１５及び＃１７を、ダーティデータ制限フラグ「１」を設定するメモリバンク１３３として選択する。
【０１２６】
この後、メモリコントローラ１２１は、例えば図７のキャッシュ制御処理のステップＳ２７において、メモリバンク＃３、＃５、＃８、＃１０、＃１３、＃１５及び＃１７のダーティデータをディスクアレイ１６に書き込む。
【０１２７】
これにより、バックアップ電源からの電力の供給対象の制限に加えて、ダーティデータの転送時間をより短くして、ダーティデータ制限値を越えるメモリバンク１３３について、より確実にダーティデータの退避を保証することができる。また、ダーティデータの転送時間をより短くすることにより、メモリバンク１３３をより早く解放することができる。
【０１２８】
（第６の実施態様）
図１に示すディスクアレイ装置１においては、ダーティデータ制限フラグ「１」は、メモリバンク１３３毎に設定される。一方、ダーティデータ制限フラグ「０」を有するメモリバンク１３３が、ダーティデータにより満たされているとは限らない。換言すれば、ダーティデータ制限フラグ「０」を有するメモリバンク１３３が、リードデータを格納している場合や、「空」である場合がある。そこで、ダーティデータをダーティデータ制限フラグ「０」を有するメモリバンク１３３に集中的に書き込むようにしても良い。換言すれば、メモリバンク１３３に一旦書き込んだダーティデータを、ダーティデータを格納するメモリバンク１３３の数が最少となるように、ダーティデータを再配置するようにしても良い。
【０１２９】
図９は、キャッシュメモリ１３のローカル領域１３２のメモリバンク１３３へのダーティデータの格納の状態を示す図である。
【０１３０】
図９（Ａ）に示すように、例えば、ダーティデータ制限値が１９個の状態で、メモリバンク＃１〜＃１９に、ダーティデータが格納されている。
【０１３１】
この状態で、ダーティデータ制限値が１９個から１２個に変更されたとする。キャッシュメモリ１３が図９（Ａ）の状態であれば、７個のメモリバンク１３３について、ダーティデータ制限フラグを「０」から「１」に変更する必要がある。
【０１３２】
しかし、このダーティデータ制限値の変更に先立って、メモリコントローラ１２１が、図９（Ｂ）に示すように、ダーティデータの再配置を実行する。この再配置により、例えば、メモリバンク＃１〜＃１４には、そのメモリ容量と等しいサイズのダーティデータが格納され、メモリバンク＃１５〜＃１９には、ダーティデータが存在しなくなったとする。
【０１３３】
この場合、ダーティデータ制限値が１９個から１２個に変更されたことに応じて、メモリコントローラ１２１は、例えば図７のキャッシュ制御処理のステップＳ２７において、メモリバンク＃１３及び＃１４のダーティデータをディスクアレイ１６に書き込む。従って、ダーティデータをディスクアレイ１６に書き込むメモリバンク１３３の数は、ダーティデータの再配置前の７個から２個に減っている。
【０１３４】
これにより、バックアップ電源からの電力の供給対象の制限に加えて、ダーティデータの転送時間をより短くして、ダーティデータ制限値を越えるメモリバンク１３３について、より確実にダーティデータの退避を保証することができる。
【符号の説明】
【０１３５】
１    ディスクアレイ装置
２    ホストコンピュータ
１１    ホストアダプタ
１２    キャッシュコントローラ
１３    キャッシュメモリ
１４    ディスクアダプタ
１５    スイッチ
１６    ディスクアレイ
１７    キャッシュ間信号線
１８    監視コントローラ
１９    バッテリユニット
１２１    メモリコントローラ
１２２    キャッシュテーブル
１２３    テーブル管理部
１２４    バッテリテーブル
【図１】
0005454177.tif 000002
【図２】
0005454177.tif 000003
【図３】
0005454177.tif 000004
【図４】
0005454177.tif 000005
【図５】
0005454177.tif 000006
【図６】
0005454177.tif 000007
【図７】
0005454177.tif 000008
【図８】
0005454177.tif 000009
【図９】
0005454177.tif 000010