(57)【要約】  データ転送回路を大規模にすることなく、データ退避処理とデータ復旧処理を効率よく行うことができるストレージ装置、ストレージ制御装置およびストレージ制御方法を提供することを目的とする。停電発生後の電源投入時に、ＦＰＧＡ（１２８）に復電用制御データ（１２５ｂ）をコンフィグレーションして、２系統のリードＤＭＡ（１８５ａおよび１８５ｂ）によってデータ復旧処理を行い、データ復旧処理が完了した後に、ＦＰＧＡ（１２８）に停電用制御データ（１２５ａ）をコンフィグレーションして、２系統のライトＤＭＡ（１８４ａおよび１８４ｂ）によってデータ退避処理を行えるように構成する。
2009107212.tif 000002
【特許請求の範囲】
【請求項１】
異常終了時にキャッシュメモリに記憶されているデータを不揮発性メモリに退避させる機能と、前記不揮発性メモリに退避させたデータを異常終了後の電源投入時に前記キャッシュメモリに復旧させる機能とを、所定の制御データが書き込まれたプログラマブルデバイスによって実現するストレージ装置であって、
前記キャッシュメモリに記憶されているデータを前記不揮発性メモリに退避させる機能を実現するための制御データであるライト制御データと、前記不揮発性メモリに退避させたデータを前記キャッシュメモリに復旧する機能を実現するための制御データであるリード制御データとを記憶する制御データ記憶手段と、
当該のストレージ装置が異常終了した後に電源投入された場合に、前記制御データ記憶手段に記憶されているリード制御データを前記プログラマブルデバイスに書き込む書込手段と、
前記書込手段によってリード制御データが書き込まれたプログラマブルデバイスに対して、前記不揮発性メモリに退避させたデータを前記キャッシュメモリに復旧するように指示する復旧指示手段と
を備えたことを特徴とするストレージ装置。
【請求項２】
前記書込手段は、前記復旧指示手段によって指示されたプログラマブルデバイスがデータ復旧処理を完了した場合に、前記制御データ記憶手段に記憶されているライト制御データを前記プログラマブルデバイスに書き込むことを特徴とする請求項１に記載のストレージ装置。
【請求項３】
前記制御データ記憶手段は、前記不揮発性メモリに退避させたデータを前記キャッシュメモリに復旧する機能を実現するための制御データとして、複数のリード制御データを記憶し、
前記書込手段は、当該のストレージ装置が異常終了した後に電源投入された場合に、前記制御データ記憶手段に記憶されている複数のリード制御データを前記プログラマブルデバイスに書き込み、
前記復旧指示手段は、前記書込手段によって複数のリード制御データが書き込まれたプログラマブルデバイスに対して、複数の不揮発性メモリに退避させたデータを前記キャッシュメモリに復旧する処理を並行して行うように指示することを特徴とする請求項１に記載のストレージ装置。
【請求項４】
前記制御データ記憶手段は、前記キャッシュメモリに記憶されているデータを前記不揮発性メモリに退避させる機能を実現するための制御データとして、複数のライト制御データを記憶し、
前記書込手段は、前記復旧指示手段によって指示されたプログラマブルデバイスがデータ復旧処理を完了した場合に、前記制御データ記憶手段に記憶されている複数のライト制御データを前記プログラマブルデバイスに書き込むことを特徴とする請求項３に記載のストレージ装置。
【請求項５】
異常終了時にキャッシュメモリに記憶されているデータを不揮発性メモリに退避させる機能と、前記不揮発性メモリに退避させたデータを異常終了後の電源投入時に前記キャッシュメモリに復旧させる機能とを、所定の制御データが書き込まれたプログラマブルデバイスによって実現するストレージ装置を制御するストレージ制御装置であって、
前記キャッシュメモリに記憶されているデータを前記不揮発性メモリに退避させる機能を実現するための制御データであるライト制御データと、前記不揮発性メモリに退避させたデータを前記キャッシュメモリに復旧する機能を実現するための制御データであるリード制御データとを記憶する制御データ記憶手段と、
前記ストレージ装置が異常終了した後に電源投入された場合に、前記制御データ記憶手段に記憶されているリード制御データを前記プログラマブルデバイスに書き込む書込手段と、
前記書込手段によってリード制御データが書き込まれたプログラマブルデバイスに対して、前記不揮発性メモリに退避させたデータを前記キャッシュメモリに復旧するように指示する復旧指示手段と
を備えたことを特徴とするストレージ制御装置。
【請求項６】
前記書込手段は、前記復旧指示手段によって指示されたプログラマブルデバイスがデータ復旧処理を完了した場合に、前記制御データ記憶手段に記憶されているライト制御データを前記プログラマブルデバイスに書き込むことを特徴とする請求項５に記載のストレージ制御装置。
【請求項７】
前記制御データ記憶手段は、前記不揮発性メモリに退避させたデータを前記キャッシュメモリに復旧する機能を実現するための制御データとして、複数のリード制御データを記憶し、
前記書込手段は、前記ストレージ装置が異常終了した後に電源投入された場合に、前記制御データ記憶手段に記憶されている複数のリード制御データを前記プログラマブルデバイスに書き込み、
前記復旧指示手段は、前記書込手段によって複数のリード制御データが書き込まれたプログラマブルデバイスに対して、複数の不揮発性メモリに退避させたデータを前記キャッシュメモリに復旧する処理を並行して行うように指示することを特徴とする請求項５に記載のストレージ制御装置。
【請求項８】
前記制御データ記憶手段は、前記キャッシュメモリに記憶されているデータを前記不揮発性メモリに退避させる機能を実現するための制御データとして、複数のライト制御データを記憶し、
前記書込手段は、前記復旧指示手段によって指示されたプログラマブルデバイスがデータ復旧処理を完了した場合に、前記制御データ記憶手段に記憶されている複数のライト制御データを前記プログラマブルデバイスに書き込むことを特徴とする請求項７に記載のストレージ制御装置。
【請求項９】
異常終了時にキャッシュメモリに記憶されているデータを不揮発性メモリに退避させる機能と、前記不揮発性メモリに退避させたデータを異常終了後の電源投入時に前記キャッシュメモリに復旧させる機能とを、所定の制御データが書き込まれたプログラマブルデバイスによって実現するストレージ装置を制御するストレージ制御装置によるストレージ制御方法であって、
前記ストレージ制御装置が、前記ストレージ装置が異常終了した後に電源投入された場合に、前記不揮発性メモリに退避させたデータを前記キャッシュメモリに復旧する機能を実現するための制御データであるリード制御データを記憶する制御データ記憶手段に記憶されているリード制御データを前記プログラマブルデバイスに書き込む書込工程と、
前記ストレージ制御装置が、前記書込工程によってリード制御データが書き込まれたプログラマブルデバイスに対して、前記不揮発性メモリに退避させたデータを前記キャッシュメモリに復旧するように指示する復旧指示工程と
を含んだことを特徴とするストレージ制御方法。
【請求項１０】
前記制御データ記憶手段は、前記キャッシュメモリに記憶されているデータを前記不揮発性メモリに退避させる機能を実現するための制御データであるライト制御データをさらに記憶し、
前記書込工程は、前記復旧指示工程によって指示されたプログラマブルデバイスがデータ復旧処理を完了した場合に、前記制御データ記憶手段に記憶されているライト制御データを前記プログラマブルデバイスに書き込むことを特徴とする請求項９に記載のストレージ制御方法。
【請求項１１】
前記制御データ記憶手段は、前記不揮発性メモリに退避させたデータを前記キャッシュメモリに復旧する機能を実現するための制御データとして、複数のリード制御データを記憶し、
前記書込工程は、前記ストレージ装置が異常終了した後に電源投入された場合に、前記制御データ記憶手段に記憶されている複数のリード制御データを前記プログラマブルデバイスに書き込み、
前記復旧指示工程は、前記書込工程によって複数のリード制御データが書き込まれたプログラマブルデバイスに対して、複数の不揮発性メモリに退避させたデータを前記キャッシュメモリに復旧する処理を並行して行うように指示することを特徴とする請求項９に記載のストレージ制御方法。
【請求項１２】
前記制御データ記憶手段は、前記キャッシュメモリに記憶されているデータを前記不揮発性メモリに退避させる機能を実現するための制御データとして、複数のライト制御データを記憶し、
前記書込工程は、前記復旧指示工程によって指示されたプログラマブルデバイスがデータ復旧処理を完了した場合に、前記制御データ記憶手段に記憶されている複数のライト制御データを前記プログラマブルデバイスに書き込むことを特徴とする請求項１１に記載のストレージ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、異常終了時にキャッシュメモリに記憶されているデータを不揮発性メモリに退避させる機能と、前記不揮発性メモリに退避させたデータを異常終了後の電源投入時に前記キャッシュメモリに復旧させる機能とを、所定の制御データが書き込まれたプログラマブルデバイスによって実現するストレージ装置、ストレージ制御装置およびストレージ制御方法に関する。
【背景技術】
【０００２】
従来、大規模なコンピュータシステムでは、ホストコンピュータと別体に構成された専用のデータ入出力装置を用いてデータを管理している。このデータ入出力装置の中でも、ストレージ装置は、複数のハードディスク装置（記憶媒体）によってＲＡＩＤ（Redundant  Arrays  of  Independent（Inexpensive）  Disks）グループを構成して、取り扱うデータの信頼性や、データへのアクセス性能を向上させている。【０００３】
このようなストレージ装置は、一般に、ライトバック方式と呼ばれるライト処理（書込処理）を行うことで、アクセス性能を向上させている。具体的には、ストレージ装置は、上位装置であるホストコンピュータからデータのライト命令を受け付けた場合に、キャッシュメモリにデータを記憶した時点で、ライト処理が完了した旨をホストコンピュータへ通知する。その後、所定の条件を満たした時点で、キャッシュメモリに記憶したデータをハードディスク装置へ記憶させる。このライトバック方式を採用すると、ハードディスク装置へのデータ書き込みが完了した後にライト処理が完了した旨をホストコンピュータへ通知するライトスルー方式を採用する場合と比較してアクセス性能の高速化が実現可能となる。【０００４】
ところで、上述したようなライトバック方式を採用するストレージ装置では、キャッシュメモリに記憶されているデータがハードディスク装置に記憶されていない状態で、停電などによって正常な終了操作が行われることなく電源が落とされると（以下、正常な終了操作が行われることなく電源が落とされることを「異常終了」という）、データが消失するおそれがある。キャッシュメモリは、一般的に揮発性メモリが用いられており、電源からの電力供給がなくなるとデータを消失するからである。【０００５】
そこで、ストレージ装置には、異常終了した場合、電源が落とされた状態でも電力供給可能な大容量のコンデンサから電力供給されている間に、キャッシュメモリ上のデータを不揮発性メモリに退避させ、異常終了後に電源投入された場合に不揮発性メモリに退避したデータをキャッシュメモリに復旧させるように構成されているものがある。なお、コンデンサの代わりに、バッテリーを用いることもあるが、バッテリーには電池の劣化等の問題があるため、近年では、充放電による劣化が少ないコンデンサを採用する傾向にある。【０００６】
このようにして、ライトバック方式を採用するストレージ装置では、ホストコンピュータに対するアクセス性能の高速化を実現するとともに、異常終了時にデータが消失することを防止している。【０００７】
【特許文献１】特表２００４−５０６２５６号公報
【特許文献２】特開２００１−０９２６４８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、上述した従来のストレージ装置には、異常終了時および異常終了後の起動時に行うデータ転送処理を高速化するためには、データ転送回路が大規模になるという問題があった。【０００９】
具体的には、データ転送処理を高速するためには、キャッシュメモリ上のデータを不揮発性メモリに退避させる処理（以下、「データ退避処理」という）を行うためのデータ転送回路と、不揮発性メモリに退避したデータをキャッシュメモリに復旧させる処理を行うためのデータ転送回路とを、２系統ずつ用意しておきデータ転送処理を並行して行うことが考えられるが、これでは回路規模が大きくなってしまうという問題があった。【００１０】
データ退避処理が高速化されると、コンデンサから電力供給される短い時間内に、より多くのデータを不揮発性メモリに退避することが可能になる。また、データ復旧処理が高速化されると、異常終了後のストレージ装置の起動時間を短縮することが可能になる。このようなことから、上述したデータ転送処理を高速化することは、重要な課題となっている。【００１１】
なお、近年、開発工数の低減等を目的として、データ転送回路をＦＰＧＡ（Field  Programmable  Gate  Array）により実現することが一般的に行われている。このＦＰＧＡを用いて、前述したような４つのデータ転送回路を実現するためには、やはり大規模なＦＰＧＡが必要となり、実装面積の大きいＦＰＧＡをストレージ装置に実装しなければならなくなるという問題や、コストが増大するという問題を招く。ストレージ装置の小型化やコスト低減は共通の課題となっており、実装面積の増大やコストの増大は重要な課題となる。【００１２】
以上のことから、ストレージ装置においては、データ転送回路を大規模にすることなく、データ退避処理とデータ復旧処理を効率よく行うことができる技術をいかにして実現するかが重要な課題となっていた。【００１３】
本発明は、上述した従来技術による課題を解消するためになされたものであり、データ転送回路を大規模にすることなく、データ退避処理とデータ復旧処理を効率よく行うことができるストレージ装置、ストレージ制御装置およびストレージ制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１４】
上述した課題を解決し、目的を達成するために、本願に開示するストレージ装置は、異常終了時にキャッシュメモリに記憶されているデータを不揮発性メモリに退避させる機能と、前記不揮発性メモリに退避させたデータを異常終了後の電源投入時に前記キャッシュメモリに復旧させる機能とを、所定の制御データが書き込まれたプログラマブルデバイスによって実現するストレージ装置であって、前記キャッシュメモリに記憶されているデータを前記不揮発性メモリに退避させる機能を実現するための制御データであるライト制御データと、前記不揮発性メモリに退避させたデータを前記キャッシュメモリに復旧する機能を実現するための制御データであるリード制御データとを記憶する制御データ記憶手段と、当該のストレージ装置が異常終了した後に電源投入された場合に、前記制御データ記憶手段に記憶されているリード制御データを前記プログラマブルデバイスに書き込む書込手段と、前記書込手段によってリード制御データが書き込まれたプログラマブルデバイスに対して、前記不揮発性メモリに退避させたデータを前記キャッシュメモリに復旧するように指示する復旧指示手段とを備えたことを要件とする。【００１５】
また、上記態様において、本願に開示するストレージ装置は、前記書込手段は、前記復旧指示手段によって指示されたプログラマブルデバイスがデータ復旧処理を完了した場合に、前記制御データ記憶手段に記憶されているライト制御データを前記プログラマブルデバイスに書き込むことを要件とする。【００１６】
また、上記態様において、本願に開示するストレージ装置は、前記制御データ記憶手段は、前記不揮発性メモリに退避させたデータを前記キャッシュメモリに復旧する機能を実現するための制御データとして、複数のリード制御データを記憶し、前記書込手段は、当該のストレージ装置が異常終了した後に電源投入された場合に、前記制御データ記憶手段に記憶されている複数のリード制御データを前記プログラマブルデバイスに書き込み、前記復旧指示手段は、前記書込手段によって複数のリード制御データが書き込まれたプログラマブルデバイスに対して、複数の不揮発性メモリに退避させたデータを前記キャッシュメモリに復旧する処理を並行して行うように指示することを要件とする。【００１７】
また、上記態様において、本願に開示するストレージ装置は、前記制御データ記憶手段は、前記キャッシュメモリに記憶されているデータを前記不揮発性メモリに退避させる機能を実現するための制御データとして、複数のライト制御データを記憶し、前記書込手段は、前記復旧指示手段によって指示されたプログラマブルデバイスがデータ復旧処理を完了した場合に、前記制御データ記憶手段に記憶されている複数のライト制御データを前記プログラマブルデバイスに書き込むことを要件とする。【００１８】
なお、本願に開示するストレージ装置の構成要素、表現または構成要素の任意の組合せを、方法、装置、システム、コンピュータプログラム、記録媒体、データ構造などに適用したものも、他の態様として有効である。
【発明の効果】
【００１９】
本願に開示したストレージ装置によれば、データ転送回路を大規模にすることなく、キャッシュメモリに記憶されているデータを不揮発性メモリに退避させる処理と、不揮発性メモリに退避させたデータをキャッシュメモリに復旧させる処理とを効率よく行うことができるという効果を奏する。すなわち、実装面積およびコストを増大させることなく、異常終了後の起動にかかる時間を短くすることができるという効果を奏する。
【図面の簡単な説明】
【００２０】
【図１】図１は、本実施例に係るストレージ装置の概略構成を示す図である。
【図２】図２は、比較例のストレージ装置が有するＣＭの構成を示す図である。
【図３】図３は、ＮＶＲＡＭに記憶される各種情報の一例を示す図である。
【図４】図４は、停電復電用制御データがコンフィグレーションされたＦＰＧＡの構成を示す図である。
【図５】図５は、比較例のストレージ装置が有するＣＭによるデータ復旧処理の流れを示すシーケンス図である。
【図６】図６は、本実施例に係るストレージ装置が有するＣＭの構成を示す図である。
【図７−１】図７−１は、停電用制御データがコンフィグレーションされたＦＰＧＡの構成を示す図である。
【図７−２】図７−２は、復電用制御データがコンフィグレーションされたＦＰＧＡの構成を示す図である。
【図８】図８は、本実施例に係るストレージ装置が有するＣＭによるデータ復旧処理の流れを示すシーケンス図である。
【符号の説明】
【００２１】
０、１              ストレージ装置
１０                ＣＥ
１１                ＨＤＤ
１２                電力供給部
１００Ａ、１００Ｂ  ＣＭ
１１１Ａ、１１１Ｂ  Ｉ／Ｆ部
１１２Ａ、１１２Ｂ  エクスパンダ
１１３Ａ、１１３Ｂ  キャッシュメモリ
１１９Ａ、１１９Ｂ  ＲｏＣ
１１０              ＣＭ
１１３              キャッシュメモリ
１１４ａ、１１４ｂ  フラッシュメモリ
１１５              制御データ格納部
１１５ａ            停電復電用制御データ
１１６              ＮＶＲＡＭ
１１７              ＰＬＤ
１１８              ＦＰＧＡ
１１９              ＲｏＣ
１２０              ＣＭ
１２５              制御データ格納部
１２５ａ            停電用制御データ
１２５ｂ            復電用制御データ
１２７              ＰＬＤ
１２８              ＦＰＧＡ
１２９              ＲｏＣ
１２９ａ            退避指示部
１２９ｂ            復旧指示部
１２９ｃ            書込部
１８１              ＰＣＩバスＩ／Ｆ
１８２ａ、１８２ｂ  メモリＩ／Ｆ
１８３              ディスクリプタ保持レジスタ
１８４ａ、１８４ｂ  ライトＤＭＡ
１８５ａ、１８５ｂ  リードＤＭＡ
１８６ａ、１８６ｂ  イレースＤＭＡ
２０                ＤＥ
２１                ＨＤＤ
２１２Ａ、２１２Ｂ  エクスパンダ
【発明を実施するための最良の形態】
【００２２】
以下に、本発明に係るストレージ装置、ストレージ制御装置およびストレージ制御方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。また、以下においては、プログラマブルデバイスの一例としてＦＰＧＡを挙げて説明するが、本発明は、例えばＰＬＤ（Programmable  Logic  Device）など様々なプログラマブルデバイスが使用される場合にも適用することができる。また、以下の説明においては、論理回路がインプリメントされて得られ、プログラマブルデバイスに書き込まれる（コンフィグレーションされる）データを「制御データ」という。すなわち、プログラマブルデバイスは、制御データに変換された論理回路と同様に動作する。
【実施例】
【００２３】
まず、本実施例に係るストレージ装置の概略構成について説明する。図１は、本実施例に係るストレージ装置１の概略構成を示す図である。なお、同図には、ストレージ装置１の概略を説明するために必要な構成のみを図示している。【００２４】
同図に示したストレージ装置１は、高信頼性を確保するために二重化構成が採られており、各構成要素が２系統ずつ（同図中、参照符号に付加したＡ、Ｂによって区別する）備えられている。それぞれの系統の構成要素は互いに同等の機能を有するため、以下では一方の系統についてのみ構成要素の説明をする。【００２５】
同図に示すように、ストレージ装置１は、ストレージ装置１を制御する各部や、ストレージ装置１と上位装置であるホストコンピュータとの間の通信を担う通信モジュールなどを主に搭載するＣＥ（Controller  Enclosure：コントローラ  エンクロージャ）１０と、ハードディスク装置を主に搭載するＤＥ（Device  Enclosure：デバイス  エンクロージャ）２０とに、筐体が分けられている。【００２６】
ＣＥ１０は、図示しないチャネルアダプタ経由で外部装置であるファイバチャネルを介してホストコンピュータと接続され、エクスパンダ１１２Ａおよび１１２Ｂ経由でＤＥ２０と接続されている。ＤＥ２０は、ハードディスク装置（以下、「ＨＤＤ：Hard  Disk  Drive」と略記する）２１を有し、エクスパンダ２１２Ａおよび２１３Ｂを直接、もしくは、ルータ（Router）を経由するなどして、他のＤＥと複数個接続することが可能である。【００２７】
ＣＥ１０は、ストレージ装置１を制御するためのＣＭ（Controller  Module：コントローラ  モジュール）１００Ａおよび１００Ｂと、ＣＭ１００Ａおよび１００Ｂと接続される複数のＨＤＤ１１とを有する。【００２８】
ＨＤＤ１１は、ＣＭ１００Ａによってデータが冗長に読み書きされる記憶装置である。なお、ＣＭ１００Ａに接続される記憶装置は、ハードディスク装置に限られず、熱磁気ディスク装置や光磁気ディスク装置、または、半導体不揮発メモリを用いた半導体ディスクのような他の記憶装置であってもよい。【００２９】
ＣＭ１００Ａは、ストレージ装置１を制御するストレージ制御装置であり、インタフェース（以下、「Ｉ／Ｆ」と略記する）部１１１Ａと、エクスパンダ１１２Ａと、キャッシュメモリ１１３Ａと、ＲＡＩＤ−ｏｎ−Ｃｈｉｐ（以下、「ＲｏＣ」と略記する）１１９Ａとを有する。【００３０】
Ｉ／Ｆ部１１１Ａは、ＬＡＮ（Local  Area  Network）などのネットワークへ接続するためのインタフェースである。エクスパンダ１１２Ａは、ＲｏＣ１１９ＡとＨＤＤ１１との間で送受信されるデータを中継する中継装置である。【００３１】
キャッシュメモリ１１３Ａは、ホストコンピュータとＨＤＤ１１との間で転送が行われるデータを一時的に記憶するメモリである。このキャッシュメモリ１１３Ａには、例えば、ＤＤＲ２ＳＤＲＡＭ（Double  Data  Rate2  Synchronous  Dynamic  Random  Access  Memory）などの高いアクセス性能を備えるメモリが用いられる。【００３２】
ＲｏＣ１１９Ａは、ＣＭ１００Ａを全体制御する制御装置であり、メモリコントローラとＣＰＵ（Central  Processing  Unit）とを内蔵する「Ｓｙｓｔｅｍ  Ｏｎ  Ｃｈｉｐ」の一種である。具体的には、ＲｏＣ１１９Ａは、ホストコンピュータとのインタフェースを制御したり、キャッシュメモリ１１３Ａの管理を行ったりする。【００３３】
このような構成の下、ホストコンピュータからデータのライト命令を受け付けた場合、ＲｏＣ１１９Ａは、かかるデータをキャッシュメモリ１１３Ａに記憶する。そして、ＲｏＣ１１９Ａは、キャッシュメモリ１１３Ａにデータを記憶した時点で、ライト処理が完了した旨をホストコンピュータへ通知する。その後、所定の条件を満たした時点で、キャッシュメモリ１１３Ａに記憶したデータをＨＤＤ１１に書き込みする。【００３４】
このようなライトバック方式を採用するストレージ装置には、異常終了を検知した場合にキャッシュメモリ上のデータを不揮発性メモリに退避させる処理（データ退避処理）、および、異常終了後に電源投入された場合に不揮発性メモリに退避したデータをキャッシュメモリに復旧させる処理（データ復旧処理）を行うように構成されているものがある。これは、上述したように、ＨＤＤ１１へ書き込みされていないキャッシュメモリ上のデータが消失してしまうことを防止するためである。【００３５】
かかるデータ退避処理およびデータ復旧処理について具体的に説明する。なお、ここでは、本実施例に係るストレージ装置１の特徴を明らかにするために、まず、比較例のストレージ装置（ストレージ装置０とする）が有するＣＭ（ＣＭ１１０とする）の構成、および、ＣＭ１１０による各種処理について説明し、次に、本実施例に係るストレージ装置１が有するＣＭ（ＣＭ１２０とする）の構成、および、ＣＭ１２０による各種処理について説明する。【００３６】
なお、以下では、異常終了の例として、停電が発生したことにより電源からストレージ装置に対して電力供給がなされなくなった場合を例に挙げて説明するが、異常終了の例はこれに限られず、ストレージ装置の起動中にユーザによって電源プラグを抜かれたような場合も該当する。【００３７】
図２は、比較例のストレージ装置０が有するＣＭ１１０の構成を示す図である。なお、比較例のディスアレイ装置０の概略構成は、図１に示したストレージ装置１の概略構成と同様であり、図２に示したＣＭ１１０は、図１に示した１００Ａおよび１００Ｂに対応する。また、図２では、データ退避処理およびデータ復旧処理に関連する構成のみを図示している。【００３８】
同図に示すように、ＣＭ１１０は、電力供給部１２と接続されており、キャッシュメモリ１１３と、フラッシュメモリ１１４ａおよび１１４ｂと、制御データ格納部１１５と、ＮＶＲＡＭ（Non  Volatile  Random  Access  Memory）１１６と、ＰＬＤ１１７と、ＦＰＧＡ１１８と、ＲｏＣ１１９とを有する。【００３９】
電力供給部１２は、停電によってストレージ装置０に対して電源からの電力供給がなされなくなった場合に、ＣＭ１１０に対して電力供給を行う大容量のコンデンサ、または、バッテリー等である。【００４０】
キャッシュメモリ１１３は、上述したように、ホストコンピュータとＨＤＤ１１との間で転送が行われるデータを一時的に記憶するメモリである。【００４１】
フラッシュメモリ１１４ａおよび１１４ｂは、停電発生時に後述するＦＰＧＡ１１８によって、キャッシュメモリ１１３に記憶されているデータが退避される不揮発性メモリである。このフラッシュメモリ１１４ａおよび１１４ｂには、一般的に、ＮＡＮＤ（ナンド）型のフラッシュメモリが用いられる。本明細書では、フラッシュメモリ１１４ａおよび１１４ｂがＮＡＮＤ型のフラッシュメモリであるとして説明する。【００４２】
制御データ格納部１１５は、不揮発性メモリなどの記憶デバイスであり、後述するＦＰＧＡ１１８へコンフィグレーションされる停電復電用制御データ１１５ａを格納する。停電復電用制御データ１１５ａがＦＰＧＡ１１８へコンフィグレーションされると、ＦＰＧＡ１１８は、データ退避処理およびデータ復旧処理を行うことができるようになる。【００４３】
ＮＶＲＡＭ１１６は、不揮発性メモリなどの記憶デバイスであり、停電が発生したか否かを判断するための情報等を記憶する。ＮＶＲＡＭ１１６に記憶される各種情報の一例を図３に示す。【００４４】
同図に示すように、ＮＶＲＡＭ１１６は、停電が発生したか否かを示す停電フラグと、データ退避処理が完了したか否かを示すデータ退避完了フラグを記憶する。本明細書では、停電が発生した場合、停電フラグに「１（停電発生）」が記憶され、データ退避処理が完了した場合、データ退避完了フラグに「１（退避完了）」が記憶されるものとする。【００４５】
ＮＶＲＡＭ１１６に記憶される停電フラグおよびデータ退避完了フラグは、後述するＰＬＤ１１７によって更新される。ＰＬＤ１１７による停電フラグおよびデータ退避完了フラグの更新処理については後述する。【００４６】
ＰＬＤ１１７は、ＣＭ１１０を制御する各種論理回路を含むデバイスであり、ＦＰＧＡ１１８に制御データをコンフィグレーションする処理や、ＮＶＲＡＭ１１６に記憶されている各種データを更新する処理や、停電したことを検知する処理等を行う。【００４７】
具体的には、ＰＬＤ１１７は、ストレージ装置０の電源が投入された後に、ＲｏＣ１１９からコンフィグレーションを行う旨の指示を受け付けて、停電復電用制御データ１１５ａを、ＦＰＧＡ１１８にコンフィグレーションする。電源投入時に停電復電用制御データ１１５ａをＦＰＧＡ１１８にコンフィグレーションする理由は、ＦＰＧＡ１１８のような書き換え可能なプログラマブルデバイスは、電力供給がなされなくなるとコンフィグレーションされていた制御データを消失するためである。【００４８】
また、ＰＬＤ１１７は、ストレージ装置０の電源が投入された場合に、ＮＶＲＡＭ１１６に記憶されている停電フラグおよびデータ退避完了フラグを取得する。そして、取得した停電フラグが「１（停電発生）」であり、かつ、データ退避完了フラグが「１（退避完了）」である場合に、ＰＬＤ１１７は、ＲｏＣ１１９に対して、停電発生後の電源投入である旨を通知する。【００４９】
一方、取得した停電フラグが「１（停電発生）」でない場合、または、データ退避完了フラグが「１（退避完了）」でない場合、ＰＬＤ１１７は、ＲｏＣ１１９に対して、停電発生後の電源投入ではないことを示す「通常の電源投入」である旨を通知する。【００５０】
また、ＰＬＤ１１７は、ストレージ装置０の起動中に停電の発生有無を検知する。そして、ＰＬＤ１１７は、停電が発生したことを検知すると、ＲｏＣ１１９に対して、停電が発生した旨を通知するとともに、ＮＶＲＡＭ１１６に記憶されている停電フラグを「１（停電発生）」に更新する。また、ＰＬＤ１１７は、ＲｏＣ１１９からデータ退避処理が完了した旨の通知を受け付けると、ＮＶＲＡＭ１１６に記憶されているデータ退避完了フラグを「１（退避完了）」に更新する。【００５１】
ＦＰＧＡ１１８は、ＰＬＤ１１７によって所定の制御データがコンフィグレーションされるプログラマブルデバイスである。具体的には、ＦＰＧＡ１１８は、ストレージ装置０の電源投入時に、ＰＬＤ１１７によって停電復電用制御データ１１５ａがコンフィグレーションされる。これにより、ＦＰＧＡ１１８は、データ退避処理およびデータ復旧処理の実行が可能となる。このＦＰＧＡ１１８には、停電復電用制御データ１１５ａをコンフィグレーションできる規模のＦＰＧＡが用いられる。【００５２】
ここで、停電復電用制御データ１１５ａがコンフィグレーションされたＦＰＧＡ１１８の構成について説明する。図４は、停電復電用制御データ１１５ａがコンフィグレーションされたＦＰＧＡ１１８の構成を示す図である。【００５３】
同図に示すように、停電復電用制御データ１１５ａがコンフィグレーションされたＦＰＧＡ１１８は、ＰＣＩ（Peripheral  Component  Interconnect）バスＩ／Ｆ１８１と、メモリＩ／Ｆ１８２ａおよび１８２ｂと、ディスクリプタ保持レジスタ１８３と、ライトＤＭＡ（Direct  Memory  Access）１８４ａおよび１８４ｂと、リードＤＭＡ１８５ａと、イレースＤＭＡ１８６ａおよび１８６ｂとを有する。【００５４】
ＰＣＩバスＩ／Ｆ１８１は、ＦＰＧＡ１１８とキャッシュメモリ１１３との間のデータ送受信を行うインタフェースである。メモリＩ／Ｆ１８２ａは、ＦＰＧＡ１１８とフラッシュメモリ１１４ａとの間のデータ送受信を行うインタフェースであり、メモリＩ／Ｆ１８２ｂは、ＦＰＧＡ１１８とフラッシュメモリ１１４ｂとの間のデータ送受信を行うインタフェースである。【００５５】
ディスクリプタ保持レジスタ１８３は、ＲｏＣ１１９によって生成される各ＤＭＡに対する命令（ディスクリプタ）を記憶するレジスタである。具体的には、ディスクリプタ保持レジスタ１８３には、データ退避命令を示すディスクリプタ（以下、「データ退避ディスクリプタ」という）や、データ復旧命令を示すディスクリプタ（以下、「データ復旧ディスクリプタ」という）や、フラッシュメモリ１１４ａおよび１１４ｂに記憶されているデータを消去する命令であるイレース命令を示すディスクリプタ（以下、「イレースディスクリプタ」という）を保持する。【００５６】
ライトＤＭＡ１８４ａは、ディスクリプタ保持レジスタ１８３からデータ退避ディスクリプタを受け取った場合に、ＰＣＩバスＩ／Ｆ１８１を介してキャッシュメモリ１１３に記憶されているデータを取得し、取得したデータを、メモリＩ／Ｆ１８２ａを介してフラッシュメモリ１１４ａに記憶させるＤＭＡ回路である。同様に、ライトＤＭＡ１８４ｂは、ディスクリプタ保持レジスタ１８３からデータ退避ディスクリプタを受け取った場合に、ＰＣＩバスＩ／Ｆ１８１を介してキャッシュメモリ１１３に記憶されているデータを取得し、取得したデータを、メモリＩ／Ｆ１８２ｂを介してフラッシュメモリ１１４ｂに記憶させるＤＭＡ回路である。【００５７】
ライトＤＭＡ１８４ａおよび１８４ｂは、キャッシュメモリ１１３からフラッシュメモリ１１４ａまたは１１４ｂにデータを転送する処理を並行して行う。このように、比較例のＣＭ１１０では、データ退避用の記憶領域として２系統のフラッシュメモリ１１４ａおよび１１４ｂを備えておき、さらに、ＦＰＧＡ１１８に２系統のライトＤＭＡ１８４ａおよび１８４ｂをコンフィグレーションして、かかるライトＤＭＡ１８４ａおよび１８４ｂにデータ退避処理を並行して行わせることで、停電発生時にデータ退避処理を効率よく行うことを実現している。これにより、電力供給部１２から電力供給される短い時間内にデータ退避処理を完了させることを可能にしている。【００５８】
リードＤＭＡ１８５ａは、フラッシュメモリ１１４ａおよび１１４ｂに記憶されているデータをキャッシュメモリ１１３へ転送するＤＭＡ回路である。具体的には、リードＤＭＡ１８５ａは、ディスクリプタ保持レジスタ１８３から、フラッシュメモリ１１４ａに記憶されているデータをキャッシュメモリ１１３へ転送する旨のデータ復旧ディスクリプタを受け取った場合に、メモリＩ／Ｆ１８２ａを介してフラッシュメモリ１１４ａに記憶されているデータを取得し、取得したデータを、ＰＣＩバスＩ／Ｆ１８１を介してキャッシュメモリ１１３に記憶させる。【００５９】
また、リードＤＭＡ１８５ａは、フラッシュメモリ１１４ｂに記憶されているデータをキャッシュメモリ１１３へ転送する旨のデータ復旧ディスクリプタを受け取った場合に、メモリＩ／Ｆ１８２ｂを介してフラッシュメモリ１１４ｂに記憶されているデータを取得し、取得したデータを、ＰＣＩバスＩ／Ｆ１８１を介してキャッシュメモリ１１３に記憶させる。このように、比較例のＣＭ１１０では、ＦＰＧＡ１１８に１系統のリードＤＭＡ１８５ａをコンフィグレーションして、かかるリードＤＭＡ１８５ａにデータ復旧処理を行わせる。【００６０】
データ退避処理を２系統のライトＤＭＡ１８４ａおよび１８４ｂに行わせるのに対して、データ復旧処理を１系統のリードＤＭＡ１８５ａに行わせる理由について説明する。これは、データ退避処理には、電力供給部１２から電力供給される短い時間内に完了させなければならないという制約があるのに対して、データ復旧処理には、このような制約がないためである。また、２系統のライトＤＭＡおよび２系統のリードＤＭＡを備えるＦＰＧＡを実現するためには、大規模なＦＰＧＡが必要となり、ＦＰＧＡの実装面積が増大してしまうという問題や、コストが増大してしまうという問題を招くからである。【００６１】
イレースＤＭＡ１８６ａは、ディスクリプタ保持レジスタ１８３からイレースディスクリプタを受け取った場合に、フラッシュメモリ１１４ａに記憶されているデータを消去するＤＭＡ回路である。同様に、イレースＤＭＡ１８６ｂは、ディスクリプタ保持レジスタ１８３からイレースディスクリプタを受け取った場合に、フラッシュメモリ１１４ｂに記憶されているデータを消去するＤＭＡ回路である。【００６２】
図２の説明に戻って、ＲｏＣ１１９は、ＣＭ１１０を全体制御する制御装置であり、ストレージ装置０の電源が投入された場合に、ＰＬＤ１１７に対して、停電復電用制御データ１１５ａを、ＦＰＧＡ１１８にコンフィグレーションするように指示する。【００６３】
また、ＲｏＣ１１９は、ＰＬＤ１１７から停電が発生した旨の通知を受け付けた場合に、ＦＰＧＡ１１８に対して、データ退避処理を行うように指示する。具体的には、ＲｏＣ１１９は、データ退避ディスクリプタを生成してディスクリプタ保持レジスタ１８３に記憶させ、記憶させたデータ退避ディスクリプタをライトＤＭＡ１８４ａおよび１８４ｂへ送出し、ライトＤＭＡ１８４ａおよび１８４ｂに対してデータ退避処理を並行して行うように指示する。【００６４】
また、ＲｏＣ１１９は、ＰＬＤ１１７から停電発生後の電源投入である旨の通知を受け付けた場合に、ＦＰＧＡ１１８に対して、データ復旧処理を行うように指示する。具体的には、ＲｏＣ１１９は、データ復旧ディスクリプタを生成してディスクリプタ保持レジスタ１８３に記憶させ、記憶させたデータ復旧ディスクリプタをリードＤＭＡ１８５ａへ送出することで、データ退避処理を行うように指示する。その後、ＲｏＣ１１９は、イレースディスクリプタを生成してディスクリプタ保持レジスタ１８３に記憶させ、記憶させたイレースディスクリプタをイレースＤＭＡ１８６ａおよび１８６ｂへ送出し、イレースＤＭＡ１８６ａおよび１８６ｂに対してイレース処理を並行して行うように指示する。【００６５】
次に、比較例のストレージ装置０が有するＣＭ１１０によるデータ復旧処理について説明する。図５は、比較例のストレージ装置０が有するＣＭ１１０によるデータ復旧処理の流れを示すシーケンス図である。【００６６】
同図に示すように、ＲｏＣ１１９は、ストレージ装置０が電源投入された後に、ＰＬＤ１１７から停電発生後の電源投入である旨の通知を受け付けると（ステップＳ１０１）、フラッシュメモリ１１４ａからキャッシュメモリ１１３へデータ転送を行う旨のデータ復旧ディスクリプタを生成する。そして、ＲｏＣ１１９は、生成したデータ復旧ディスクリプタをディスクリプタ保持レジスタ１８３に記憶させ、記憶させたデータ復旧ディスクリプタをリードＤＭＡ１８５ａへ送出して、データ復旧処理を行うように指示する（ステップＳ１０２）。【００６７】
かかるデータ復旧ディスクリプタを受け付けたリードＤＭＡ１８５ａは、フラッシュメモリ１１４ａに記憶されているデータをキャッシュメモリ１１３に記憶させる（ステップＳ１０３）。このデータ復旧処理が完了した後、リードＤＭＡ１８５ａは、ＲｏＣ１１９に対して、フラッシュメモリ１１４ａからキャッシュメモリ１１３へのデータ転送が完了した旨の通知を行う（ステップＳ１０４）。【００６８】
かかる完了通知を受け付けたＲｏＣ１１９は、フラッシュメモリ１１４ｂからキャッシュメモリ１１３へデータ転送を行う旨のデータ復旧ディスクリプタを生成する。そして、ＲｏＣ１１９は、生成したデータ復旧ディスクリプタをディスクリプタ保持レジスタ１８３に記憶させ、記憶させたデータ復旧ディスクリプタをリードＤＭＡ１８５ａへ送出して、データ復旧処理を行うように指示する（ステップＳ１０５）。【００６９】
かかるデータ復旧ディスクリプタを受け付けたリードＤＭＡ１８５ａは、フラッシュメモリ１１４ｂに記憶されているデータをキャッシュメモリ１１３に記憶させる（ステップＳ１０６）。このデータ復旧処理が完了した後、リードＤＭＡ１８５ａは、ＲｏＣ１１９に対して、フラッシュメモリ１１４ｂからキャッシュメモリ１１３へのデータ転送が完了した旨の通知を行う（ステップＳ１０７）。【００７０】
続いて、ＲｏＣ１１９は、データのライト処理方式をライトスルー方式により行うように変更して（ステップＳ１０８）、キャッシュメモリ１１３に記憶されているデータをＨＤＤ１１に記憶させるリストア処理（フラッシュバック）を行う（ステップＳ１０９）。これにより、ＨＤＤ１１に書き込みされていないキャッシュメモリ１１３上のデータはなくなる。【００７１】
続いて、ＲｏＣ１１９は、イレースディスクリプタを生成してディスクリプタ保持レジスタ１８３に記憶させ、記憶させたイレースディスクリプタをイレースＤＭＡ１８６ａおよび１８６ｂへ送出して、フラッシュメモリ１１４ａおよび１１４ｂに記憶されているデータを消去するように指示する（ステップＳ１１０）。【００７２】
かかるイレースディスクリプタを受け付けたイレースＤＭＡ１８６ａは、フラッシュメモリ１１４ａに記憶されているデータを消去し（ステップＳ１１１）、イレースＤＭＡ１８６ｂは、フラッシュメモリ１１４ｂに記憶されているデータを消去する（ステップＳ１１２）。イレース処理が完了した後、イレースＤＭＡ１８６ａおよび１８６ｂは、ＲｏＣ１１９に対して、イレース処理が完了した旨の通知を行う（ステップＳ１１３）。【００７３】
なお、イレース処理を行う理由は、ＮＡＮＤ型フラッシュメモリであるフラッシュメモリ１１４ａおよび１１４ｂは、新たなデータを記憶するためには、記憶されているデータを消去する必要があるためである。すなわち、データ復旧処理が完了した後に、フラッシュメモリ１１４ａおよび１１４ｂに記憶されているデータをイレースして、次の停電発生に備えるためである。【００７４】
そして、イレース処理が完了した旨の通知を受け付けたＲｏＣ１１９は、データのライト処理方式をライトバック方式により行うように変更して（ステップＳ１１４）、ストレージ装置０を起動させる（ステップＳ１１５）。【００７５】
このように、比較例のストレージ装置０は、２系統のライトＤＭＡ１８４ａおよび１８４２ｂをＦＰＧＡ１１８にコンフィグレーションすることで、電力供給部１２から電力供給される短い時間内にデータ退避処理を完了させることを実現している。また、１系統のリードＤＭＡ１８５ａによってデータ復旧処理を行わせることで、データ復旧処理が完了するまでに時間がかかるものの、ＦＰＧＡ１１８の大規模化を抑えて、コストの増大を防止している。【００７６】
ただし、比較例のストレージ装置０が有するＣＭ１１０では、フラッシュメモリ１１４ａからキャッシュメモリ１１３へのデータ転送が完了した後に、フラッシュメモリ１１４ｂからキャッシュメモリ１１３へのデータ転送を行う。このため、比較例のストレージ装置０では、データ復旧処理にかかる時間を短縮することはできず、その結果、異常終了後の起動にかかる時間を短縮することまではできなかった。【００７７】
そこで、本実施例に係るストレージ装置１では、データ転送回路であるＦＰＧＡを大規模にすることなく、データ退避処理を高速化する上に、さらに、データ復旧処理を高速化することを実現する。以下に、図６〜図８を用いて、本実施例に係るストレージ装置１について詳細に説明する。【００７８】
図６は、本実施例に係るストレージ装置１が有するＣＭ１２０の構成を示す図である。なお、同図に示したＣＭ１２０は、図１に示した１００Ａまたは１００Ｂに対応する。また、ここでは、図２に示した構成部位と同様の機能を有する部位には同一符号を付すこととして、その詳細な説明を省略する。【００７９】
図６に示すように、ＣＭ１２０は、電力供給部１２と接続されており、キャッシュメモリ１１３と、フラッシュメモリ１１４ａおよび１１４ｂと、ＮＶＲＡＭ１１６と、制御データ格納部１２５と、ＰＬＤ１２７、ＦＰＧＡ１２８と、ＲｏＣ１２９とを有する。なお、同図では、ＣＭ１２０が外部に備えられた電力供給部１２によって電力供給される例を示しているが、ＣＭ１２０が電力供給部１２を有する構成にしてもよい。【００８０】
制御データ格納部１２５は、不揮発性メモリなどの記憶デバイスであり、停電用制御データ１２５ａと、復電用制御データ１２５ｂとを格納する。停電用制御データ１２５ａは、ＦＰＧＡ１２８にデータ退避処理を実行可能にさせるための制御データである。具体的には、停電用制御データ１２５ａがコンフィグレーションされたＦＰＧＡ１２８は、２系統のライトＤＭＡによってデータ退避処理を行うことができるようになる。【００８１】
また、この停電用制御データ１２５ａは、停電発生時には不要な処理であるデータ復旧処理を行うための制御データを含まない。すなわち、停電用制御データ１２５ａがコンフィグレーションされたＦＰＧＡ１２８は、リードＤＭＡを有しない構成となる。なお、停電用制御データ１２５ａがコンフィグレーションされたＦＰＧＡ１２８の構成については、後に詳述する。【００８２】
復電用制御データ１２５ｂは、異常終了後の電源投入時に、ＦＰＧＡ１２８にデータ復旧処理を実行可能にさせるための制御データである。具体的には、復電用制御データ１２５ｂがコンフィグレーションされたＦＰＧＡ１２８は、２系統のリードＤＭＡによってデータ復旧処理を行うことができるようになる。【００８３】
また、この復電用制御データ１２５ｂは、異常終了後の電源投入時には不要な処理であるデータ退避処理を行うための制御データを含まない。すなわち、復電用制御データ１２５ｂがコンフィグレーションされたＦＰＧＡ１２８は、ライトＤＭＡを有しない構成となる。なお、復電用制御データ１２５ｂがコンフィグレーションされたＦＰＧＡ１２８の構成については、後に詳述する。【００８４】
ＰＬＤ１２７は、ＣＭ１２０を制御する各種論理回路を含むデバイスであり、ＮＶＲＡＭ１１６に記憶されている各種データを更新する処理や、停電が発生したことを検知する処理や、ＦＰＧＡ１２８に制御データをコンフィグレーションする処理等を行う。【００８５】
具体的には、ＰＬＤ１２７は、ストレージ装置１の電源が投入された場合に、ＮＶＲＡＭ１１６に記憶されている停電フラグおよびデータ退避完了フラグを取得する。そして、取得した停電フラグが「１（停電発生）」であり、かつ、データ退避完了フラグが「１（退避完了）」である場合に、ＰＬＤ１２７は、ＲｏＣ１２９に対して、停電発生後の電源投入である旨を通知する。【００８６】
一方、取得した停電フラグが「１（停電発生）」でない場合、または、データ退避完了フラグが「１（退避完了）」でない場合、ＰＬＤ１２７は、ＲｏＣ１２９に対して、通常の電源投入である旨を通知する。【００８７】
また、ＰＬＤ１２７は、ストレージ装置１の起動中に停電の発生有無を検知する。そして、ＰＬＤ１２７は、停電が発生したことを検知すると、ＲｏＣ１２９に対して、停電が発生した旨を通知するとともに、ＮＶＲＡＭ１１６に記憶されている停電フラグを「１（停電発生）」に更新する。また、ＰＬＤ１２７は、ＲｏＣ１２９からデータ退避処理が完了した旨の通知を受け付けると、ＮＶＲＡＭ１１６に記憶されているデータ退避完了フラグを「１（退避完了）」に更新する。【００８８】
また、ＰＬＤ１２７は、後述するＲｏＣ１２９が有する書込部１２９ｃの指示に従って、制御データ格納部１２５に格納されている停電用制御データ１２５ａまたは復電用制御データ１２５ｂをＦＰＧＡ１２８にコンフィグレーションする。【００８９】
なお、同図では、ＮＶＲＡＭ１１６に記憶されている各種データを更新する処理や、停電が発生したことを検知する処理や、ＦＰＧＡ１２８に制御データをコンフィグレーションする処理等を、ＰＬＤ１２７によって実現する例を示したが、かかる処理は、ＰＬＤ以外のＬＳＩ（Large  Scale  Integration）チップなどによって実現してもよい。【００９０】
ＦＰＧＡ１２８は、ＰＬＤ１２７によって停電用制御データ１２５ａまたは復電用制御データ１２５ｂがコンフィグレーションされるプログラマブルデバイスである。このＦＰＧＡ１２８には、停電用制御データ１２５ａのコンフィグレーションが可能であり、かつ、復電用制御データ１２５ｂのコンフィグレーションが可能である規模のＦＰＧＡが用いられる。すなわち、ＦＰＧＡ１２８には、停電用制御データ１２５ａをコンフィグレーションするために必要となるＦＰＧＡの規模と、復電用制御データ１２５ｂをコンフィグレーションするために必要となるＦＰＧＡの規模とを比較して、規模が大きくなる方の制御データをコンフィグレーションできるＦＰＧＡが用いられる。【００９１】
ここで、停電用制御データ１２５ａがコンフィグレーションされたＦＰＧＡ１２８の構成、および、復電用制御データ１２５ｂがコンフィグレーションされたＦＰＧＡ１２８の構成について説明する。図７−１は、停電用制御データ１２５ａがコンフィグレーションされたＦＰＧＡ１２８の構成を示す図である。なお、以下の説明では、図４に示した構成部位と同様の機能を有する部位には同一符号を付すこととして、その詳細な説明を省略する。【００９２】
同図に示すように、停電用制御データ１２５ａがコンフィグレーションされたＦＰＧＡ１２８は、２系統のライトＤＭＡ１８４ａおよび１８４ｂと、２系統のイレースＤＭＡ１８６ａおよび１８６ｂとを有する。すなわち、図７−１に示したＦＰＧＡ１２８は、図４に示した停電復電用制御データ１１５ａがコンフィグレーションされたＦＰＧＡ１１８と比較して、リードＤＭＡ１８５ａを有しない構成となる。【００９３】
図７−２は、復電用制御データ１２５ｂがコンフィグレーションされたＦＰＧＡ１２８の構成を示す図である。同図に示すように、復電用制御データ１２５ｂがコンフィグレーションされたＦＰＧＡ１２８は、２系統のリードＤＭＡ１８５ａおよび１８５ｂと、２系統のイレースＤＭＡ１８６ａおよび１８６ｂとを有する。すなわち、図７−２に示したＦＰＧＡ１２８は、図４に示した停電復電用制御データ１１５ａがコンフィグレーションされたＦＰＧＡ１１８と比較して、ライトＤＭＡ１８４ａおよび１８４ｂを有さず、リードＤＭＡ１８５ｂを新たに有する構成となる。【００９４】
リードＤＭＡ１８５ａは、ディスクリプタ保持レジスタ１８３からデータ復旧ディスクリプタを受け取った場合に、フラッシュメモリ１１４ａに記憶されているデータをキャッシュメモリ１１３に記憶させる。同様に、リードＤＭＡ１８５ｂは、ディスクリプタ保持レジスタ１８３からデータ復旧ディスクリプタを受け取った場合に、フラッシュメモリ１１４ｂに記憶されているデータをキャッシュメモリ１１３に記憶させる。リードＤＭＡ１８５ａおよび１８５ｂは、フラッシュメモリ１１４ａまたは１１４ｂからキャッシュメモリ１１３にデータを転送する処理を並行して行う。【００９５】
図７−１および図７−２に示したように、本実施例に係るストレージ装置１では、比較例のＦＰＧＡ１１８と比較して、ＦＰＧＡ１２８が有するＤＭＡ回路を少なくすることができるので、小規模なＦＰＧＡを用いることができる。これにより、ＦＰＧＡにかかるコストを低減することができる。また、図７−２に示したように、ＦＰＧＡ１２８は、２系統のリードＤＭＡ１８５ａおよび１８５ｂによってデータ復旧処理が並行して行われるので、データ復旧処理を効率よく行うことができ、その結果、異常終了後のストレージ装置１の起動時間を短くすることができる。【００９６】
図６の説明に戻って、ＲｏＣ１２９は、ＣＭ１２０を全体制御する制御部であり、退避指示部１２９ａと、復旧指示部１２９ｂと、書込部１２９ｃとを有する。退避指示部１２９ａは、ＰＬＤ１２７から停電が発生した旨の通知を受け付けた場合に、ＦＰＧＡ１２８に対して、データ退避処理を行うように指示する処理部である。具体的には、退避指示部１２９ａは、データ退避ディスクリプタを生成してディスクリプタ保持レジスタ１８３に記憶させ、記憶させたデータ退避ディスクリプタをライトＤＭＡ１８４ａおよび１８４ｂへ送出し、データ退避処理を並行して行うように指示する。【００９７】
復旧指示部１２９ｂは、ＰＬＤ１２７から停電発生後の電源投入である旨の通知を受け付けた場合に、ＦＰＧＡ１２８に対して、データ復旧処理を行うように指示する処理部である。具体的には、復旧指示部１２９ｂは、データ復旧ディスクリプタを生成してディスクリプタ保持レジスタ１８３に記憶させ、記憶させたデータ復旧ディスクリプタをリードＤＭＡ１８５ａおよび１８５ｂへ送出し、データ復旧処理を並行して行うように指示する。【００９８】
また、復旧指示部１２９ｂは、ＦＰＧＡ１２８によるデータ復旧処理が完了した場合に、イレースディスクリプタを生成してディスクリプタ保持レジスタ１８３に記憶させ、記憶させたイレースディスクリプタをイレースＤＭＡ１８６ａおよび１８６ｂへ送出し、イレース処理を並行して行うように指示する。【００９９】
書込部１２９ｃは、ＰＬＤ１２７に対して、ＦＰＧＡ１２８に停電用制御データ１２５ａまたは復電用制御データ１２５ｂをコンフィグレーションするように指示する処理部である。【０１００】
具体的には、書込部１２９ｃは、ＰＬＤ１２７から通常の電源投入である旨の通知を受け付けた場合に、ＰＬＤ１２７に対して、停電用制御データ１２５ａをＦＰＧＡ１２８に書き込む（コンフィグレーションする）ように指示する。これにより、ＦＰＧＡ１２８は、図７−１に示した構成となり、２系統のライトＤＭＡ１８４ａおよび１８４ｂによってデータ退避処理を行うことができるようになり、停電発生に備えることができる。【０１０１】
また、書込部１２９ｃは、ＰＬＤ１２７から停電発生後の電源投入である旨の通知を受け付けた場合に、ＰＬＤ１２７に対して、復電用制御データ１２５ｂをＦＰＧＡ１２８に書き込む（コンフィグレーションする）ように指示する。これにより、ＦＰＧＡ１２８は、図７−２に示した構成となり、２系統のリードＤＭＡ１８５ａおよび１８５ｂによってデータ復旧処理を行うことができるようになる。【０１０２】
また、書込部１２９ｃは、ＦＰＧＡ１２８からデータ退避処理およびイレース処理が完了した旨の通知を受け付けた場合に、ＰＬＤ１２７に対して停電用制御データ１２５ａを書き込む（コンフィグレーションする）ように指示する。【０１０３】
次に、本実施例に係るストレージ装置１が有するＣＭ１２０によるデータ復旧処理について説明する。図８は、本実施例に係るストレージ装置１が有するＣＭ１２０によるデータ復旧処理の流れを示すシーケンス図である。【０１０４】
同図に示すように、ストレージ装置１が電源投入された後、ＰＬＤ１２７から停電発生後の電源投入である旨の通知を受け付けると（ステップＳ２０１）、ＲｏＣ１２９の書込部１２９ｃは、ＰＬＤ１２７に対して復電用制御データ１２５ｂをコンフィグレーションするように指示する（ステップＳ２０２）。これにより、ＦＰＧＡ１２８は、図７−２に示したように、２系統のリードＤＭＡ１８５ａおよび１８５ｂを有する構成となる（ステップＳ２０３）。【０１０５】
続いて、ＲｏＣ１２９の復旧指示部１２９ｂは、データ復旧ディスクリプタを生成してディスクリプタ保持レジスタ１８３に記憶させ、記憶させたデータ復旧ディスクリプタをリードＤＭＡ１８５ａおよび１８５ｂへ送出して、データ復旧処理を並行して行うように指示する（ステップＳ２０４）。【０１０６】
かかるデータ復旧ディスクリプタを受け付けたリードＤＭＡ１８５ａは、フラッシュメモリ１１４ａに記憶されているデータをキャッシュメモリ１１３に記憶させる（ステップＳ２０５）。同様に、データ復旧ディスクリプタを受け付けたリードＤＭＡ１８５ｂは、フラッシュメモリ１１４ｂに記憶されているデータをキャッシュメモリ１１３に記憶させる（ステップＳ２０６）。このリードＤＭＡ１８５ａおよび１８５ｂによるデータ復旧処理は並行して行われる。データ復旧処理が完了した後、リードＤＭＡ１８５ａおよび１８５ｂは、ＲｏＣ１２９に対して、データ復旧処理が完了した旨の通知を行う（ステップＳ２０７）。【０１０７】
かかる完了通知を受け付けたＲｏＣ１２９は、データのライト処理方式をライトスルー方式により行うように変更して（ステップＳ２０８）、キャッシュメモリ１１３に記憶されているデータをＨＤＤ１１に記憶させるリストア処理を行う（ステップＳ２０９）。【０１０８】
続いて、ＲｏＣ１２９の復旧指示部１２９ｂは、イレースディスクリプタを生成してディスクリプタ保持レジスタ１８３に記憶させ、記憶させたイレースディスクリプタをイレースＤＭＡ１８６ａおよび１８６ｂへ送出して、フラッシュメモリ１１４ａおよび１１４ｂに記憶されているデータを消去するように指示する（ステップＳ２１０）。【０１０９】
かかるイレースディスクリプタを受け付けたイレースＤＭＡ１８６ａは、フラッシュメモリ１１４ａに記憶されているデータを消去し（ステップＳ２１１）、イレースＤＭＡ１８６ｂは、フラッシュメモリ１１４ｂに記憶されているデータを消去する（ステップＳ２１２）。イレース処理が完了した後、イレースＤＭＡ１８６ａおよび１８６ｂは、ＲｏＣ１２９に対して、イレース処理が完了した旨の通知を行う（ステップＳ２１３）。【０１１０】
イレース処理が完了した旨の通知を受け付けたＲｏＣ１２９の書込部１２９ｃは、ＰＬＤ１２７に対して停電用制御データ１２５ａをコンフィグレーションするように指示する（ステップＳ２１４）。これにより、ＦＰＧＡ１２８は、図７−１に示したように、２系統のライトＤＭＡ１８４ａおよび１８４ｂを有する構成となり（ステップＳ２１５）、停電発生に備えることができる。なお、本実施例１に係るストレージ装置１では、この停電用制御データ１２５ａをコンフィグレーションする処理（再コンフィグレーション処理）を行う必要があるが、２系統のリードＤＭＡ１８５ａおよび１８５ｂによってデータ復旧処理を並行して行うことができるので、全体的には、異常終了後の起動にかかる処理時間を短縮することができる。【０１１１】
そして、ＲｏＣ１１９は、データのライト処理方式をライトバック方式により行うように変更して（ステップＳ２１６）、ストレージ装置を起動させる（ステップＳ２１７）。【０１１２】
上述してきたように、本実施例に係るストレージ装置１は、停電発生後の電源投入時に、ＦＰＧＡ１２８に復電用制御データ１２５ｂをコンフィグレーションして、２系統のリードＤＭＡ１８５ａおよび１８５ｂによってデータ復旧処理を行った後に起動するように構成したので、異常終了後の起動にかかる時間を短くすることができる。【０１１３】
また、本実施例に係るストレージ装置１は、データ復旧処理が完了した後に、ＦＰＧＡ１２８に停電用制御データ１２５ａをコンフィグレーションして、２系統のライトＤＭＡ１８４ａおよび１８４ｂによってデータ退避処理を行えるように構成したので、ストレージ装置１の起動後に停電が発生した場合であっても、データ退避処理を効率よく行うことができる。【０１１４】
また、本実施例に係るストレージ装置１は、停電用制御データ１２５ａがコンフィグレーションされたＦＰＧＡ１２８が、２系統のライトＤＭＡ１８４ａおよび１８４ｂを備え、かつ、データ退避処理に不要なリードＤＭＡを備えないように構成し、また、復電用制御データ１２５ｂがコンフィグレーションされたＦＰＧＡ１２８が、２系統のリードＤＭＡ１８５ａおよび１８５ｂを備え、かつ、データ復旧処理に不要なライトＤＭＡを備えないように構成したので、比較例のＦＰＧＡ１１８と比較して、ＦＰＧＡ１２８を小規模にすることができる。その結果、ストレージ装置１にかかるコストを低減することができる。【０１１５】
すなわち、本実施例に係るストレージ装置１によれば、データ転送回路であるＦＰＧＡ１２８を大規模にすることなく、データ退避処理とデータ復旧処理を効率よく行うことができる。【０１１６】
なお、上記実施例では、データ退避用の記憶デバイスとして、ストレージ装置１が２系統のフラッシュメモリ１１４ａおよび１１４ｂを備えることを前提として、２系統のライトＤＭＡ１８４ａおよび１８４ｂによってデータ退避処理を行い、２系統のリードＤＭＡ１８５ａおよび１８５ｂによってデータ復旧処理を行う例を説明したが、本発明はこれに限定されるものではなく、１系統のデータ退避用の記憶デバイスを備えるストレージ装置や、３系統以上のデータ退避用の記憶デバイスを備えるストレージ装置にも適用可能である。【０１１７】
かかる点について具体的に説明すると、例えば、１系統のデータ退避用の記憶デバイスを備えるストレージ装置の場合、１系統のライトＤＭＡによってデータ退避処理を行い、１系統のリードＤＭＡによってデータ復旧処理を行う。すなわち、このようなストレージ装置は、１系統のライトＤＭＡおよび１系統のリードＤＭＡを同時に備えることができる規模のＦＰＧＡを用いる必要があるが、本発明を適用すると、１系統のライトＤＭＡまたは１系統のリードＤＭＡのいずれか一方のみを備えることができる規模のＦＰＧＡを用いることができる。その結果、ＦＰＧＡを小規模にすることができ、ストレージ装置にかかるコストを低減することができる。【０１１８】
また、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散、統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散、統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵ（Central  Processing  Unit）および当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【図１】
2009107212.tif 000003
【図２】
2009107212.tif 000004
【図３】
2009107212.tif 000005
【図４】
2009107212.tif 000006
【図５】
2009107212.tif 000007
【図６】
2009107212.tif 000008
【図７−１】
2009107212.tif 000009
【図７−２】
2009107212.tif 000010
【図８】
2009107212.tif 000011
【国際調査報告】
2009107212.tif 000012
2009107212.tif 000013