(57)【特許請求の範囲】
【請求項１】
データを記憶する記憶媒体と、
前記記憶媒体へのアクセス制御を行う制御部と、
を有するストレージ装置において、
前記制御部は、
前記記憶媒体に記憶されるデータを記憶する第１の記憶部と、
前記制御部に対する電力の供給が停止した場合に、前記第１の記憶部に記憶されているデータを記憶する第２の記憶部と、
前記第１の記憶部に記憶されているデータの記憶位置を示す記憶位置情報と、記憶位置毎のデータが前記記憶媒体への転送データであるか否かの種別を示す種別情報と、同種別のデータが連続して記憶される複数の記憶領域の記憶位置のうち先頭の記憶位置に対応付けられるとともに、前記同種別のデータに続く異種別のデータを記憶可能な先頭の記憶領域の記憶位置を特定する連続データ位置情報とを含む、前記第１の記憶部におけるデータの記憶状態を示す制御情報を生成する制御情報生成部と、
前記制御部に対する電力の供給が停止した場合に、前記制御情報生成部で生成された前記制御情報に基づいて前記第１の記憶部に記憶されている前記記憶媒体への転送データの前記第２の記憶部への転送を制御する転送制御部と、
を有することを特徴とするストレージ装置。
【請求項２】
前記制御情報は、前記第１の記憶部に記憶されているデータが前記転送の対象であるか否かを示す判別情報を有し、
前記制御情報生成部は、前記第１の記憶部に記憶されているデータが前記転送の対象である場合には、前記第１の記憶部に記憶されているデータが前記転送の対象である旨を示す判別情報を有するように前記制御情報を生成し、
前記転送制御部は、前記制御部に対する電力の供給が停止した場合に、前記制御情報生成部で生成された前記制御情報に基づいて前記第１の記憶部に記憶されているデータのうち前記転送の対象であるデータを前記第２の記憶部に転送するように制御する、
ことを特徴とする請求項１記載のストレージ装置。
【請求項３】
前記制御情報生成部は、前記種別情報が変更された場合に、変更後の種別情報に基づいて前記連続データ位置情報を更新する
請求項１又は２記載のストレージ装置。
【請求項４】
前記制御情報は、前記転送データのサイズを示す転送サイズ情報を含み、
前記制御情報生成部は、前記転送サイズ情報として、連続して記憶される前記同種別のデータのデータサイズを合算した値を生成する
請求項１〜３のいずれか１項記載のストレージ装置。
【請求項５】
前記転送制御部は、前記転送データを分割して複数の分割データを生成し、前記制御情報に基づいて当該複数の分割データを並行して転送するように制御する
請求項１〜４のいずれか１項記載のストレージ装置。
【請求項６】
ストレージ装置が有するデータを記憶する記憶媒体へのアクセス制御を行う制御部において、
前記記憶媒体に記憶されるデータを記憶する第１の記憶部と、
前記制御部に対する電力の供給が停止した場合に、前記第１の記憶部に記憶されているデータを記憶する第２の記憶部と、
前記第１の記憶部に記憶されているデータの記憶位置を示す記憶位置情報と、記憶位置毎のデータが前記記憶媒体への転送データであるか否かの種別を示す種別情報と、同種別のデータが連続して記憶される複数の記憶領域の記憶位置のうち先頭の記憶位置に対応付けられるとともに、前記同種別のデータに続く異種別のデータを記憶可能な先頭の記憶領域の記憶位置を特定する連続データ位置情報とを含む、前記第１の記憶部におけるデータの記憶状態を示す制御情報を生成する制御情報生成部と、
前記制御部に対する電力の供給が停止した場合に、前記制御情報生成部で生成された前記制御情報に基づいて前記第１の記憶部に記憶されている前記記憶媒体への転送データの前記第２の記憶部への転送を制御する転送制御部と、
を有することを特徴とする制御部。
【請求項７】
ストレージ装置が有するデータを記憶する記憶媒体へのアクセス制御を行うストレージ装置制御方法において、
前記記憶媒体に記憶されるデータを記憶する第１の記憶部に記憶されているデータの記憶位置を示す記憶位置情報と、記憶位置毎のデータが前記記憶媒体への転送データであるか否かの種別を示す種別情報と、同種別のデータが連続して記憶される複数の記憶領域の記憶位置のうち先頭の記憶位置に対応付けられるとともに、前記同種別のデータに続く異種別のデータを記憶可能な先頭の記憶領域の記憶位置を特定する連続データ位置情報とを含む、前記第１の記憶部におけるデータの記憶状態を示す制御情報を生成し、
電力の供給が停止した場合に、前記制御情報に基づいて前記第１の記憶部に記憶されている前記記憶媒体への転送データの第２の記憶部への転送を制御する、
ことを特徴とするストレージ装置制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本件は、ストレージ装置、制御部およびストレージ装置制御方法に関する。
【背景技術】
【０００２】
磁気ディスク、光磁気ディスク、光ディスク等の記憶媒体を利用したストレージ装置では、記憶容量の大容量化が進められている。ストレージ装置の記憶容量の大容量化に関して、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）という記憶媒体を多重化してストレージ装置を構成する技術が広く用いられている。
【０００３】
一般に、ストレージ装置において、その上位装置（例えば、ホストコンピュータ）からのデータアクセスに要する処理時間を短縮するために、キャッシュメモリを用いたユーザデータの読み出しおよび書き込みが行われている。このキャッシュメモリには、通常、ＤＲＡＭ（Dynamic Random Access Memory）、ＳＲＡＭ（Static Random Access Memory）といった半導体の記憶装置が利用されている。
【０００４】
そして、ストレージ装置は、ホストコンピュータからユーザデータの読み出し要求を受け付けた場合には、キャッシュメモリからユーザデータを検索し、読み出し要求に対応するユーザデータを取得し、取得したキャッシュデータをホストコンピュータに通知する。一方、キャッシュメモリからユーザデータを取得しなかった場合、ハードディスクドライブ（ＨＤＤ：Hard disk drive）等の記憶デバイスに記憶されているユーザデータを取得し、キャッシュメモリに書き込みを行う。
【０００５】
また、ユーザデータの書き込み要求を受け付けた場合には、キャッシュメモリにユーザデータを記憶した時点で、書き込み処理が完了した旨をホストコンピュータに通知する。その後、キャッシュに記憶したユーザデータをディスクに記憶する。
【０００６】
ここで、上述したキャッシュメモリは、揮発性の半導体の記憶装置が利用されていることから、キャッシュメモリに対する電源の供給がなくなれば、キャッシュメモリのユーザデータが消去されてしまう。このため、停電発生時には、キャッシュ上の全データを不揮発性の記憶装置に退避させるバックアップ処理を非常用の電力の供給を受けて実行するものがある。キャッシュメモリ上のデータの不揮発性の記憶装置への退避に関して、以下の技術が知られている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平６−３０９２３４号公報
【特許文献２】特開平９−３３０２７７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上述した従来の技術では、バックアップ処理に必要以上の処理時間が掛かってしまう場合がある。この場合、非常用の電力の供給が可能な時間内にキャッシュメモリに記憶されているデータの不揮発性メモリへの退避が完了せず、退避できなかったデータが消失してしまう場合があるという問題点があった。
【０００９】
本件はこのような点に鑑みてなされたものであり、データのバックアップ処理に要する時間を短縮することが可能なストレージ装置、制御部およびストレージ装置制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するために以下のようなストレージ装置が提供される。このストレージ装置は、データを記憶する記憶媒体と、記憶媒体へのアクセス制御を行う制御部と、を有する。制御部は、第１の記憶部と、第２の記憶部と、制御情報生成部と、転送制御部と、を有する。第１の記憶部は、記憶媒体に記憶されるデータを記憶する。第２の記憶部は、制御部に対する電力の供給が停止した場合に、第１の記憶部に記憶されているデータを記憶する。制御情報生成部は、第１の記憶部におけるデータの記憶状態を示す制御情報を生成する。転送制御部は、制御部に対する電力の供給が停止した場合に、制御情報生成部で生成された制御情報に基づいて第１の記憶部に記憶されているデータの第２の記憶部への転送を制御する。
【００１１】
また、上記目的を達成するために以下のような制御部が提供される。この制御部は、ストレージ装置が有するデータを記憶する記憶媒体へのアクセス制御を行う。この制御部では、第１の記憶部は、記憶媒体に記憶されるデータを記憶する。第２の記憶部は、制御部に対する電力の供給が停止した場合に、第１の記憶部に記憶されているデータを記憶する。制御情報生成部は、第１の記憶部におけるデータの記憶状態を示す制御情報を生成する。転送制御部は、制御部に対する電力の供給が停止した場合に、制御情報生成部で生成された制御情報に基づいて第１の記憶部に記憶されているデータの第２の記憶部への転送を制御する。
【００１２】
また、上記目的を達成するために以下のようなストレージ装置制御方法が提供される。このストレージ装置制御方法は、ストレージ装置が有するデータを記憶する記憶媒体へのアクセス制御を行う。このストレージ装置制御方法は、記憶媒体に記憶されるデータを記憶する第１の記憶部におけるデータの記憶状態を示す制御情報を生成し、電力の供給が停止した場合に、生成した制御情報に基づいて第１の記憶部に記憶されているデータの第２の記憶部への転送を制御する。
【発明の効果】
【００１３】
開示のストレージ装置、制御部およびストレージ装置制御方法によれば、データのバックアップ処理を高速化し、バックアップ処理に要する時間を短縮することが可能となる。
【図面の簡単な説明】
【００１４】
【図１】第１の実施の形態のストレージ装置を示す図である。
【図２】第２の実施の形態のストレージ装置のハードウェア構成を示す図である。
【図３】第２の実施の形態のストレージ装置の機能を示すブロック図である。
【図４】第２の実施の形態のキャッシュメモリおよびディスクリプタテーブルを示す図である。
【図５】第２の実施の形態のキャッシュメモリに記憶されている書き込みキャッシュおよび読み出しキャッシュを示す図である。
【図６】第２の実施の形態の書き込みデータをキャッシュメモリに記憶する処理の実行時におけるキャッシュメモリおよびディスクリプタテーブルを示す図である。
【図７】第２の実施の形態の書き込みデータキャッシュ処理を示す図である。
【図８】第２の実施の形態の書き込みデータを記憶デバイスにライトバックする処理の実行時におけるキャッシュメモリおよびディスクリプタテーブルを示す図である。
【図９】第２の実施の形態の書き込みデータライトバック処理を示す図である。
【図１０】第２の実施の形態の書き込みデータバックアップ処理を示す図である。
【図１１】第２の実施の形態の書き込みデータをキャッシュメモリに格納する動作を示すシーケンス図である。
【図１２】第２の実施の形態の読み出しデータをホストコンピュータに送信する動作を示すシーケンス図である。
【図１３】第２の実施の形態の書き込みデータを記憶デバイスにライトバックする動作を示すシーケンス図である。
【図１４】第２の実施の形態の書き込みデータをフラッシュメモリにバックアップする動作を示すシーケンス図である。
【発明を実施するための形態】
【００１５】
以下、実施の形態を図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態のストレージ装置を示す図である。本実施の形態のストレージ装置１は、記憶媒体１ｂへのアクセス制御を行う制御部１ａ、データを記憶する記憶媒体１ｂを有する。制御部１ａは、記憶部１ａ３、記憶部１ａ４、制御情報生成部１ａ１、転送制御部１ａ２を有する。
【００１６】
制御部１ａは、ホストコンピュータ等の上位装置との間の送受信等に基づくデータの記憶媒体１ｂへの読み書きの制御等、ストレージ装置１を制御する。
制御情報生成部１ａ１は、予め、記憶部１ａ３におけるデータの記憶状態を示す制御情報を生成する。制御情報は、転送制御部１ａ２が記憶部１ａ３に記憶されているデータを記憶部１ａ４に転送する際に使用される。制御情報は、例えば、記憶部１ａ３に記憶されている各データが転送の対象であるか否か、各データが記憶部１ａ３の記憶領域における記憶されている位置、各データの転送時のサイズ等を示す。これにより、例えば商用電源等による通常時に使用される電力の供給が停止された場合にデータを速やかに転送することができる。
【００１７】
転送制御部１ａ２は、制御部に対する電力の供給が停止した場合に、制御情報生成部１ａ１で生成された制御情報に基づいて記憶部１ａ３に記憶されているデータの記憶部１ａ４への転送を制御する。
【００１８】
記憶部１ａ３は、記憶媒体１ｂに記憶されるデータを、記憶媒体１ｂへの書き込みが完了するまでの間、一時的に記憶する。記憶部１ａ３は、例えば、ＤＲＡＭやＳＲＡＭ等の揮発性の半導体の記憶装置である。従って、記憶部１ａ３に記憶されているデータは、記憶媒体１ｂへの書き込みが完了する前に停電の発生等によって記憶部１ａ３への電力の供給が停止すると失われてしまう。
【００１９】
記憶部１ａ４は、例えば不揮発性メモリの使用や記憶部１ａ３とは別に非常用の電力の供給を受ける等により、停電の発生等により制御部１ａに対して電力の供給が停止した場合にもデータを保持することができる。本実施の形態では、電力の供給が停止した場合に、記憶部１ａ３が記憶しているデータが転送制御部１ａ２により記憶部１ａ４に転送されることで、記憶部１ａ３が記憶していたデータがバックアップされる。これにより、停電の発生時には、記憶部１ａ３に記憶されているデータが不揮発性の記憶部１ａ４に転送されるので、記憶部１ａ３に記憶されているデータの消失を防止することができる。
【００２０】
記憶媒体１ｂは、上位装置との間で送受信されるデータを記憶する。記憶媒体１ｂは、例えば、ＨＤＤ等の磁気記憶装置、光ディスク、光磁気記録媒体、ＳＳＤ（Solid State Drive）等の不揮発性半導体メモリやその他のデータの記憶が可能な記憶媒体を使用することができる。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープ等がある。光ディスクには、ＤＶＤ、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ／ＲＷ等がある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）等がある。また、記憶媒体１ｂは、複数の記憶媒体から構成されたＲＡＩＤであってもよい。
【００２１】
以上のように、本実施の形態では、通常時に制御情報生成部１ａ１が、記憶部１ａ３に記憶されているデータの記憶状況を示す制御情報を生成する。そして、電力の供給が停止した場合には、転送制御部１ａ２が、制御情報に基づいて、記憶部１ａ３に記憶されているデータを記憶部１ａ４に転送する。これにより、データのバックアップ処理を高速化し、バックアップ処理に要する時間を短縮することが可能となる。
【００２２】
［第２の実施の形態］
次に、図１に示したストレージ装置１の、電力の供給の停止時に記憶部１ａ３から記憶部１ａ４にデータを転送する機能を、ＲＡＩＤを構成する記憶デバイス群を有するストレージ装置１００に適用した実施の形態を、第２の実施の形態として説明する。
【００２３】
図２は、第２の実施の形態のストレージ装置のハードウェア構成を示す図である。ストレージ装置１００は、装置全体の制御を行う制御部１１０ａ，１１０ｂ、制御部１１０ａ，１１０ｂとホストコンピュータ３００との接続制御を行うチャネルアダプタ１３０ｃ〜１３０ｆ、記憶デバイス１２０ａ，１２０ｂ，１２０ｃ，１２０ｄ、ＰＳＵ（Power Supply Unit）１４０ａ，１４０ｂを有する。
【００２４】
ストレージ装置１００は、後述するハードディスクドライブ等の複数の記憶デバイスに対するデータの入出力を行う。ストレージ装置１００は、ＲＡＩＤ０〜６等のＲＡＩＤ機能を有し、複数の記憶デバイスをまとめてＲＡＩＤを構成することにより、各ＲＡＩＤをそれぞれ１台の記憶デバイスとして管理する。
【００２５】
ホストコンピュータ３００は、業務処理を実行するコンピュータであり、ファイバチャネル（Fibre Channel）で構成されたＳＡＮ（Storage Area Network）を介してストレージ装置１００とデータ通信可能に接続されている。ホストコンピュータ３００は、業務処理に使用するデータについて、ストレージ装置１００への保存およびストレージ装置１００からの読み出しを行う。
【００２６】
制御部１１０ａは、ＣＰＵ（Central Processing Unit）１１１ａ、キャッシュメモリ１１２ａ、デバイスアダプタ１１３ｃ，１１３ｄ、フラッシュコントローラ（flash controller）１１４ａ、フラッシュメモリ（flash memory）１１５ａ、ＳＣＵ（System Capacity Unit）１１６ａを有する。
【００２７】
ＣＰＵ１１１ａは、ＯＳ（Operating System：オペレーティングシステム）等に従って処理を実行し、各種制御を行う。また、制御部１１０ａは、キャッシュメモリ１１２ａ、記憶デバイス１２０ａ，１２０ｂ，１２０ｃ，１２０ｄ、チャネルアダプタ１３０ｃ，１３０ｄ等の資源管理を行う。
【００２８】
キャッシュメモリ１１２ａは、書き込みデータのバックアップ処理時に使用するディスクリプタ情報等の、ＣＰＵ１１１ａがストレージ装置１００を制御するために必要な制御データを記憶する。また、キャッシュメモリ１１２ａは、ホストコンピュータ３００から送信され、記憶デバイス１２０ａ〜１２０ｄに記憶される書き込みデータおよびホストコンピュータ３００から送信された読み出し要求に応じて記憶デバイス１２０ａ〜１２０ｄから読み出され、ホストコンピュータ３００に送信される読み出しデータを一時的に記憶する。
【００２９】
デバイスアダプタ１１３ｃ，１１３ｄは、記憶デバイス１２０ａ〜１２０ｄとの接続制御を行う。
フラッシュコントローラ１１４ａは、所定のプログラムによって制御される集積回路でありＦＰＧＡ（Field Programmable Gate Array）であり、フラッシュメモリ１１５ａを制御する。フラッシュコントローラ１１４ａは、停電時にキャッシュデータをフラッシュメモリ１１５ａに退避させ、および復元するために必要な機能を有するＤＭＡ（Direct Memory Access）を有する。これにより、フラッシュコントローラ１１４ａは、ＣＰＵ１１１ａを介さずにストレージ装置１００とキャッシュメモリ１１２ａやフラッシュメモリ１１５ａとの間で、ハードウェア的にデータを転送することができる。フラッシュコントローラ１１４ａは、停電発生時にディスクリプタ情報に基づいてキャッシュメモリ１１２ａの書き込みデータをフラッシュメモリ１１５ａにバックアップして退避させる。このとき、ＮＡＮＤ型メモリであるフラッシュメモリ１１５ａは、ブロック単位でアクセスされる構造を有することから、ランダムアクセスではなく、シーケンシャルライトにより、キャッシュメモリ１１２ａの書き込みデータが書き込まれる。ここで、ブロックとは、フラッシュメモリ１１５ａにおいて書き込みデータを記憶するデータ領域を示し、フラッシュメモリ１１５ａの物理的な分割単位を示すものである。フラッシュメモリ１１５ａでは、ブロック毎に書き込みデータが記憶される。また、フラッシュメモリ１１５ａの１ブロック当たりのデータ領域は、シーケンシャルライトを行う上で都合のよい４Ｍｂｙｔｅとしてもよい。そして、フラッシュコントローラ１１４ａは、電源復旧時には、停電発生時にフラッシュメモリ１１５ａに退避させた書き込みデータを読み出してキャッシュメモリ１１２ａに復元する。
【００３０】
フラッシュメモリ１１５ａは、ＮＡＮＤ型フラッシュメモリ等の書き換え可能な不揮発性半導体メモリである。フラッシュメモリ１１５ａは、停電発生時にデータの退避先に使用される。フラッシュコントローラ１１４ａは、停電発生時には、制御部１１０ａのＯＦＦ処理中に、キャッシュメモリ１１２ａに蓄積されている記憶デバイス１２０ａ〜１２０ｄに記憶されていない書き込みデータやディスクリプタ情報をフラッシュメモリ１１５ａに一旦記憶させる。その後、フラッシュコントローラ１１４ａは、電源復旧時にフラッシュメモリ１１５ａに退避させていたデータを読み出して使用する。
【００３１】
ＳＣＵ１１６ａは、大容量コンデンサである。制御部１１０ａは、通常時にＰＳＵ１４０ａ，１４０ｂから供給されるＳＣＵ１１６ａに対して電力を充電しておく。ＳＣＵ１１６ａは、停電発生時に制御部１１０ａに対して制御部１１０ａに対して電力を供給する。ＳＣＵ１１６ａは、充電された電力を制御部１１０ａに供給するので、供給する電力には限りがあるものとする。ＳＣＵ１１６ａは、「電気二重層」（導体に絶縁体をはさみ、電圧をかけると電荷が蓄積する）を利用して物理的に電荷の蓄電を行っている。従って、ＳＣＵ１１６ａは、化学的に蓄電するバッテリーに比べて充電や放電による劣化が少なく、電荷の移動速度で充電が行われるので充電時間に要する時間が比較的短い。
【００３２】
ストレージ装置１００は、停電発生時には、制御部１１０ａに対する電力の供給源をＰＳＵ１４０ａ，１４０ｂからＳＣＵ１１６ａに切り替える。制御部１１０ａは、ＳＣＵ１１６ａに充電されている電力を使用して書き込みデータのバックアップ処理を行う。
【００３３】
また、制御部１１０ａ，１１０ｂは、バス１５０によって接続されている。このバス１５０を介して、制御部１１０ａおよび制御部１１０ｂの間で、制御情報やデータが通信される。制御部１１０ａ，１１０ｂは、それぞれ、ストレージ装置１００に対し着脱可能である。ここで、制御部１１０ｂは、ＣＰＵ１１１ｂ、キャッシュメモリ１１２ｂ、デバイスアダプタ１１３ｅ，１１３ｆ、フラッシュコントローラ１１４ｂ、フラッシュメモリ１１５ｂを有し、制御部１１０ａと同一の構成であるため、説明を省略する。
【００３４】
記憶デバイス１２０ａ〜１２０ｄは、ＲＡＩＤを構成可能なハードディスクドライブであり、ホストコンピュータ３００から送信されたユーザデータを記憶する。なお、ユーザデータは１個のハードディスクに記憶されている必要はなく、複数のハードディスクに渡って記憶されていてもよい。また、１個のハードディスクに複数のユーザデータが記憶されていてもよい。また、記憶デバイス１２０ａ〜１２０ｄは、例えば、ＳＳＤ等の不揮発性半導体メモリやハードディスクドライブ以外の磁気記憶装置、光ディスク、光磁気記録媒体、その他のデータの記憶が可能な記憶媒体を使用することができる。磁気記憶装置には、ハードディスク装置、フレキシブルディスク、磁気テープ等がある。光ディスクには、ＤＶＤ、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ／ＲＷ等がある。光磁気記録媒体には、ＭＯ等がある。
【００３５】
チャネルアダプタ１３０ｃ〜１３０ｆは、ホストコンピュータ３００と制御部１１０ａ，１１０ｂとの接続制御を行う。例えば、チャネルアダプタ１３０ｃは、ホストコンピュータ３００からの要求を受け付けて、制御部１１０ａとの接続制御を行う。制御部１１０ａ，１１０ｂは、それぞれ複数個（図ではそれぞれ２個）のチャネルアダプタ１３０ｃ〜１３０ｆに接続可能になっている。すなわち、例えば、制御部１１０ａは、冗長構成が実現されるように、２つの異なるチャネルアダプタ１３０ｃ，１３０ｄにそれぞれ接続されている。
【００３６】
なお、チャネルアダプタ１３０ｃ〜１３０ｆとホストコンピュータ３００との間の通信は、ファイバチャネルで構成されたＳＡＮによって接続されているが、ファイバチャネル以外の接続方式によって接続されていてもよい。また、チャネルアダプタ１３０ｃ〜１３０ｆとホストコンピュータ３００との間の通信は、専用線やＶＰＮ（Virtual Private Network）を用いて、ストレージ装置１００をホストコンピュータ３００から遠隔地に設置するように構成してもよい。
【００３７】
ＰＳＵ１４０ａ，１４０ｂは、ストレージ装置１００の各部が使用する電力をストレージ装置１００の各部に供給する。ＰＳＵ１４０ａ，１４０ｂは冗長化されており、いずれか一方が正常であれば、ストレージ装置１００の各部の駆動に必要な電力を供給可能である。
【００３８】
なお、図２において、制御部１１０ａ，１１０ｂは、それぞれ２個図示し、デバイスアダプタ１１３ｃ〜１１３ｆおよびチャネルアダプタ１３０ｃ〜１３０ｆは、制御部１１０ａ，１１０ｂそれぞれに対してそれぞれ２個ずつ図示しているが、これらの数はそれぞれ任意である。
【００３９】
また、図２において、ストレージ装置１００に対して１つのホストコンピュータ３００が接続されているが、ストレージ装置１００に対して複数のホストコンピュータが接続されていてもよい。
【００４０】
また、ストレージ装置１００に対して制御部１１０ａ，１１０ｂに従属して制御を受ける、制御部および記憶デバイスを有する増設用装置（図示省略）を接続してもよい。
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。
【００４１】
図３は、第２の実施の形態のストレージ装置の機能を示すブロック図である。本実施の形態のストレージ装置１００は、制御部１１０ａ、ＰＳＵ１４０ａ〜１４０ｂ、記憶デバイス１２０ａ〜１２０ｄを有する。制御部１１０ａは、メイン制御部１０１、転送制御部１０２、キャッシュメモリ１１２ａ、フラッシュメモリ１１５ａ、ＳＣＵ１１６ａを有する。メイン制御部１０１は、ディスクリプタ情報生成部１０１ａ、データ制御部１０１ｂ、記憶位置決定部１０１ｃを有する。なお、以下では制御部１１０ａについて説明するが、制御部１１０ｂは、制御部１１０ａと同一の構成であって同一の機能を有するため、説明を省略する。
【００４２】
制御部１１０ａは、ホストコンピュータ３００等の上位装置との間の送受信等に基づくデータの記憶デバイス１２０ａ〜１２０ｄへの読み書きの制御等、ストレージ装置１００を制御する。
【００４３】
ディスクリプタ情報生成部１０１ａは、ホストコンピュータ３００からデータの記憶デバイス１２０ａ〜１２０ｄへの記憶指示を受けた場合には、記憶指示に基づくキャッシュメモリ１１２ａにおけるデータの記憶状態を示すディスクリプタ情報を生成する。ディスクリプタ情報は、制御情報の一例である。また、ディスクリプタ情報生成部１０１ａは、制御情報生成部の一例である。
【００４４】
ディスクリプタ情報は、転送制御部１０２がキャッシュメモリ１１２ａに記憶されているデータをフラッシュメモリ１１５ａに転送する際に使用される。ディスクリプタ情報は、例えば、キャッシュメモリ１１２ａに記憶されている各データが転送の対象であるか否かを示す判別情報、各データがキャッシュメモリ１１２ａに記憶されているデータの記憶位置決定部１０１ｃにより決定された記憶位置を示す記憶位置情報、当該データが記憶されているキャッシュメモリ１１２ａの記憶領域の連続する他のデータを記憶可能な次の記憶領域の先頭アドレスを示す連続データ位置情報、各データの転送時のサイズ等を示す転送サイズ情報を有する。これにより、電力の供給が停止された場合にデータを速やかに転送することができる。
【００４５】
また、ディスクリプタ情報生成部１０１ａは、キャッシュメモリ１１２ａに記憶されているデータが転送の対象である場合には、キャッシュメモリ１１２ａに記憶されているデータが転送の対象のデータ（書き込みキャッシュ）である旨を示す判別情報を有するようにディスクリプタ情報を生成する。
【００４６】
また、ディスクリプタ情報生成部１０１ａは、キャッシュメモリ１１２ａに記憶されているデータが転送の対象でない場合には、キャッシュメモリ１１２ａに記憶されているデータが転送の対象でないデータ（読み出しキャッシュ）である旨を示す判別情報を有するようにディスクリプタ情報を生成する。
【００４７】
また、ディスクリプタ情報生成部１０１ａは、記憶デバイス１２０ａ〜１２０ｄに記憶されるデータ（書き込みデータ）がキャッシュメモリ１１２ａに記憶された場合には、キャッシュメモリ１１２ａに記憶されたデータが転送の対象である旨を示す判別情報を有するようにディスクリプタ情報を生成する。
【００４８】
また、ディスクリプタ情報生成部１０１ａは、記憶デバイス１２０ａ〜１２０ｄに記憶されるデータの記憶デバイス１２０ａ〜１２０ｄへの記憶が完了した場合には、キャッシュメモリ１１２ａへの記憶が完了したデータが転送の対象でない旨を示す判定情報を有するようにディスクリプタ情報を生成する。
【００４９】
また、ディスクリプタ情報生成部１０１ａは、キャッシュメモリ１１２ａに記憶されているデータの記憶位置情報および連続データ位置情報を有するようにディスクリプタ情報を生成する。
【００５０】
また、ディスクリプタ情報生成部１０１ａは、キャッシュメモリ１１２ａに記憶されているデータのディスクリプタ情報を生成すると共に、記憶位置決定部１０１ｃによって決定された位置に対応するディスクリプタテーブルにおけるディスクリプタ情報を格納する位置に生成したディスクリプタ情報を格納させる。
【００５１】
なお、ディスクリプタ情報生成部１０１ａは、例えば所定の時間毎、所定量のデータの書き込みがあった毎、所定数のデータの書き込みがあった毎等、任意の契機に従って、電源の供給の停止に備え、予めキャッシュメモリ１１２ａにおけるデータの記憶状態を示す制御情報を生成してもよい。
【００５２】
データ制御部１０１ｂは、ホストコンピュータ３００から送信された記憶デバイス１２０ａ〜１２０ｄに記憶されるデータをキャッシュメモリ１１２ａに記憶させる場合には、ディスクリプタ情報生成部１０１ａによって生成されたディスクリプタ情報が有する記憶位置情報に基づいてキャッシュメモリ１１２ａの記憶領域の空き領域にデータを記憶させるように制御する。
【００５３】
記憶位置決定部１０１ｃは、ホストコンピュータ３００から送信された記憶デバイス１２０ａ〜１２０ｄに記憶されるデータがキャッシュメモリ１１２ａに記憶される際に、キャッシュメモリ１１２ａの記憶領域の空き領域と、キャッシュメモリ１１２ａに記憶されるデータのサイズとに基づいてキャッシュメモリ１１２ａの記憶領域におけるデータの記憶位置を決定する。
【００５４】
転送制御部１０２は、制御部１１０ａに対する電力の供給が停止した場合に、ディスクリプタ情報生成部１０１ａで生成されたディスクリプタ情報に基づいてキャッシュメモリ１１２ａに記憶されているデータのうち転送の対象であるデータおよびキャッシュメモリ１１２ａに記憶されているディスクリプタ情報をフラッシュメモリ１１５ａに転送するように制御する。本実施の形態では、バックアップされたデータの記憶状態を示すと共に復旧に使用されるディスクリプタ情報が、電力の供給が停止した場合にデータと共にフラッシュメモリ１１５ａに転送されてバックアップされることで、電力の供給が再開した場合にデータの復旧の処理の高速化が可能となる。
【００５５】
また、転送制御部１０２は、上記転送において、ディスクリプタ情報生成部１０１ａで生成されたディスクリプタ情報に基づいてキャッシュメモリ１１２ａに記憶されているデータのうち転送の対象でないデータはフラッシュメモリ１１５ａに転送しないように制御する。
【００５６】
また、転送制御部１０２は、制御部１１０ａに対する電力の供給が停止した場合に、ディスクリプタ情報生成部１０１ａで生成されたディスクリプタ情報に基づいてキャッシュメモリ１１２ａに記憶されているデータのフラッシュメモリ１１５ａへの転送を、キャッシュメモリ１１２ａに記憶されているデータを複数に分割すると共に分割した複数のデータのそれぞれを複数の記憶領域に並行して転送するように制御する。
【００５７】
また、転送制御部１０２は、ＳＣＵ１１６ａから電力の供給を受けて、制御部１１０ａに対する電力の供給が停止した場合にキャッシュメモリ１１２ａに記憶されているデータのフラッシュメモリ１１５ａへの転送を制御する。
【００５８】
また、転送制御部１０２は、キャッシュメモリ１１２ａの書き込みデータの退避時には、キャッシュメモリ１１２ａに記憶されている複数の書き込みデータを２つに分け、分けたうちの一方を不揮発性記憶領域１１５ａ１に記憶させると共に、不揮発性記憶領域１１５ａ１への書き込みと並行して２つに分けたうちの他方を不揮発性記憶領域１１５ａ２に記憶させる。これにより、書き込みデータのフラッシュメモリ１１５ａへの退避に要する時間を短縮することができる。
【００５９】
また、転送制御部１０２は、フラッシュメモリ１１５ａに退避させたデータの復旧時には、フラッシュメモリ１１５ａに退避させたディスクリプタ情報をキャッシュメモリ１１２ａのディスクリプタ領域１１２ａｄに展開する。次に、転送制御部１０２は、展開したディスクリプタ領域１１２ａｄのディスクリプタ情報を参照して、退避させた書き込みキャッシュを、キャッシュメモリ１１２ａの記憶領域に対してキャッシュメモリ１１２ａの記憶領域の先頭アドレスから順に展開する。
【００６０】
キャッシュメモリ１１２ａは、記憶デバイス１２０ａ〜１２０ｄに記憶されるデータを、記憶デバイス１２０ａ〜１２０ｄへの書き込みが完了するまでの間、一時的に記憶する。キャッシュメモリ１１２ａは、例えば、ＤＲＡＭやＳＲＡＭ等の揮発性の半導体の記憶装置である。従って、キャッシュメモリ１１２ａに記憶されているデータは、記憶デバイス１２０ａ〜１２０ｄへの書き込みが完了する前に停電の発生等によってキャッシュメモリ１１２ａへの電力の供給が停止すると失われてしまう。
【００６１】
キャッシュメモリ１１２ａは、ディスクリプタ情報を記憶するディスクリプタ領域１１２ａｄを有する。ディスクリプタ領域１１２ａｄは、ディスクリプタ情報を格納すると共に、キャッシュメモリ１１２ａの記憶領域におけるディスクリプタ情報を格納する位置と、キャッシュメモリ１１２ａの記憶領域におけるデータが格納される位置とが対応付けられているディスクリプタテーブルを記憶する。ディスクリプタ領域１１２ａｄは、制御情報記憶部の一例である。ディスクリプタテーブルについては、詳しくは図４において後述する。
【００６２】
フラッシュメモリ１１５ａは、複数の記憶領域（例えば、不揮発性記憶領域１１５ａ１，１１５ａ２）を有する不揮発性メモリであり、停電の発生等により制御部１１０ａに対する電力の供給が停止した場合にも記憶しているデータを保持可能である。本実施の形態では、電力の供給が停止した場合に、ＳＣＵ１１６ａによる電力の供給を受けて、キャッシュメモリ１１２ａが記憶しているデータが転送制御部１０２によりフラッシュメモリ１１５ａに転送されることで、キャッシュメモリ１１２ａが記憶していたデータがバックアップされる。これにより、停電の発生時には、キャッシュメモリ１１２ａに記憶されているデータが不揮発性のフラッシュメモリ１１５ａに転送されるので、キャッシュメモリ１１２ａに記憶されているデータの消失を防止することができる。なお、本実施の形態では、フラッシュメモリ１１５ａは、２つの不揮発性記憶領域を有するが、これに限らず、１または３以上の不揮発性記憶領域を有してもよい。
【００６３】
記憶デバイス１２０ａ〜１２０ｄは、上位装置との間で送受信されるデータを記憶し、ＲＡＩＤを構成するハードディスクドライブである。
ＳＣＵ１１６ａは、制御部１１０ａに対するＰＳＵ１４０ａ，１４０ｂからの通常時に使用している電力の供給が停止した場合に、制御部１１０ａの各部に所定量の電力を供給する。ＳＣＵ１１６ａは、通常時に使用している電力の供給が停止した場合にも、本実施の形態の転送制御部１０２がバックアップ処理における書き込みキャッシュの転送の実行に十分な電力を供給可能である。本実施の形態では、ディスクリプタ情報により、バックアップ処理の対象のデータのサイズの増加を抑制すると共にバックアップ処理の効率化を図ることでＳＣＵ１１６ａに要求される電力供給能力を低減することができる。
【００６４】
なお、本実施の形態ではフラッシュメモリ１１５ａを用いてキャッシュメモリ１１２ａのデータのバックアップを行うが、これに限らず、バックアップに揮発性の半導体メモリを用いると共に、ＳＣＵ１１６ａが制御部１１０ａに対する電力の供給が停止した場合には揮発性の半導体メモリに電力を供給することで、キャッシュメモリ１１２ａのデータをバックアップしてもよい。これにより、不揮発性メモリの代わりに揮発性メモリを用いてキャッシュメモリ１１２ａのデータをバックアップすることができる。
【００６５】
図４は、第２の実施の形態のキャッシュメモリおよびディスクリプタテーブルを示す図である。図４は、本実施の形態のストレージ装置１００が有するキャッシュメモリ１１２ａおよびキャッシュメモリ１１２ａに記憶されているディスクリプタ情報を格納しているディスクリプタテーブル１１２ａｄ１を示す。
【００６６】
キャッシュメモリ１１２ａは、ストレージ装置１００においてホストコンピュータ３００から送信され記憶デバイス１２０ａ〜１２０ｄに記憶される書き込みデータおよび記憶デバイス１２０ａ〜１２０ｄから読み出されホストコンピュータ３００に送信される読み出しデータを一時的に記憶する。キャッシュメモリ１１２ａは、本実施の形態では２ＧＢｙｔｅの記憶容量を有するものとするが、必ずしもこれに限られず、任意のサイズの記憶容量を有することができる。キャッシュメモリ１１２ａの記憶領域は、所定の記憶容量（例えば、フラッシュメモリ１１５ａのブロックに対応する４ＭＢｙｔｅ）毎に区分して管理されている。キャッシュメモリ１１２ａの区分された各記憶領域には、書き込みキャッシュ領域、読み出しキャッシュ領域、ディスクリプタ領域、バックアップ処理対象外領域のいずれかが設定される。
【００６７】
書き込みキャッシュ領域は、キャッシュメモリ１１２ａにおいて、記憶デバイス１２０ａ〜１２０ｄに未だに記憶されていない書き込みデータを含みバックアップ処理対象のデータである書き込みキャッシュが記憶されている記憶領域である。読み出しキャッシュ領域は、キャッシュメモリ１１２ａにおいて、記憶デバイス１２０ａ〜１２０ｄに既に記憶されている書き込みデータや記憶デバイス１２０ａ〜１２０ｄから読み出されホストコンピュータ３００に送信される読み出しデータ等のバックアップ処理対象でないデータである読み出しキャッシュのみが記憶されている記憶領域である。ディスクリプタ領域は、キャッシュメモリ１１２ａにおいて、ディスクリプタ情報が記憶されている記憶領域である。バックアップ処理対象外領域は、キャッシュメモリ１１２ａにおいて、バックアップ処理の必要がない制御データ等、バックアップ処理の対象外のデータが記憶されている記憶領域である。
【００６８】
図４の例では、キャッシュメモリ１１２ａにおいて、書き込みキャッシュ領域１１２ａ００、読み出しキャッシュ領域１１２ａ０１〜１１２ａ０４、書き込みキャッシュ領域１１２ａ０５，１１２ａ０６、読み出しキャッシュ領域１１２ａ０７、・・・、読み出しキャッシュ領域１１２ａ０ｅ、ディスクリプタ領域１１２ａ０ｄ、バックアップ処理対象外領域１１２ａ０ｘが設定されている。
【００６９】
書き込みキャッシュ領域１１２ａ００は、４ＭＢｙｔｅの１つのブロックを有する記憶領域であり、書き込みキャッシュが記憶されている。読み出しキャッシュ領域１１２ａ０１〜１１２ａ０４は、４つのブロックを有する１６ＭＢｙｔｅの記憶領域であり読み出しキャッシュが記憶されている。書き込みキャッシュ領域１１２ａ０５，１１２ａ０６は、２つのブロックを有する８ＭＢｙｔｅの記憶領域であり書き込みキャッシュが記憶されている。読み出しキャッシュ領域１１２ａ０７は、１つのブロックを有する４ＭＢｙｔｅの記憶領域であり読み出しキャッシュが記憶されている。読み出しキャッシュ領域１１２ａ０ｅは、最後の１つのブロックを有する４ＭＢｙｔｅの記憶領域であり読み出しキャッシュが記憶されている。ディスクリプタ領域１１２ａ０ｄは、ディスクリプタ情報が記憶されている。バックアップ処理対象外領域１１２ａ０ｘは、８ＭＢｙｔｅの記憶領域でありバックアップ処理の必要がない制御データ等が記憶されている。
【００７０】
ディスクリプタテーブル１１２ａｄ１は、ストレージ装置１００が有するキャッシュメモリ１１２ａのディスクリプタ領域１１２ａ０ｄに記憶されている。ディスクリプタテーブル１１２ａｄ１は、ストレージ装置１００が有するキャッシュメモリ１１２ａに記憶されている書き込みデータである書き込みキャッシュを示すディスクリプタ情報を格納するテーブルである。ディスクリプタテーブル１１２ａｄ１は、制御テーブルの一例である。
【００７１】
ディスクリプタテーブル１１２ａｄ１には、項目として“アドレス”、“転送サイズ”、“判別符号”、“ネクストアドレス（next address）”が設けられている。ディスクリプタテーブル１１２ａｄ１において、各項目の横方向に並べられた情報同士がディスクリプタ情報として互いに関連付けられている。
【００７２】
アドレスは、キャッシュメモリ１１２ａに記憶されている記憶領域のマッピング（mapping）アドレス（フラッシュメモリ１１５ａのブロックに対応して区分された記憶領域の先頭アドレス）を示す情報である。アドレスは、キャッシュメモリ１１２ａの記憶領域に対して、バックアップ処理時におけるフラッシュメモリ１１５ａへの転送時における１単位となる所定の記憶容量（例えば、４ＭＢｙｔｅ）毎に整数値が“０”から昇順で１ずつ増加するように割り当てられている。アドレスは、記憶位置情報の一例である。
【００７３】
ここで、ディスクリプタ情報は、書き込みキャッシュまたは読み出しキャッシュのうち同一の種類のキャッシュが記憶されている複数の連続するブロック（以下、同種連続ブロックとする）については、先頭のブロックのディスクリプタ情報に纏めて設定されるものとする。図４における書き込みキャッシュ領域１１２ａ００は、連続していない単独のブロックとなり、アドレス“０”に書き込みキャッシュ領域１１２ａ００のディスクリプタ情報が設定される。また、読み出しキャッシュ領域１１２ａ０１〜１１２ａ０４は、連続していると共に読み出しキャッシュを記憶しているので、アドレス“１”に読み出しキャッシュ領域１１２ａ０１〜１１２ａ０４のディスクリプタ情報が設定される。同様に、書き込みキャッシュ領域１１２ａ０５，１１２ａ０６は、アドレス“５”にディスクリプタ情報が設定され、読み出しキャッシュ領域１１２ａ０７、書き込みキャッシュ領域１１２ａ０ｅは、それぞれアドレス“７”，“５０９”にディスクリプタ情報が設定される。また、同種連続ブロックの先頭でないブロックの転送サイズ、判別符号、ネクストアドレスには“０”が設定される。
【００７４】
転送サイズは、キャッシュメモリ１１２ａに記憶されているブロックのフラッシュメモリ１１５ａへの転送時のサイズをＭＢｙｔｅで示す情報である。転送サイズは、所定の記憶容量単位で示すものとし、例えば、所定の記憶容量が４ＭＢｙｔｅであれば、転送サイズは“０”（ＭＢｙｔｅ），“４”，“８”，“１２”，・・・のように、所定の記憶容量の倍数で示される。転送サイズは、同種連続ブロックについては、先頭のブロックのディスクリプタ情報に設定される。例えば、読み出しキャッシュ領域１１２ａ０１〜１１２ａ０４の転送サイズは、アドレス“１”のディスクリプタ情報に纏めて“１６”として設定される。転送サイズは、転送サイズ情報の一例である。
【００７５】
判別符号は、ブロックのデータが、バックアップ処理対象であるか否かを示す情報である。ブロックが記憶デバイス１２０ａ〜１２０ｄに未だに記憶されていない書き込みデータを含む場合には、判別符号に“１”が設定される。ブロックが記憶デバイス１２０ａ〜１２０ｄに未だに記憶されていないデータを含まない場合（すなわち、ブロックのデータがすべて読み出しデータまたは既に記憶デバイス１２０ａ〜１２０ｄに記憶された書き込みデータのみである場合）には、判別符号に“０”が設定される。転送制御部１０２がバックアップ処理を実行する際には、判別符号に基づいて各ブロックがバックアップ処理対象であるか否かを判別し、バックアップ処理対象のブロックに記憶されているデータのみをフラッシュメモリ１１５ａに記憶させる。判別符号は、同種連続ブロックについては、先頭のブロックのディスクリプタ情報に設定される。例えば、読み出しキャッシュ領域１１２ａ０１〜１１２ａ０４の判別符号は、アドレス“１”のディスクリプタ情報に“０”（読み出しキャッシュ）として設定される。判別符号は、判別情報の一例である。
【００７６】
ネクストアドレスは、次のブロックのマッピングアドレスを示す情報である。転送制御部１０２が書き込みデータバックアップ処理を実行する際には、ネクストアドレスに示された次のブロックのアドレスを取得し、取得した次のブロックのアドレスに基づいて次のブロックのディスクリプタ情報を取得する。また、キャッシュメモリ１１２ａの最後のデータのブロック（読み出しキャッシュ領域１１２ａ０ｅ）には、ネクストアドレスに“ＮＵＬＬ”が設定される。転送制御部１０２は、ＮＵＬＬを取得した場合には、当該ブロックでキャッシュメモリ１１２ａのバックアップ処理を終了し、ディスクリプタ領域１１２ａ０ｄおよびその他の必要な制御情報のバックアップ処理を行う。ネクストアドレスは、同種連続ブロックについては、先頭のブロックのディスクリプタ情報に設定される。例えば、読み出しキャッシュ領域１１２ａ０１〜１１２ａ０４のネクストアドレスは、アドレス“１”のディスクリプタ情報に“５”（次のブロックのマッピングアドレス）として設定される。ネクストアドレスは、連続データ位置情報の一例である。
【００７７】
なお、転送制御部１０２は、バックアップ処理で対象のブロックをフラッシュメモリ１１５ａに記憶させる際において、各ブロックがバックアップ対象であるか否かの判定時に、同種連続ブロックについては、先頭のブロックのディスクリプタ情報で判定してもよい。この場合、転送サイズ、判別符号、ネクストアドレスがすべて“０”であるディスクリプタ情報は、同種連続ブロックの先頭でないブロックのディスクリプタ情報であるため、読み込み対象から除外することができる。
【００７８】
図５は、第２の実施の形態のキャッシュメモリに記憶されている書き込みキャッシュおよび読み出しキャッシュを示す図である。上記のように、本実施の形態では、キャッシュメモリ１１２ａの各記憶領域についてバックアップ対象である書き込みキャッシュ領域およびバックアップ対象でない読み出しキャッシュ領域のいずれかが設定される。図５の例では、キャッシュメモリ１１２ａにそれぞれ４ＭＢｙｔｅの記憶容量を有する書き込みキャッシュ領域１１２ａ１０，１１２ａ１１および読み出しキャッシュ領域１１２ａ１２が設定されているものとする。
【００７９】
書き込みキャッシュ領域は、前述したように、書き込みキャッシュを一部または全部に記憶している記憶領域である。ここで、書き込みキャッシュは、記憶デバイス１２０ａ〜１２０ｄに未だに記憶されていない書き込みデータであり、バックアップ対象のデータである。図５に示すように、書き込みキャッシュ領域１１２ａ１０には、書き込みキャッシュ１１２ａ１００，１１２ａ１０２および読み出しキャッシュ１１２ａ１０１が記憶されているものとする。このように、書き込みキャッシュ領域１１２ａ１０には、書き込みキャッシュ１１２ａ１００，１１２ａ１０２が記憶されているので、書き込みキャッシュ領域１１２ａ１０は、書き込みキャッシュ領域に該当する。同様に、書き込みキャッシュ領域１１２ａ１１には、書き込みキャッシュ１１２ａ１１０が記憶されているものとする。このように、書き込みキャッシュ領域１１２ａ１１には、書き込みキャッシュ１１２ａ１１０が記憶されているので、書き込みキャッシュ領域１１２ａ１１は、書き込みキャッシュ領域に該当する。
【００８０】
読み出しキャッシュ領域は、前述したように、書き込みキャッシュを全く記憶しておらず、読み出しキャッシュのみを記憶している記憶領域である。ここで、読み出しキャッシュは、記憶デバイス１２０ａ〜１２０ｄに既に記憶されている書き込みデータや記憶デバイス１２０ａ〜１２０ｄから読み出されホストコンピュータ３００に送信される読み出しデータ等のバックアップ対象でないデータである。図５に示すように、読み出しキャッシュ領域１１２ａ１２には、読み出しキャッシュ１１２ａ１２０が記憶されているものとする。このように、読み出しキャッシュ領域１１２ａ１２には、書き込みキャッシュが記憶されていないので、読み出しキャッシュ領域１１２ａ１２は、読み出しキャッシュ領域に該当する。
【００８１】
図６は、第２の実施の形態の書き込みデータをキャッシュメモリに記憶する処理の実行時におけるキャッシュメモリおよびディスクリプタテーブルを示す図である。図６は、本実施の形態のストレージ装置１００が有するキャッシュメモリ１１２ａを示すと共に書き込みデータをキャッシュメモリに記憶する処理の実行時におけるキャッシュメモリ１１２ａに記憶されているディスクリプタ情報を格納しているディスクリプタテーブル１１２ａｄ２の様子を示す。
【００８２】
図６の例では、上記図４の状態において読み出しキャッシュ領域１１２ａ０１に対して書き込みデータが記憶されたものとする。これにより、図４における読み出しキャッシュ領域１１２ａ０１が、書き込みキャッシュ領域１１２ａ２１に変更されている。また、他の記憶領域である書き込みキャッシュ領域１１２ａ２０，１１２ａ２５，１１２ａ２６、読み出しキャッシュ領域１１２ａ２２〜１１２ａ２４，１１２ａ２７，１１２ａ２ｅの設定は、図４においてそれぞれ対応する書き込みキャッシュ領域１１２ａ００，１１２ａ０５，１１２ａ０６、読み出しキャッシュ領域１１２ａ０２〜１１２ａ０４，１１２ａ０７、１１２ａ０ｅから変更されていないものとする。
【００８３】
また、読み出しキャッシュ領域１１２ａ０１に対して書き込みデータが記憶され、書き込みキャッシュ領域１１２ａ２１に変更されたことにより、読み出しキャッシュ領域１１２ａ０１に対応するディスクリプタ情報が更新される。具体的には、書き込みキャッシュ領域１１２ａ２１のディスクリプタ情報を格納しているディスクリプタテーブル１１２ａｄ２のアドレス“１”の転送サイズが（１ブロック当たり４Ｍｂｙｔｅであるため）、変更された書き込みキャッシュ領域１１２ａ２１のフラッシュメモリ１１５ａへの転送時のサイズを示す“４”に更新される。また、アドレス“１”の判別符号が、変更された書き込みキャッシュ領域１１２ａ２１が書き込みキャッシュ領域であることを示す“１”に更新される。また、アドレス“１”のネクストアドレスが、次のブロックである読み出しキャッシュ領域１１２ａ２２〜１１２ａ２４のマッピングアドレスを示す“２”に更新される。
【００８４】
また、読み出しキャッシュ領域１１２ａ０１に書き込みデータが記憶され、書き込みキャッシュ領域１１２ａ２１に変更されたことに基づいて、読み出しキャッシュ領域１１２ａ０２〜１１２ａ０４（すなわち、読み出しキャッシュ領域１１２ａ２２〜１１２ａ２４）についての設定は維持されるが、先頭のブロックである読み出しキャッシュ領域１１２ａ２２のディスクリプタ情報については再設定が行われる。具体的には、読み出しキャッシュ領域１１２ａ２２のディスクリプタ情報を格納しているディスクリプタテーブル１１２ａｄ２のアドレス“２”の転送サイズが、同種連続ブロックである読み出しキャッシュ領域１１２ａ２２〜１１２ａ２４のフラッシュメモリ１１５ａへの転送時のサイズを示す“１２”に更新される。また、アドレス“２”の判別符号は、読み出しキャッシュ領域１１２ａ２２〜１１２ａ２４が読み出しキャッシュ領域であることを示す“０”のまま維持される。また、アドレス“２”のネクストアドレスが、次のブロックである書き込みキャッシュ領域１１２ａ２５，１１２ａ２６のマッピングアドレスを示す“５”に更新される。
【００８５】
図７は、第２の実施の形態の書き込みデータキャッシュ処理を示す図である。本実施の形態のストレージ装置１００は、記憶デバイス１２０ａ〜１２０ｄに記憶される書き込みデータをホストコンピュータ３００から受信すると、受信した書き込みデータを一時的にキャッシュメモリ１１２ａに記憶すると共に、書き込みデータのキャッシュメモリ１１２ａへの記憶の完了に基づいてディスクリプタ情報の生成および更新を行う書き込みデータキャッシュ処理を実行する。以下では、図７に示す書き込みデータキャッシュ処理をフローチャートのステップ番号に沿って説明する。
【００８６】
［ステップＳ１１］メイン制御部１０１は、ホストコンピュータ３００から送信された書き込みデータを受信する。
［ステップＳ１２］メイン制御部１０１は、ステップＳ１１で受信した書き込みデータのキャッシュデータ（書き込みキャッシュ）をキャッシュメモリ１１２ａに記憶させる。例えば、図６の書き込みキャッシュ領域１１２ａ２１において、書き込みデータのキャッシュデータである書き込みキャッシュが記憶されたものとする。
【００８７】
［ステップＳ１３］メイン制御部１０１は、ステップＳ１２における書き込みデータのキャッシュメモリ１１２ａへの記憶の完了に基づいて、書き込みデータの記憶を反映したディスクリプタ情報を生成すると共に、生成したディスクリプタ情報により、キャッシュメモリ１１２ａのディスクリプタ領域に記憶されているディスクリプタ情報を更新する。具体的には、上記のように図６に示す書き込みキャッシュ領域１１２ａ２１に書き込みキャッシュが記憶されたものとする。この場合、図６のディスクリプタテーブル１１２ａｄ２におけるアドレス１のディスクリプタ情報のように、転送サイズが“４”（書き込みキャッシュ領域１１２ａ２１は連続していない単独の書き込みキャッシュ領域であるため）、判別符号が“１”（書き込みキャッシュ（バックアップ対象））、ネクストアドレスが“２”（次の連続する記憶領域である読み出しキャッシュ領域１１２ａ２２のマッピングアドレス）のディスクリプタ情報が生成され、ディスクリプタテーブル１１２ａｄ２に設定される。
【００８８】
［ステップＳ１４］メイン制御部１０１は、ステップＳ１３におけるディスクリプタ情報の生成に基づいて、書き込みキャッシュが記憶された記憶領域に連続する記憶領域のディスクリプタ情報について変更する必要が生じた場合には、ディスクリプタ情報を更新する。これは、例えば、同種連続ブロックである読み出しキャッシュ領域の一部のブロックに書き込みキャッシュが記憶され、読み出しキャッシュ領域が書き込みキャッシュ領域に変更されたものとする。この場合には、連続していた複数の読み出しキャッシュ領域が分断されたり、先頭のブロックの記憶領域の種類が変更されたりすることにより、書き込みキャッシュが記憶されて変更された書き込みキャッシュ領域に連続する読み出しキャッシュ領域のディスクリプタ情報の転送サイズやネクストアドレスが変更される場合がある。この場合には、ディスクリプタ情報生成部１０１ａにより、ディスクリプタ情報について必要な更新が行われる。具体的には、図６のアドレス“２”のディスクリプタ情報のように、転送サイズが“１２”（書き込みキャッシュの記憶後においても同種連続ブロックである読み出しキャッシュメモリ１１２ａ２２〜１１２ａ４のサイズ）、判別符号が“０”（読み出しキャッシュ（バックアップ対象外））、ネクストアドレスが“５”（次の連続する記憶領域である書き込みキャッシュ領域１１２ａ２５のマッピングアドレス）のディスクリプタ情報が生成され、ディスクリプタテーブル１１２ａｄ２に設定される。その後、処理は終了する。
【００８９】
なお、本実施の形態の書き込みデータキャッシュ処理では、ステップＳ１２で書き込みデータがキャッシュメモリ１１２ａに記憶された後、ステップＳ１３でディスクリプタ情報が生成され、ステップＳ１４でディスクリプタ領域のディスクリプタ情報が更新されるが、これに限らず、ディスクリプタ情報の生成および更新が完了された後に、書き込みデータがキャッシュメモリ１１２ａに記憶されてもよい。
【００９０】
図８は、第２の実施の形態の書き込みデータを記憶デバイスにライトバックする処理の実行時におけるキャッシュメモリおよびディスクリプタテーブルを示す図である。図８は、本実施の形態のストレージ装置１００が有するキャッシュメモリ１１２ａを示すと共にキャッシュメモリ１１２ａに記憶されている書き込みデータを記憶デバイス１２０ａ〜１２０ｄに記憶させるライトバックを行う処理の実行時におけるキャッシュメモリ１１２ａに記憶されているディスクリプタ情報を格納しているディスクリプタテーブル１１２ａｄ３の様子を示す。
【００９１】
図８の例では、上記図４の状態において書き込みキャッシュ領域１１２ａ０５に記憶されている書き込みデータが記憶デバイス１２０ａ〜１２０ｄにライトバックされたものとする。これにより、書き込みキャッシュ領域１１２ａ０５に記憶されていたブロックについてバックアップ処理の必要がなくなったため、図４における書き込みキャッシュ領域１１２ａ０５が、読み出しキャッシュ領域１１２ａ３５に変更されている。また、他の記憶領域である書き込みキャッシュ領域１１２ａ３０，１１２ａ３６、読み出しキャッシュ領域１１２ａ３１〜１１２ａ３４，１１２ａ３７，１１２ａ３ｅの設定は、図４においてそれぞれ対応する書き込みキャッシュ領域１１２ａ００，１１２ａ０６、読み出しキャッシュ領域１１２ａ０１〜１１２ａ０４，１１２ａ０７，１１２ａ０ｅから変更されていないものとする。
【００９２】
また、書き込みキャッシュ領域１１２ａ０５に記憶されている書き込みデータがライトバックされ、読み出しキャッシュ領域１１２ａ３５に変更されたことにより、書き込みキャッシュ領域１１２ａ０５に対応するディスクリプタ情報が更新される。具体的には、読み出しキャッシュ領域１１２ａ３５のディスクリプタ情報を格納しているディスクリプタテーブル１１２ａｄ３のアドレス“５”の転送サイズが、変更された読み出しキャッシュ領域１１２ａ３５のフラッシュメモリ１１５ａへの転送時のサイズを示す“４”に更新される。また、アドレス“５”の判別符号が、変更された読み出しキャッシュ領域１１２ａ３５が読み出しキャッシュ領域であることを示す“０”に更新される。また、アドレス“５”のネクストアドレスが、次のブロックである書き込みキャッシュ領域１１２ａ３６のマッピングアドレスを示す“６”に更新される。
【００９３】
また、書き込みキャッシュ領域１１２ａ０５の書き込みデータがライトバックされ、読み出しキャッシュ領域１１２ａ３５に変更されたことに基づいて、書き込みキャッシュ領域１１２ａ０６（書き込みキャッシュ領域１１２ａ３６）についての設定は維持されるが、書き込みキャッシュ領域１１２ａ３６のディスクリプタ情報については再設定が行われる。具体的には、書き込みキャッシュ領域１１２ａ３６のディスクリプタ情報を格納しているディスクリプタテーブル１１２ａｄ３のアドレス“６”の転送サイズが、書き込みキャッシュ領域１１２ａ３６のフラッシュメモリ１１５ａへの転送時のサイズを示す“４”に更新される。また、アドレス“５”の判別符号は、書き込みキャッシュ領域１１２ａ３６が書き込みキャッシュ領域であることを示す“１”に更新される。また、アドレス“２”のネクストアドレスが、次のブロックである読み出しキャッシュ領域１１２ａ３７のマッピングアドレスを示す“７”に更新される。
【００９４】
図９は、第２の実施の形態の書き込みデータライトバック処理を示す図である。本実施の形態のストレージ装置１００は、ホストコンピュータ３００から送信され、キャッシュメモリ１１２ａに記憶した書き込みデータを、記憶デバイス１２０ａ〜１２０ｄに記憶させるライトバックを行うと共に、書き込みデータの記憶デバイス１２０ａ〜１２０ｄへの書き込みに基づいてディスクリプタ情報の生成および更新を行う書き込みデータライトバック処理を実行する。以下では、図９に示す書き込みデータライトバック処理をフローチャートのステップ番号に沿って説明する。
【００９５】
［ステップＳ２１］メイン制御部１０１は、キャッシュメモリ１１２ａに記憶されている、記憶デバイス１２０ａ〜１２０ｄに記憶されていない書き込みデータを記憶デバイス１２０ａ〜１２０ｄに記憶させるライトバックを行う。例えば、図８の読み出しキャッシュ領域１１２ａ３５において、記憶されていた書き込みキャッシュが記憶デバイス１２０ａ〜１２０ｄにライトバックされたものとする。
【００９６】
［ステップＳ２２］メイン制御部１０１は、ステップＳ２１における書き込みデータのライトバックに基づいて、書き込みデータのライトバックを反映したディスクリプタ情報を生成すると共に、生成したディスクリプタ情報により、キャッシュメモリ１１２ａのディスクリプタ領域に記憶されているディスクリプタ情報を更新する。具体的には、上記のように、図８に示す読み出しキャッシュ領域１１２ａ３５に記憶されていた書き込みキャッシュが記憶デバイス１２０ａ〜１２０ｄに記憶されたものとする。この場合、図８のディスクリプタテーブル１１２ａｄ３におけるアドレス５のディスクリプタ情報のように、転送サイズが“４”（読み出しキャッシュ領域１１２ａ３５は連続していない単独の書き込みキャッシュ領域であるため）、判別符号が“０”（読み出しキャッシュ（バックアップ対象外））、ネクストアドレスが“６”（次の連続する記憶領域である書き込みキャッシュ領域１１２ａ３６のマッピングアドレス）のディスクリプタ情報が生成され、ディスクリプタテーブル１１２ａｄ３に設定される。
【００９７】
［ステップＳ２３］メイン制御部１０１は、ステップＳ２２におけるディスクリプタ情報の生成に基づいて、書き込みデータが記憶デバイス１２０ａ〜１２０ｄに記憶された記憶領域に連続する記憶領域のディスクリプタ情報について変更する必要が生じた場合には、ディスクリプタ情報を更新する。これは、例えば、同種連続ブロックである書き込みキャッシュ領域の一部のブロックのデータがすべて記憶デバイス１２０ａ〜１２０ｄに記憶され、書き込みキャッシュ領域が書き込みキャッシュ領域に変更されたものとする。この場合には、連続していた複数の書き込みキャッシュ領域が分断されたり、先頭のブロックの記憶領域の種類が変更されたりすることにより、書き込みキャッシュが記憶デバイス１２０ａ〜１２０ｄに記憶されたことにより変更された読み出しキャッシュ領域に連続する書き込みキャッシュ領域のディスクリプタ情報の転送サイズやネクストアドレスが変更される場合がある。この場合には、ディスクリプタ情報生成部１０１ａにより、ディスクリプタ情報について必要な更新が行われる。具体的には、図８のアドレス“６”のディスクリプタ情報のように、転送サイズが“４”（書き込みキャッシュの記憶後における書き込みキャッシュメモリ１１２ａ３６のサイズ）、判別符号が“１”（書き込みキャッシュ（バックアップ対象））、ネクストアドレスが“７”（次の連続する記憶領域である読み出しキャッシュ領域１１２ａ３７のマッピングアドレス）のディスクリプタ情報が生成され、ディスクリプタテーブル１１２ａｄ３に設定される。その後、処理は終了する。
【００９８】
なお、本実施の形態の書き込みデータライトバック処理では、ステップＳ２１で書き込みデータが記憶デバイス１２０ａ〜１２０ｄにライトバックされた後、ステップＳ２２でディスクリプタ情報が生成され、ステップＳ２３でディスクリプタ領域のディスクリプタ情報が更新されるが、これに限らず、ディスクリプタ情報の生成および更新が完了された後に、書き込みデータが記憶デバイス１２０ａ〜１２０ｄにライトバックされてもよい。
【００９９】
図１０は、第２の実施の形態の書き込みデータバックアップ処理を示す図である。本実施の形態のストレージ装置１００は、停電発生時に、キャッシュメモリ１１２ａに記憶したデータのうちライトバックされていない書き込みデータをフラッシュメモリ１１５ａに記憶させてバックアップする書き込みデータバックアップ処理を実行する。以下では、図１０に示す書き込みデータバックアップ処理をフローチャートのステップ番号に沿って説明する。
【０１００】
［ステップＳ３１］転送制御部１０２は、キャッシュメモリ１１２ａに記憶されているディスクリプタ情報を先頭から順に１つ読み出す。
［ステップＳ３２］転送制御部１０２は、ステップＳ３１で読み出したディスクリプタ情報が、書き込みデータを示すものであるか否かを判定する。ディスクリプタ情報が書き込みデータを示すものであれば（ステップＳ３２  ＹＥＳ）、処理はステップＳ３３に進められる。一方、ディスクリプタ情報が書き込みデータを示すものでなければ（ステップＳ３２  ＮＯ）、処理はステップＳ３４に進められる。
【０１０１】
［ステップＳ３３］転送制御部１０２は、ステップＳ３２で書き込みデータのものであると判定したディスクリプタ情報に示された書き込みデータを、フラッシュメモリ１１５ａに記憶させる。
【０１０２】
［ステップＳ３４］転送制御部１０２は、ステップＳ３１で直近に読み出されたディスクリプタ情報が最後のものであり、キャッシュメモリ１１２ａに記憶されているすべてのディスクリプタ情報の読み出しが完了しているか否かを判定する。すべてのディスクリプタ情報の読み出しが完了していれば（ステップＳ３４  ＹＥＳ）、処理はステップＳ３５に進められる。一方、すべてのディスクリプタ情報の読み出しが完了していなければ（ステップＳ３４  ＮＯ）、処理はステップＳ３１に進められる。
【０１０３】
［ステップＳ３５］転送制御部１０２は、キャッシュメモリ１１２ａのディスクリプタ領域に記憶されているディスクリプタ情報をフラッシュメモリ１１５ａに記憶させる。その後、処理は終了する。
【０１０４】
図１１は、第２の実施の形態の書き込みデータをキャッシュメモリに格納する動作を示すシーケンス図である。本実施の形態のストレージ装置１００では、メイン制御部１０１は、ホストコンピュータ３００から送信された書き込みデータについてキャッシュメモリ１１２ａに一時的に記憶させると共にディスクリプタ情報を生成し、生成したディスクリプタ情報を更新する。以下に、図１１に沿って、送信された書き込みデータのキャッシュメモリ１１２ａへの記憶ならびにディスクリプタ情報の生成および更新の手順について説明する。
【０１０５】
［ステップＳ１１１］ホストコンピュータ３００は、ストレージ装置１００に対して書き込みデータを送信する。メイン制御部１０１は、ストレージ装置１００が受信した書き込みデータをキャッシュメモリ１１２ａに送信する。
【０１０６】
［ステップＳ１１２］キャッシュメモリ１１２ａは、メイン制御部１０１の制御に基づいて、ステップＳ１１１で送信された書き込みデータを記憶する。また、メイン制御部１０１は、受信した書き込みデータのキャッシュメモリ１１２ａへの記憶が完了すると、ホストコンピュータ３００に対して受信した書き込みデータの記憶デバイス１２０ａ〜１２０ｄへの書き込みが完了した旨を応答する。
【０１０７】
［ステップＳ１１３］メイン制御部１０１は、ステップＳ１１２におけるキャッシュメモリ１１２ａへの書き込みデータの記憶の完了に基づいて、記憶が反映されたディスクリプタ情報を生成し、生成したディスクリプタ情報をキャッシュメモリ１１２ａに送信する。
【０１０８】
［ステップＳ１１４］キャッシュメモリ１１２ａは、メイン制御部１０１の制御に基づいて、ステップＳ１１３で生成されたディスクリプタ情報で、ディスクリプタ領域に記憶しているディスクリプタ情報を更新する。
【０１０９】
ここで、図１１では、ステップＳ１１２におけるキャッシュメモリ１１２ａへの書き込みデータの記憶に基づく書き込みデータが記憶されたキャッシュメモリ１１２ａの書き込みキャッシュ領域に連続する他の記憶領域のディスクリプタ情報の更新については、説明を省略するが、メイン制御部１０１により、図７のステップＳ１４に従って行われる。
【０１１０】
図１２は、第２の実施の形態の読み出しデータをホストコンピュータに送信する動作を示すシーケンス図である。本実施の形態のストレージ装置１００では、メイン制御部１０１は、ホストコンピュータ３００から送信された読み出しコマンドに応じて、記憶デバイス１２０ａ〜１２０ｄに記憶されているデータを読み出し、読み出しデータをキャッシュメモリ１１２ａに一時的に記憶させた後にホストコンピュータ３００に送信すると共にディスクリプタ情報を生成し、生成したディスクリプタ情報を更新する。以下に、図１２に沿って、ホストコンピュータ３００から要求された読み出しデータの記憶デバイス１２０ａ〜１２０ｄからの読み出し、キャッシュメモリ１１２ａへの記憶およびホストコンピュータ３００への送信ならびにディスクリプタ情報の生成および更新の手順について説明する。
【０１１１】
［ステップＳ１２１］ホストコンピュータ３００は、ストレージ装置１００に対して読み出しデータの読み出しを要求すると共に読み出しデータを特定する読み出しコマンドを送信する。
【０１１２】
［ステップＳ１２２］記憶デバイス１２０ａ〜１２０ｄは、メイン制御部１０１の制御に基づいて、ステップＳ１２１で受信された読み出しコマンドで特定された読み出しデータを記憶デバイス１２０ａ〜１２０ｄのいずれかが有する記憶領域から読み出してキャッシュメモリ１１２ａに送信する。
【０１１３】
［ステップＳ１２３］キャッシュメモリ１１２ａは、メイン制御部１０１の制御に基づいて、ステップＳ１２２で送信された読み出しデータを記憶する。
［ステップＳ１２４］キャッシュメモリ１１２ａは、メイン制御部１０１の制御に基づいて、ステップＳ１２３で記憶した読み出しデータをホストコンピュータ３００に送信する。
【０１１４】
［ステップＳ１２５］メイン制御部１０１は、ステップＳ１２３におけるキャッシュメモリ１１２ａへの読み出しデータの記憶の完了に基づいて、記憶が反映されたディスクリプタ情報を生成し、生成したディスクリプタ情報をキャッシュメモリ１１２ａに送信する。
【０１１５】
［ステップＳ１２６］キャッシュメモリ１１２ａは、メイン制御部１０１の制御に基づいて、ステップＳ１２５で生成されたディスクリプタ情報で、ディスクリプタ領域に記憶しているディスクリプタ情報を更新する。
【０１１６】
ここで、ステップＳ１２６における読み出しデータが読み出されたキャッシュメモリ１１２ａの読み出しキャッシュ領域に連続する他の記憶領域のディスクリプタ情報については、読み出しの前後においてバックアップ対象外であることは変わりないため、メイン制御部１０１は、更新を行わない。なお、これに限らず、図１１に示す書き込みデータのキャッシュメモリ１１２ａへの記憶と同様に、メイン制御部１０１は、データが読み出された読み出しキャッシュ領域に連続する他の記憶領域のディスクリプタ情報について更新を行ってもよい。
【０１１７】
図１３は、第２の実施の形態の書き込みデータを記憶デバイスにライトバックする動作を示すシーケンス図である。本実施の形態のストレージ装置１００では、メイン制御部１０１は、ホストコンピュータ３００から送信され、キャッシュメモリ１１２ａに一時的に記憶された書き込みデータについて、非同期で記憶デバイス１２０ａ〜１２０ｄに記憶させると共にディスクリプタ情報を生成し、生成したディスクリプタ情報を更新する。以下に、図１３に沿って、キャッシュメモリ１１２ａに記憶されている書き込みデータの記憶デバイス１２０ａ〜１２０ｄへの書き込みならびにディスクリプタ情報の生成および更新の手順について説明する。
【０１１８】
［ステップＳ１３１］キャッシュメモリ１１２ａは、メイン制御部１０１の制御に基づいて、キャッシュメモリ１１２ａに記憶している書き込みデータのうち、メイン制御部１０１によって特定された書き込みデータを記憶デバイス１２０ａ〜１２０ｄに送信する。
【０１１９】
［ステップＳ１３２］記憶デバイス１２０ａ〜１２０ｄは、メイン制御部１０１の制御に基づいて、キャッシュメモリ１１２ａから送信された書き込みデータを記憶デバイス１２０ａ〜１２０ｄの記憶領域に記憶する。
【０１２０】
［ステップＳ１３３］メイン制御部１０１は、ステップＳ１３２における記憶デバイス１２０ａ〜１２０ｄへの書き込みデータの書き込みに基づいて、書き込みが反映されたディスクリプタ情報を生成し、生成したディスクリプタ情報をキャッシュメモリ１１２ａに送信する。
【０１２１】
［ステップＳ１３４］キャッシュメモリ１１２ａは、メイン制御部１０１の制御に基づいて、ステップＳ１３３で生成されたディスクリプタ情報で、ディスクリプタ領域に記憶しているディスクリプタ情報を更新する。
【０１２２】
ここで、図１３では、ステップＳ１３２における記憶デバイス１２０ａ〜１２０ｄへの書き込みデータの書き込みに基づいて行われる、書き込みデータが読み出されたキャッシュメモリ１１２ａの読み出しキャッシュ領域に連続する他の記憶領域のディスクリプタ情報の更新については、説明を省略するが、メイン制御部１０１により、図９のステップＳ２３に従って行われる。
【０１２３】
図１４は、第２の実施の形態の書き込みデータをフラッシュメモリにバックアップする動作を示すシーケンス図である。本実施の形態のストレージ装置１００では、メイン制御部１０１は、停電発生時に、転送制御部１０２に停電の発生およびキャッシュメモリ１１２ａにおいてディスクリプタ情報を記憶しているディスクリプタ領域の先頭アドレスを通知する。転送制御部１０２は、停電の発生およびディスクリプタ領域が通知されると、キャッシュメモリ１１２ａからディスクリプタ情報を読み出して書き込みデータをフラッシュメモリ１１５ａが有する不揮発性記憶領域１１５ａ１，１１５ａ２に書き込んでバックアップする。以下に、図１４に沿って、停電の発生およびディスクリプタ領域の先頭アドレスの通知ならびに書き込みデータのバックアップ処理の手順について説明する。
【０１２４】
［ステップＳ１４１］メイン制御部１０１は、キャッシュメモリ１１２ａからディスクリプタ領域の先頭アドレスを取得し、停電の発生および取得したディスクリプタ領域の先頭アドレスを転送制御部１０２に通知する。
【０１２５】
［ステップＳ１４２］転送制御部１０２は、キャッシュメモリ１１２ａのディスクリプタ領域からディスクリプタ情報を１つ読み出す。このとき転送制御部１０２は、停電の発生の通知を受けた後、最初のディスクリプタ情報の読み出しを行う場合には、停電の発生と共に通知されたディスクリプタ領域の先頭アドレスで示されたキャッシュメモリ１１２ａの記憶領域に記憶されているディスクリプタ情報を読み出す。一方、転送制御部１０２は、その後ディスクリプタ情報の読み出しを行う場合には、前回読み出したディスクリプタ情報のネクストアドレスで示されたキャッシュメモリ１１２ａの記憶領域に記憶されているディスクリプタ情報を読み出す。
【０１２６】
［ステップＳ１４３］転送制御部１０２は、ステップＳ１４２で読み出したディスクリプタ情報で示されたデータ（書き込みデータまたは読み出しデータ）が、バックアップ対象である書き込みデータである場合には、書き込みデータをキャッシュメモリ１１２ａから読み出す。ここで、転送制御部１０２は、ステップＳ１４２で読み出したディスクリプタ情報で示されたデータが、バックアップ対象ではない読み出しデータである場合には、バックアップを行わないのでキャッシュメモリ１１２ａから読み出さない。
【０１２７】
［ステップＳ１４４］転送制御部１０２は、ステップＳ１４３で書き込みデータを読み出した場合には、不揮発性記憶領域１１５ａ１，１１５ａ２に書き込みデータを送信する。
【０１２８】
［ステップＳ１４５ａ］不揮発性記憶領域１１５ａ１は、転送制御部１０２の制御に基づいて、ステップＳ１４４で転送制御部１０２から送信された書き込みデータを記憶する。
【０１２９】
［ステップＳ１４５ｂ］不揮発性記憶領域１１５ａ２は、ステップＳ１４５ａと同様、転送制御部１０２の制御に基づいて、ステップＳ１４４で転送制御部１０２から送信された書き込みデータを記憶する。
【０１３０】
［ステップＳ１４６］転送制御部１０２は、すべての書き込みデータの退避が完了した場合には、不揮発性記憶領域１１５ａ１，１１５ａ２に対して、それぞれの記憶領域に記憶させた書き込みデータに対応するディスクリプタ情報を送信する。
【０１３１】
［ステップＳ１４７ａ］不揮発性記憶領域１１５ａ１は、転送制御部１０２の制御に基づいて、ステップＳ１４６で転送制御部１０２から送信されたディスクリプタ情報を記憶する。
【０１３２】
［ステップＳ１４７ｂ］不揮発性記憶領域１１５ａ２は、ステップＳ１４７ａと同様、転送制御部１０２の制御に基づいて、ステップＳ１４６で転送制御部１０２から送信されたディスクリプタ情報を記憶する。
【０１３３】
ステップＳ１４５ａおよびステップＳ１４５ｂにより、キャッシュメモリ１１２ａに記憶されている未だに記憶デバイス１２０ａ〜１２０ｄに記憶されていない書き込みデータのフラッシュメモリ１１５ａへの退避が行われる。
【０１３４】
本実施の形態のフラッシュメモリ１１５ａは、不揮発性記憶領域１１５ａ１，１１５ａ２を有する。本実施の形態の転送制御部１０２は、キャッシュメモリ１１２ａの書き込みデータの退避時には、キャッシュメモリ１１２ａに記憶されている複数の書き込みデータを２つに分け、分けたうちの一方を不揮発性記憶領域１１５ａ１に記憶させると共に、並行して分けたうちの他方を不揮発性記憶領域１１５ａ２に記憶させる。これにより、書き込みデータのフラッシュメモリ１１５ａへの退避に要する時間を短縮することができる。
【０１３５】
ここで、キャッシュメモリ１１２ａに記憶されているすべての未だに記憶デバイス１２０ａ〜１２０ｄに記憶されていない書き込みデータの不揮発性記憶領域１１５ａ１，１１５ａ２への退避が完了するまで、ステップＳ１４２〜ステップＳ１４５ａおよびステップＳ１４５ｂの処理が繰り返される。
【０１３６】
また、ステップＳ１４６において、転送制御部１０２は、不揮発性記憶領域１１５ａ１，１１５ａ２に対して、それぞれ記憶領域に記憶させた書き込みデータに対応するディスクリプタ情報を送信して記憶させるが、これに限らず、不揮発性記憶領域１１５ａ１，１１５ａ２に対して、互いの記憶領域に記憶させた書き込みデータに対応するディスクリプタ情報を含むすべてのディスクリプタ情報を送信して記憶させてもよい。また、一方の不揮発性記憶領域にすべてのディスクリプタ情報を送信して記憶させてもよい。
【０１３７】
このように、第２の実施の形態のストレージ装置１００では、キャッシュメモリ１１２ａにおけるデータの記憶状態を示すディスクリプタ情報を生成するので、キャッシュメモリ１１２ａに一時的に記憶されているデータのバックアップ処理を高速化し、バックアップ処理に要する時間を短縮することが可能となる。これにより、ＳＣＵ１１６ａに蓄積されている電力の不足によってキャッシュメモリ１１２ａのデータのフラッシュメモリ１１５ａへの退避が完了しない事態の発生を抑制する。
【０１３８】
また、ディスクリプタ情報の判別符号により、キャッシュメモリ１１２ａに記憶されているデータがバックアップ対象であるか否かを示し、転送時にディスクリプタ情報に基づいてバックアップ対象のデータを転送するので、転送処理に要する時間を短縮できる。
【０１３９】
また、ホストコンピュータ３００から送信された書き込みデータがキャッシュメモリ１１２ａに記憶された場合には、当該データがバックアップ対象である旨を示すようにディスクリプタ情報を生成するので、バックアップ対象のデータが生じた際に、キャッシュメモリ１１２ａの最新の状態をディスクリプタ情報に反映させることができる。
【０１４０】
また、ホストコンピュータ３００から送信された書き込みデータの記憶デバイス１２０ａ〜１２０ｄへの書き込みが完了した場合には、ディスクリプタ情報においてバックアップ対象から除外されるので、不要なデータがバックアップされることを防止でき、バックアップ処理に要する時間の増加を抑制できる。
【０１４１】
また、ディスクリプタ情報は、キャッシュメモリ１１２ａに記憶されており、電源の供給が停止した場合に書き込みキャッシュと共にフラッシュメモリ１１５ａに転送され、ディスクリプタ情報が書き込みキャッシュと共にバックアップされるので、書き込みキャッシュのバックアップ処理および復旧処理の効率化が図れる。
【０１４２】
また、バックアップ処理の対象でないデータのディスクリプタ情報にはバックアップ処理の対象でない旨が示されるのでデータの転送を省略でき、バックアップ処理に要する時間の増加を抑制できる。
【０１４３】
また、バックアップ先として不揮発性メモリであるフラッシュメモリ１１５ａを用いることで、ＳＣＵ１１６ａによる電力の供給が停止された後も書き込みキャッシュを保持できる。
【０１４４】
また、バックアップ先のメモリに復旧まで十分な電力を供給することにより、不揮発性メモリを用いずに復旧まで書き込みキャッシュを保持することもできる。
また、キャッシュメモリ１１２ａは、記憶デバイス１２０ａ〜１２０ｄに対して読み書きされるデータを読み書きの処理が完了するまで一時的に記憶するので、記憶内容が動的に変化することが想定される。従って、ディスクリプタ情報によりキャッシュメモリ１１２ａの最新の状況を正確に管理することで、バックアップ処理を効率化することができる。
【０１４５】
また、ホストコンピュータ３００から書き込みデータの書き込み指示を受けた場合には、当該データのディスクリプタ情報を生成するので、キャッシュメモリ１１２ａの最新の状態をディスクリプタ情報に反映させることができる。
【０１４６】
また、ディスクリプタ情報のアドレスとキャッシュメモリ１１２ａにおけるデータの格納場所を対応付けたので、ディスクリプタ情報を簡略化できると共に、ディスクリプタ情報の作成処理、バックアップ処理および復旧処理を効率化できる。
【０１４７】
また、キャッシュメモリ１１２ａにデータが記憶される際に、記憶されるデータのサイズとキャッシュメモリ１１２ａの空き領域とに基づいて記憶位置が決定されるので、キャッシュメモリ１１２ａの記憶領域において不正な上書きによるデータの破壊が抑制される。
【０１４８】
また、キャッシュメモリ１１２ａに記憶されるデータのディスクリプタ情報を、キャッシュメモリ１１２ａの記憶領域の当該データが格納される位置と対応付けられているディスクリプタテーブル１１２ａｄ１の格納位置に格納することで、ディスクリプタ情報の作成処理、バックアップ処理および復旧処理を効率化できる。
【０１４９】
また、ネクストアドレスによって、あるデータの次に連続している記憶領域の先頭アドレスが示されるので、ディスクリプタ情報の作成処理およびバックアップ処理を効率化できる。
【０１５０】
また、フラッシュメモリ１１５ａは、不揮発性記憶領域１１５ａ１，１１５ａ２を有するので、それぞれに対してバックアップ処理を並行して行うことができ、バックアップ処理に要する時間を短縮することができる。
【０１５１】
また、転送制御部１０２は、制御部１１０ａに対する電力の供給が停止した場合にも、ＳＣＵ１１６ａから電力の供給を受けることで、キャッシュメモリ１１２ａに記憶されている書き込みキャッシュのバックアップを行うことができる。
【０１５２】
以上、開示のストレージ装置、制御部およびストレージ装置制御方法を、図示の実施の形態に基づいて説明したが、各部の構成は同様の機能を有する任意の構成のものに置換することができる。また、開示の技術に他の任意の構成物や工程が付加されてもよい。また、開示の技術は前述した実施の形態のうちの任意の２以上の構成を組み合わせたものであってもよい。
【０１５３】
上記については単に本発明の原理を示すものである。さらに、多数の変形、変更が当業者にとって可能であり、開示の技術は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応するすべての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
【０１５４】
以上の第１の実施の形態および第２の実施の形態に関し、さらに以下の付記を開示する。
（付記１）  データを記憶する記憶媒体と、
前記記憶媒体へのアクセス制御を行う制御部と、
を有するストレージ装置において、
前記制御部は、
前記記憶媒体に記憶されるデータを記憶する第１の記憶部と、
前記制御部に対する電力の供給が停止した場合に、前記第１の記憶部に記憶されているデータを記憶する第２の記憶部と、
前記第１の記憶部におけるデータの記憶状態を示す制御情報を生成する制御情報生成部と、
前記制御部に対する電力の供給が停止した場合に、前記制御情報生成部で生成された制御情報に基づいて前記第１の記憶部に記憶されているデータの前記第２の記憶部への転送を制御する転送制御部と、
を有することを特徴とするストレージ装置。
【０１５５】
（付記２）  前記制御情報は、前記第１の記憶部に記憶されているデータが前記転送の対象であるか否かを示す判別情報を有し、
前記制御情報生成部は、前記第１の記憶部に記憶されているデータが前記転送の対象である場合には、前記第１の記憶部に記憶されているデータが前記転送の対象である旨を示す判別情報を有するように制御情報を生成し、
前記転送制御部は、前記制御部に対する電力の供給が停止した場合に、前記制御情報生成部で生成された制御情報に基づいて前記第１の記憶部に記憶されているデータのうち前記転送の対象であるデータを前記第２の記憶部に転送するように制御する、
ことを特徴とする付記１記載のストレージ装置。
【０１５６】
（付記３）  前記制御情報生成部は、前記記憶媒体に記憶されるデータが前記第１の記憶部に記憶された場合には、前記第１の記憶部に記憶されたデータが前記転送の対象である旨を示す判別情報を有するように制御情報を生成することを特徴とする付記２記載のストレージ装置。
【０１５７】
（付記４）  前記制御情報生成部は、前記記憶媒体に記憶されるデータの前記記憶媒体への記憶が完了した場合には、前記第１の記憶部への記憶が完了したデータが前記転送の対象でない旨を示す判定情報を有するように制御情報を生成することを特徴とする付記２記載のストレージ装置。
【０１５８】
（付記５）  前記第１の記憶部は、前記制御情報を記憶し、
前記転送制御部は、前記制御部に対する電力の供給が停止した場合には、前記転送と共に前記第１の記憶部に記憶されている前記制御情報を前記第２の記憶部に転送するように制御する、
ことを特徴とする付記１記載のストレージ装置。
【０１５９】
（付記６）  前記制御情報生成部は、前記第１の記憶部に記憶されているデータが前記転送の対象でない場合には、前記第１の記憶部に記憶されているデータが前記転送の対象でない旨を示す判別情報を有するように制御情報を生成し、
前記転送制御部は、前記制御部に対する電力の供給が停止した場合に、前記制御情報生成部で生成された制御情報に基づいて前記第１の記憶部に記憶されているデータのうち前記転送の対象でないデータは前記第２の記憶部に転送しないように制御する、
ことを特徴とする付記２記載のストレージ装置。
【０１６０】
（付記７）  前記第２の記憶部は、不揮発性メモリであることを特徴とする付記１記載のストレージ装置。
（付記８）  前記第１の記憶部は、前記記憶媒体に記憶されるデータを、前記記憶媒体への書き込みが完了するまで一時的に記憶することを特徴とする付記１記載のストレージ装置。
【０１６１】
（付記９）  前記制御情報生成部は、上位装置からデータの前記記憶媒体への記憶指示を受けた場合には、前記記憶指示に基づいて前記第１の記憶部における前記記憶指示がされたデータの記憶状態を示すように制御情報を生成することを特徴とする付記１記載のストレージ装置。
【０１６２】
（付記１０）  前記第１の記憶部に対してデータを記憶させるデータ制御部と、
前記第１の記憶部に対してデータが記憶される際に前記第１の記憶部の記憶領域におけるデータの記憶位置を決定する記憶位置決定部と、
を有し、
前記制御情報生成部は、前記第１の記憶部に記憶されているデータの前記記憶位置決定部により決定された記憶位置を示す記憶位置情報を有するように前記制御情報を生成し、
前記データ制御部は、前記第２の記憶部に記憶されているデータを前記第１の記憶部に記憶させる場合には、前記制御情報生成部によって生成された制御情報が有する記憶位置情報に基づいて前記第１の記憶部の記憶領域にデータを記憶させるように制御する、
ことを特徴とする付記１記載のストレージ装置。
【０１６３】
（付記１１）  前記記憶位置決定部は、前記第１の記憶部に対してデータが記憶される際に、前記第１の記憶部の記憶領域の空き領域と、前記第１の記憶部に記憶されるデータのサイズとに基づいて前記第１の記憶部の記憶領域におけるデータの記憶位置を決定し、
前記データ制御部は、前記第２の記憶部に記憶されているデータを前記第１の記憶部に記憶させる場合には、前記制御情報生成部によって生成された制御情報が有する記憶位置情報に基づいて前記第１の記憶部の記憶領域の空き領域にデータを記憶させるように制御する、
ことを特徴とする付記１０記載のストレージ装置。
【０１６４】
（付記１２）  前記制御情報を格納すると共に、前記制御情報を格納する位置と、前記第１の記憶部の記憶領域におけるデータが格納される位置とが対応付けられている制御テーブルを記憶する制御情報記憶部を有し、
前記制御情報生成部は、前記第１の記憶部に記憶されているデータの制御情報を生成すると共に、前記記憶位置決定部によって決定された位置に対応する前記制御テーブルにおける前記制御情報を格納する位置に前記生成した制御情報を格納させる、
ことを特徴とする付記１０記載のストレージ装置。
【０１６５】
（付記１３）  前記制御情報生成部は、前記第１の記憶部に記憶されているデータに連続する他のデータを記憶可能な記憶領域の位置を示す連続データ位置情報を有するように前記制御情報を生成することを特徴とする付記１記載のストレージ装置。
【０１６６】
（付記１４）  前記第２の記憶部は、複数の記憶領域を有し、
前記転送制御部は、前記制御部に対する電力の供給が停止した場合に、前記制御情報生成部で生成された制御情報に基づいて前記第１の記憶部に記憶されているデータの前記第２の記憶部への転送を、前記第１の記憶部に記憶されているデータを複数に分割すると共に分割した複数のデータのそれぞれを前記複数の記憶領域に並行して転送するように制御する、
ことを特徴とする付記１記載のストレージ装置。
【０１６７】
（付記１５）  前記制御部に対する電力の供給が停止した場合に前記転送制御部に電力を供給する非常電力供給部を有し、
前記転送制御部は、前記非常電力供給部から電力の供給を受けることで、前記制御部に対する電力の供給が停止した場合に前記第１の記憶部に記憶されているデータの第２の記憶部への転送を制御する、
ことを特徴とする付記１記載のストレージ装置。
【０１６８】
（付記１６）  ストレージ装置が有するデータを記憶する記憶媒体へのアクセス制御を行う制御部において、
前記記憶媒体に記憶されるデータを記憶する第１の記憶部と、
前記制御部に対する電力の供給が停止した場合に、前記第１の記憶部に記憶されているデータを記憶する第２の記憶部と、
前記第１の記憶部におけるデータの記憶状態を示す制御情報を生成する制御情報生成部と、
前記制御部に対する電力の供給が停止した場合に、前記制御情報生成部で生成された制御情報に基づいて前記第１の記憶部に記憶されているデータの前記第２の記憶部への転送を制御する転送制御部と、
を有することを特徴とする制御部。
【０１６９】
（付記１７）  ストレージ装置が有するデータを記憶する記憶媒体へのアクセス制御を行うストレージ装置制御方法において、
前記記憶媒体に記憶されるデータを記憶する第１の記憶部におけるデータの記憶状態を示す制御情報を生成し、
電力の供給が停止した場合に、前記生成した制御情報に基づいて前記第１の記憶部に記憶されているデータの第２の記憶部への転送を制御する、
ことを特徴とするストレージ装置制御方法。
【符号の説明】
【０１７０】
１  ストレージ装置
１ａ  制御部
１ａ１  制御情報生成部
１ａ２  転送制御部
１ａ３，１ａ４  記憶部
１ｂ  記憶媒体
【図１】
0005712535.tif 000002
【図２】
0005712535.tif 000003
【図３】
0005712535.tif 000004
【図４】
0005712535.tif 000005
【図５】
0005712535.tif 000006
【図６】
0005712535.tif 000007
【図７】
0005712535.tif 000008
【図８】
0005712535.tif 000009
【図９】
0005712535.tif 000010
【図１０】
0005712535.tif 000011
【図１１】
0005712535.tif 000012
【図１２】
0005712535.tif 000013
【図１３】
0005712535.tif 000014
【図１４】
0005712535.tif 000015