(57)【特許請求の範囲】
【請求項１】
データを記憶する不揮発性記憶部へのデータの書き込みを制御する書き込み制御部と、
前記書き込み制御部の動作を決定する制御情報を記憶する制御情報記憶部と、
制御情報の入力を受け付ける入力受付部と、
予め設定された制御情報の版数を含む検証情報を保持し、前記入力受付部が受け付けた制御情報の版数および機能と前記制御情報記憶部に記憶されている制御情報の機能とに基づいて前記制御情報を前記書き込み制御部に設定する設定部と、
前記入力受付部が受け付けた制御情報の版数と前記検証情報が示す版数とが同じ版数であるか否かの判断を行うか否かを決定する判断部と、を有し、
前記設定部は、前記判断部により前記判断を行うと決定された場合に当該判断を行って、前記入力受付部が受け付けた制御情報の版数と前記検証情報が示す版数とが同じ版数のときには、前記制御情報記憶部に記憶されている制御情報のうち前記入力受付部が受け付けた制御情報と同じ機能を有する前記制御情報を前記書き込み制御部に設定する
ことを特徴とする制御装置。
【請求項２】
前記機能は、電力供給停止時にデータを前記不揮発性記憶部に退避する機能、または前記不揮発性記憶部に退避したデータを電力供給復旧時に利用可能な状態にする機能のいずれかである
ことを特徴とする請求項１記載の制御装置。
【請求項３】
前記制御情報記憶部に記憶されている制御情報を前記書き込み制御部に設定するか否かを示すフラグを記憶するフラグ記憶部をさらに有し、
前記判断部は、前記フラグ記憶部に記憶されたフラグに基づいて、前記判断を行うか否かを決定する
ことを特徴とする請求項２記載の制御装置。
【請求項４】
前記フラグ記憶部は、制御情報の版数に応じた前記フラグの記憶箇所を複数有し、
前記判断部は、前記制御情報の版数に応じた前記記憶箇所に記憶されたフラグに基づいて、前記判断を行うか否かを決定する
ことを特徴とする請求項３記載の制御装置。
【請求項５】
前記設定部は、前記入力受付部が前記制御情報を受け付けた時点で前記書き込み制御部への前記制御情報の書き込みを開始し、その後、前記判断部の判断結果に基づいて前記制御情報記憶部に記憶されている制御情報を前記書き込み制御部に設定する
ことを特徴とする請求項３または４に記載の制御装置。
【請求項６】
制御装置が有する、
入力受付部が、データを記憶する不揮発性記憶部へのデータの書き込みを制御する書き込み制御部の動作を決定する制御情報の入力を受け付け、
判断部が、前記入力受付部が受け付けた制御情報の版数と、設定部が保持する予め設定された制御情報の版数を含む検証情報が示す版数と、が同じ版数であるか否かの判断を行うか否かを決定し、
前記設定部が、前記入力受付部が受け付けた制御情報の版数および機能と前記制御装置が有する制御情報記憶部に記憶されている制御情報の機能とに基づいて前記制御情報を前記書き込み制御部に設定し、
前記制御情報を前記書き込み制御部に設定する処理に際し、前記判断部により前記判断を行うと決定された場合に当該判断を行って、前記入力受付部が受け付けた制御情報の版数と前記検証情報が示す版数とが同じ版数のときには、前記制御情報記憶部に記憶されている制御情報のうち前記入力受付部が受け付けた制御情報と同じ機能を有する前記制御情報を前記書き込み制御部に設定する
ことを特徴とする制御方法。
【請求項７】
データが記憶される記憶装置と、前記記憶装置に対するデータ記憶を制御する制御部と、前記制御部の動作を決定する制御情報を記憶する制御情報記憶装置とを備えるストレージシステムにおいて、
前記制御部は、
データが書き込まれる不揮発性記憶部と、
前記不揮発性記憶部へのデータの書き込みを制御する書き込み制御部と、
前記書き込み制御部の動作を決定する制御情報を記憶する制御情報記憶部と、
制御情報の入力を受け付ける入力受付部と、
予め設定された制御情報の版数を含む検証情報を保持し、前記入力受付部が受け付けた制御情報の版数および機能と前記制御情報記憶部に記憶されている制御情報の機能とに基づいて前記制御情報を前記書き込み制御部に設定する設定部と、
前記入力受付部が受け付けた制御情報の版数と前記検証情報が示す版数とが同じ版数であるか否かの判断を行うか否かを決定する判断部と、
を備え、
前記設定部は、前記判断部により前記判断を行うと決定された場合に当該判断を行って、前記入力受付部が受け付けた制御情報の版数と前記検証情報が示す版数とが同じ版数のときには、前記制御情報記憶部に記憶されている制御情報のうち前記入力受付部が受け付けた制御情報と同じ機能を有する前記制御情報を前記書き込み制御部に設定する
ことを特徴とするストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は制御装置、制御方法およびストレージシステムに関する。
【背景技術】
【０００２】
データのバックアップ等の用途に使用するフラッシュメモリ（Flash Memory）等の不揮発性の記憶媒体が知られている。
図１３は、不揮発性の記憶媒体を備える装置の一例を説明する図である。
【０００３】
図１３に示す制御装置９０は、ＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）等を備える記憶装置９１を制御する装置である。
制御装置９０には、ＣＰＵ９０ａとＣＰＵ９０ａのキャッシュメモリ９０ｂとＣＰＵ用フラッシュメモリ９０ｆが設けられている。
【０００４】
また、制御装置９０には、制御装置９０への電源の供給が停止されたときに、キャッシュメモリ９０ｂに記憶されている情報のバックアップ先となるフラッシュメモリ９０ｄが設けられている。フラッシュメモリ９０ｄへのバックアップは、ＦＰＧＡ９０ｃにより実行される。
【０００５】
ＦＰＧＡ９０ｃのバックアップ動作を決定するＦＰＧＡデータは、例えば記憶装置９１に記憶されている。記憶装置９１に記憶されているＦＰＧＡデータは、所定のタイミングでＣＰＵ９０ａにより読み出され、ＣＰＵ用フラッシュメモリ９０ｆに記憶される。そして、ＦＰＧＡ９０ｃのＦＰＧＡデータをコンフィグ（Config）する際には、ＣＰＵ９０ａがＣＰＵ用フラッシュメモリ９０ｆからＦＰＧＡデータを読み出し、読み出したＦＰＧＡデータが、ＰＬＤ９０ｅからＦＰＧＡ９０ｃに送られる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平１１−９５９９４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
フラッシュメモリの小型化や、生産中止等の理由により、以前搭載していたフラッシュメモリとは制御方法の異なるフラッシュメモリを搭載した制御装置を用いて記憶装置を制御する場合等が生じる。
【０００８】
例えば、図１３に示す制御装置９０では、フラッシュメモリ９０ｄとは制御方法の異なるフラッシュメモリを搭載した制御装置を用いて記憶装置９１を制御する場合等が生じる。
【０００９】
このとき記憶装置９１に記憶されているＦＰＧＡデータが、フラッシュメモリ９０ｄとは制御方法の異なるフラッシュメモリの制御に対応していないと、記憶装置９１に記憶されているＦＰＧＡデータのＦＰＧＡ９０ｃへのコンフィグ後にＦＰＧＡ９０ｃが正常に動作しなくなるという問題があった。
【００１０】
また、ＦＰＧＡデータをＦＰＧＡ９０ｃにコンフィグするタイミングをＣＰＵ９０ａに依存せず、管理者が決定すると、人為的なミスが発生する可能性があり、運用上徹底することが難しい。
【００１１】
本発明はこのような点に鑑みてなされたものであり、誤動作を抑制する制御装置、制御方法およびストレージシステムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記目的を達成するために、開示の制御装置が提供される。この制御装置は、書き込み制御部と制御情報記憶部と、入力受付部と、設定部とを有している。
書き込み制御部は、データを記憶する不揮発性記憶部へのデータの書き込みを制御する。
【００１３】
制御情報記憶部は、書き込み制御部の動作を決定する制御情報を記憶する。
入力受付部は、制御情報の入力を受け付ける。
設定部は、入力受付部が受け付けた制御情報と制御情報記憶部に記憶されている制御情報のうち版数が新しい方の制御情報を書き込み制御部に設定する。
【発明の効果】
【００１４】
開示の制御装置によれば、誤動作を抑制することができる。
【図面の簡単な説明】
【００１５】
【図１】第１の実施の形態の制御装置の概要を示す図である。
【図２】第２の実施の形態のストレージシステムを示すブロック図である。
【図３】ドライブエンクロージャの一例を示す図である。
【図４】制御モジュールの機能を示すブロック図である。
【図５】ＣＰＬＤの機能を示すブロック図である。
【図６】ＣＰＬＤの処理を説明する図である。
【図７】制御モジュールの処理を示すシーケンス図である。
【図８】制御モジュールの処理を示すシーケンス図である。
【図９】コンフィグ時のＣＰＬＤの処理を示すフローチャートである。
【図１０】第３の実施の形態の制御モジュールを示す図である。
【図１１】第３の実施の形態のＣＰＬＤの機能を示すブロック図である。
【図１２】制御モジュールの処理を示すシーケンス図である。
【図１３】不揮発性の記憶媒体を備える装置の一例を説明する図である。
【発明を実施するための形態】
【００１６】
以下、実施の形態を、図面を参照して詳細に説明する。
まず、実施の形態の制御装置について説明し、その後、実施の形態をより具体的に説明する。
【００１７】
＜第１の実施の形態＞
図１は、第１の実施の形態の制御装置の概要を示す図である。
第１の実施の形態の制御装置１は、制御情報記憶部１ａと、書き込み制御部１ｂと、不揮発性記憶部１ｃと、入力受付部１ｄと、判断部１ｅと、比較用版数情報記憶部１ｆと、フラグ記憶部１ｇと、設定部１ｈとを有している。
【００１８】
制御情報記憶部１ａは、書き込み制御部１ｂの動作を決定する制御情報を記憶する。
制御情報の内容としては、特に限定されないが、例えば、制御装置１の電力供給停止時の書き込み制御部１ｂの動作を決定する制御情報や、制御装置１の電力供給復旧時の書き込み制御部１ｂの動作を決定する制御情報等が挙げられる。
【００１９】
書き込み制御部１ｂは、設定部１ｈにより設定された制御情報により、不揮発性記憶部１ｃへのデータの書き込みを制御する。
書き込み制御部１ｂは、例えば、前述した制御装置１の電力供給停止時には、制御装置１の図示しない揮発性メモリに記憶されているデータを不揮発性記憶部１ｃに退避させる。また、制御装置１の電力供給復旧時には、不揮発性記憶部１ｃに退避させたデータを揮発性メモリに書き戻す。
【００２０】
入力受付部１ｄは、制御装置１の外部から制御装置１に入力される制御情報の入力を受け付ける。入力を受け付けるタイミングとしては、特に限定されないが、例えば、制御装置１の初回起動時等が挙げられる。
【００２１】
なお、入力受付部１ｄは、入力受付部１ｄ自身が、制御装置１の外部から制御情報を読み出す機能を有していてもよい。また、入力受付部１ｄは、受け付けた制御情報を一時記憶する機能を有していてもよいし、図示しない他の記憶媒体（フラッシュメモリ等）に一時記憶する機能を有していてもよい。
【００２２】
また、入力受付部１ｄは、後述するフラグ設定情報を受け付けることもできる。
判断部１ｅは、入力受付部１ｄが受け付けた制御情報に含まれる版数を識別する版数情報を、比較用版数情報記憶部１ｆに記憶されている制御情報の版数を識別する版数情報と比較する。この比較により、入力受付部１ｄが受け付けた制御情報の版数が、制御情報記憶部１ａに記憶されている制御情報の版数より新しいか否かが判断される。
【００２３】
例えば、比較用版数情報記憶部１ｆに記憶されている版数情報が「Ａ」であり、入力受付部１ｄが受け付けた制御情報の版数が「Ａ」であり、制御情報記憶部１ａに記憶されている制御情報の版数情報が「Ｂ」（ＢはＡよりも新しい版数を示す情報）である場合、判断部１ｅは、入力受付部１ｄが受け付けた制御情報の版数が、制御情報記憶部１ａに記憶されている制御情報の版数より古いと判断する。
【００２４】
なお、判断部１ｅは、入力受付部１ｄが受け付けた制御情報の版数情報を、制御情報記憶部１ａに記憶されている制御情報の版数情報と比較するようにしてもよい。
フラグ記憶部１ｇは、入力受付部１ｄが受け付けたフラグ設定情報に基づいて入力受付部１ｄが設定するフラグを記憶する。
【００２５】
このフラグは、判断部１ｅの比較動作を実行するか否かを決定するフラグである。具体的には、フラグ記憶部１ｇを制御装置１に設けた場合、判断部１ｅは、フラグ記憶部１ｇに記憶されたフラグを参照する。そして、フラグが設定されている場合、判断部１ｅは、比較動作を実行しない。換言すれば、フラグが設定されていない場合に限り、判断部１ｅが、入力受付部１ｄが受け付けた制御情報の版数情報を、比較用版数情報記憶部１ｆに記憶されている比較用の版数情報と比較することができる。
【００２６】
フラグ設定情報は、例えば、制御情報に含まれる版数情報が「Ｃ」（ＣはＡおよびＢよりも新しい版数を示す情報）である場合に、制御情報に併せてこのフラグ設定情報を入力受付部１ｄに読み込ませるようにする。
【００２７】
設定部１ｈは、入力受付部１ｄが受け付けた制御情報と制御情報記憶部１ａに記憶されている制御情報のうち版数が新しい方の制御情報を書き込み制御部１ｂに設定する。
ここで、設定部１ｈは、判断部１ｅの比較結果に基づいて、選択した制御情報を書き込み制御部１ｂに設定することができる。
【００２８】
例えば、制御情報記憶部１ａに記憶されている制御情報の版数が、入力受付部１ｄが受け付けた制御情報の版数と等しい場合、設定部１ｈは、制御情報記憶部１ａに記憶されている制御情報を書き込み制御部１ｂに設定しないよう制御することができる。この制御により、設定部１ｈが同じ版数の制御情報を書き込み制御部１ｂに書き込まないようにすることができる。
【００２９】
また、判断部１ｅの比較動作が実行されない場合（すなわち、フラグが設定されている場合）も、設定部１ｈは、制御情報記憶部１ａに記憶されている制御情報を書き込み制御部１ｂに設定しないよう制御することができる。この制御により、設定部１ｈが、制御情報記憶部１ａに記憶されている古い版数の制御情報を書き込み制御部１ｂに書き込まないようにすることができる。
【００３０】
制御装置１によれば、入力受付部１ｄが受け付けた制御情報と制御情報記憶部１ａに記憶されている制御情報のうち版数が新しい方の制御情報が書き込み制御部１ｂに設定される。従って、旧版のデータが書き込み制御部１ｂに設定され、書き込み制御部１ｂが誤動作することを抑制することができる。
【００３１】
なお、制御情報記憶部１ａは、フラッシュメモリ等により実現することができる。また、書き込み制御部１ｂは、例えば、ＦＰＧＡ（Field Programmable Gate Array）等により実現することができる。また、入力受付部１ｄは、例えば、ＣＰＵ（Central Processing Unit）等により実現することができる。また、入力受付部１ｄ、判断部１ｅ、比較用版数情報記憶部１ｆ、フラグ記憶部１ｇおよび設定部１ｈは、例えば、ＣＰＬＤ（Complex Programmable Logic Device）等により実現することができる。
【００３２】
また、制御装置１に比較用版数情報記憶部１ｆおよびフラグ記憶部１ｇを配置するか否かは任意に決定することができ、省略することもできる。
以下、実施の形態をより具体的に説明する。
【００３３】
＜第２の実施の形態＞
図２は、第２の実施の形態のストレージシステムを示すブロック図である。
ストレージシステム１００は、ホストコンピュータ（以下、単に「ホスト」と言う）３０と、ディスクの動作制御を行う制御モジュール（ＣＭ：Controller Module）１０ａ、１０ｂ、１０ｃと、記憶装置２０を構成するドライブエンクロージャ（ＤＥ：Drive Enclosure）２０ａ、２０ｂ、２０ｃ、２０ｄとを有する。
【００３４】
ストレージシステム１００は、ドライブエンクロージャ２０ａ、２０ｂ、２０ｃ、２０ｄと、ホスト３０とが、制御モジュール１０ａ、１０ｂ、１０ｃを介して接続されている。
【００３５】
ストレージシステム１００は、運用に使用する制御モジュールを２以上有することで、冗長性が確保されている。
制御モジュール１０ａ、１０ｂ、１０ｃは、コントローラエンクロージャ（ＣＥ：Controller Enclosure）１８内に実装されている。各制御モジュール１０ａ、１０ｂ、１０ｃは、それぞれストレージ制御装置として機能する。
【００３６】
制御モジュール１０ａ、１０ｂ、１０ｃは、それぞれ、コントローラエンクロージャ１８に対し着脱可能になっている。
なお、図２では、１つのホスト３０を図示しているが、複数のホストが、コントローラエンクロージャ１８に接続されていてもよい。
【００３７】
制御モジュール１０ａ、１０ｂ、１０ｃは、それぞれ、アクセス指示情報としてＩ／Ｏコマンドをドライブエンクロージャ２０ａ、２０ｂ、２０ｃ、２０ｄに送信し、ストレージ装置の記憶領域に対するデータの入出力指令を行う。また、入出力指令からアクセス監視時間が経過しても応答が得られないときは、このＩ／Ｏ処理を中断するアボート指示コマンドをドライブエンクロージャ２０ａ、２０ｂ、２０ｃ、２０ｄに送信する。
【００３８】
ドライブエンクロージャ２０ａ、２０ｂ、２０ｃ、２０ｄにより構成される記憶装置２０は、冗長性を考慮したＲＡＩＤ構成をなしている。
制御モジュール１０ａは、制御部１１によって装置全体が制御されている。
【００３９】
制御部１１には、内部バスを介してチャネルアダプタ（ＣＡ：Channel Adapter）１２およびデバイスアダプタ（ＤＡ：Device Adapter）１３が接続されている。
チャネルアダプタ１２は、ファイバチャネル（ＦＣ：Fibre Channel）スイッチ３１に接続され、ファイバチャネルスイッチ３１を介してホスト３０のチャネルＣＨ１、ＣＨ２、ＣＨ３、ＣＨ４に接続される。この経路を介して、ホスト３０と、ＣＰＵ１１ａとの間でデータの送受信が行われる。
【００４０】
デバイスアダプタ１３は、記憶装置２０を構成する外部のドライブエンクロージャ２０ａ、２０ｂ、２０ｃおよび２０ｄに接続される。制御部１１は、デバイスアダプタ１３を介して外部のドライブエンクロージャ２０ａ、２０ｂ、２０ｃおよび２０ｄとの間でデータの送受信を行う。
【００４１】
制御電源供給部４１は、制御モジュール１０ａ、１０ｂおよび１０ｃに接続されている。制御電源供給部４１は、制御モジュール１０ａ、１０ｂおよび１０ｃを駆動する駆動電源を制御モジュール１０ａ、１０ｂおよび１０ｃに供給する。
【００４２】
停電時給電部４２は、制御モジュール１０ａ、１０ｂおよび１０ｃに接続されている。
停電時給電部４２は、内部にコンデンサ（図示せず）を有している。停電時給電部４２は、制御電源供給部４１の稼働時、すなわち、制御電源供給部４１の制御モジュール１０ａ、１０ｂおよび１０ｃへの電源供給時は、制御電源供給部４１から電力の供給を受けて、内部に有するコンデンサに電力を蓄える。
【００４３】
そして、停電時等、制御電源供給部４１の制御モジュール１０ａ、１０ｂおよび１０ｃへの電力供給停止時（以下、単に「電力供給停止時」と言う）には、内部に有するコンデンサに蓄えた電力を制御モジュール１０ａ、１０ｂおよび１０ｃに供給する。
【００４４】
制御モジュール１０ａ、１０ｂおよび１０ｃは、コンデンサから供給された電力によって、制御部１１が有する後述するＣＰＵキャッシュに記憶されている情報を、後述するＮＡＮＤ型フラッシュメモリに退避させる。
【００４５】
なお、制御モジュール１０ｂ、１０ｃのハードウェア構成も、制御モジュール１０ａと同様である。このようなハードウェア構成によって、制御モジュール１０ａ、１０ｂおよび１０ｃの処理機能を実現することができる。
【００４６】
図３は、ドライブエンクロージャの一例を示す図である。
ドライブエンクロージャ２０ａは、複数のストレージ装置２１１ａ、２１１ｂ、２１１ｃ、２１１ｄ、２１１ｅ、２１１ｆ、２１１ｇおよび２１１ｈと、各ストレージ装置２１１ａ〜２１１ｈにそれぞれ電源経路２２１ａ、２２１ｂを介して電源を供給する複数の電源供給部（ＰＳＵ：Power Supply Unit）２３１ａ、２３１ｂとを有する。さらに、ドライブエンクロージャ２０ａは、各ストレージ装置２１１ａ〜２１１ｈとそれぞれ入出力経路２２２ａ、２２２ｂを介して接続された複数のデバイス監視部（ＰＢＣ：Port Bypass Circuit）２３０ａ、２３０ｂを有する。
【００４７】
各ストレージ装置２１１ａ〜２１１ｈには、電源供給部２３１ａ、２３１ｂの両方から電力が供給される。
電源供給部２３１ａ、２３１ｂは、それぞれが、ドライブエンクロージャ２０ａが備える全てのストレージ装置２１１ａ〜２１１ｈを同時に稼動し、また、全てのストレージ装置２１１ａ〜２１１ｈのうち所定の数のストレージ装置を同時に起動するのに充分な電力を供給する能力を備えている。
【００４８】
このように、電源供給部２３１ａ、２３１ｂが冗長化された構成であるため、一方の電源供給部が故障したとしても、ストレージ装置２１１ａ〜２１１ｈへの電力の供給の停止を抑制することができる。
【００４９】
デバイス監視部２３０ａ、２３０ｂは、各制御モジュール１０ａ〜１０ｃの指示に基づいて、各ストレージ装置２１１ａ〜２１１ｈに記憶される情報を読み出したり、書き込んだりする。
【００５０】
さらに、デバイス監視部２３０ａ、２３０ｂは、各ストレージ装置２１１ａ〜２１１ｈを監視し、各ストレージ装置２１１ａ〜２１１ｈの動作状態（稼動、起動、停止）を検出する。ここで、稼動とは、起動後の安定した状態を指し、この稼動状態においてデータの書き込み、または、読み出し処理が行われる。
【００５１】
さらに、デバイス監視部２３０ａ、２３０ｂは、各電源供給部２３１ａ、２３１ｂを監視し、各電源供給部２３１ａ、２３１ｂの動作モードの検出及び故障検出を行う。さらに、デバイス監視部２３０ａ、２３０ｂは、電源供給部２３１ａ、２３１ｂが供給可能な最大電力量と、電源供給部２３１ａ、２３１ｂの現在の電力使用量とを検出する。
【００５２】
なお、他のドライブエンクロージャ２０ｂ〜２０ｄも、ドライブエンクロージャ２０ａと同様の構造を備えている。
このようなドライブエンクロージャ２０ｂ〜２０ｄで構成される記憶装置２０は、各ドライブエンクロージャ２０ｂ〜２０ｄが備えるストレージ装置のうちの複数のストレージ装置に、例えばユーザ情報等の情報を分割して記憶し、またはそれぞれ同じ情報を記憶するＲＡＩＤ構造を備える。
【００５３】
そして、記憶装置２０は、各ドライブエンクロージャ２０ａ〜２０ｄが備えるストレージのうち、１つ、または複数のストレージによりそれぞれ構成された複数のＲＡＩＤグループを有する。ここで、記憶装置２０では、各ＲＡＩＤグループに論理ボリュームが設定されている。なお、ここでは、ＲＡＩＤグループと論理ボリュームとは一致するが、これに限らず、１つの論理ボリュームが複数のＲＡＩＤグループに対して設けられていてもよく、１つのＲＡＩＤグループに対して複数の論理ボリュームが設けられていてもよい。また、図３ではドライブエンクロージャ２０ａは、８つのストレージ装置２１１ａ〜２１１ｈを有するが、これに限らず、任意の個数のストレージ装置を有してもよい。
【００５４】
次に、制御モジュール１０ａ、１０ｂ、１０ｃが備える機能を、より詳しく説明する。
図４は、制御モジュールの機能を示すブロック図である。
制御部１１は、ＣＰＵ１１ａと、ＣＰＵ用フラッシュメモリ１１ｂと、キャッシュメモリ１１ｈと、ＦＰＧＡ１１ｃと、ＮＡＮＤ型フラッシュメモリ１１ｄと、ＰＬＤ（Programmable Logic Device）１１ｅと、ＣＰＬＤ１１ｆと、ＣＰＬＤ用フラッシュメモリ１１ｇとを有している。
【００５５】
制御部１１は、ＣＰＵ１１ａによって装置全体が制御されている。
ＣＰＵ１１ａには、内部バスを介してＣＰＵ用フラッシュメモリ１１ｂ、ＦＰＧＡ１１ｃおよびＰＬＤ１１ｅが接続されている。また、メモリインタフェースを介しキャッシュメモリ１１ｈが接続される。
【００５６】
記憶装置２０には、制御モジュール１０ａのファームウェアが、アーカイブ形式で格納されている。すなわち、記憶装置２０は、制御情報記憶装置としての役割も果たす。このファームウェアは、制御モジュール１０ａがストレージシステム１００に実装されたとき等にＣＰＵ１１ａが記憶装置２０のファームウェアの格納箇所に自動的にアクセスすることにより、または、ファームウェアの格納箇所に自動的にアクセスさせるユーザの指示をＣＰＵ１１ａが受け付けることにより、ＣＰＵ１１ａが記憶装置２０から読み出してＣＰＵ用フラッシュメモリ１１ｂに書き込む。
【００５７】
ファームウェアには、ＦＰＧＡ１１ｃの動作を決定するＦＰＧＡデータが内包されている。ＦＰＧＡ１１ｃのＦＰＧＡデータを改版する要求が生じた場合、制御モジュール１０ａのファームウェアをアップデートすることでＦＰＧＡ１１ｃのＦＰＧＡデータを改版することができる。
【００５８】
以下、ＦＰＧＡデータの版数を、版数の古い順に「Ａ」、「Ｂ」、「Ｃ」とする。すなわち、版数「Ａ」が一番古く、版数「Ｃ」が一番新しい。
１つのファームウェアには、いずれか１つの版数のＦＰＧＡデータが内包されている。そして、版数「Ｃ」のファームウェアにのみ、後述する機能抑止レジスタを設定する機能抑止レジスタ設定要求が含まれており、版数「Ａ」、「Ｂ」のファームウェアには、機能抑止レジスタ設定要求は含まれていない。この機能抑止レジスタ設定要求には、機能抑止レジスタのアドレスを特定する情報と、特定したアドレスの機能抑止レジスタを設定する要求とが含まれている。
【００５９】
ここで、ＦＰＧＡ１１ｃの機能には、キャッシュメモリ１１ｈに記憶されているデータを電力供給停止時にＮＡＮＤ型フラッシュメモリ１１ｄに退避する機能と、電力供給停止時にＮＡＮＤ型フラッシュメモリ１１ｄに退避したデータを、電力供給復旧時にキャッシュメモリ１１ｈに書き戻す機能の２種類が存在する。このため、ＦＰＧＡデータには、電力供給停止時用のＦＰＧＡデータと、電力供給復旧時用のＦＰＧＡデータの２種類が存在する。
【００６０】
ＣＰＵ１１ａは、記憶装置２０から読み込んだファームウェアに機能抑止レジスタ設定要求が含まれている場合、機能抑止レジスタ設定要求を、ＰＬＤ１１ｅを介してＣＰＬＤ１１ｆに送信する。
【００６１】
また、ＣＰＵ１１ａは、記憶装置２０から読み出してＣＰＵ用フラッシュメモリ１１ｂに書き込んだファームウェアに含まれるＦＰＧＡデータを必要に応じて読み出し、読み出したＦＰＧＡデータをＰＬＤ１１ｅ経由でＣＰＬＤ１１ｆに送る。
【００６２】
ＣＰＵ用フラッシュメモリ１１ｂには、ＣＰＵ１１ａに実行させるプログラムの少なくとも一部が一時的に格納される。また、ＣＰＵ用フラッシュメモリ１１ｂには、ＣＰＵ１１ａが記憶装置２０から読み込んだＦＰＧＡデータ等、ＣＰＵ１１ａによる処理に用いる各種データが格納される。
【００６３】
ＦＰＧＡ１１ｃは、コンフィグされたＦＰＧＡデータに従って、インタフェースを介してＦＰＧＡ１１ｃに接続されているＮＡＮＤ型フラッシュメモリ１１ｄを制御する。なお、ＦＰＧＡ１１ｃの制御内容については、後に詳述する。
【００６４】
ＮＡＮＤ型フラッシュメモリ１１ｄは、不揮発性メモリであり、電力供給停止時にキャッシュメモリ１１ｈに記憶されているデータの退避先となる記憶領域を有している。
ＰＬＤ１１ｅは、ＣＰＵ１１ａから送られてきたＦＰＧＡデータを受け取ると、ＣＰＬＤ１１ｆに送る。
【００６５】
ＣＰＬＤ用フラッシュメモリ１１ｇは、ＣＰＬＤ１１ｆに接続されている。ＣＰＬＤ用フラッシュメモリ１１ｇには、版数「Ｂ」の電力供給停止時用のＦＰＧＡデータ（図５では「ＦＰＧＡデータ「Ｂ」停電」と表記）および版数「Ｂ」の電力供給復旧時用のＦＰＧＡデータ（図５では「ＦＰＧＡデータ「Ｂ」復電」と表記）が予め書き込まれて記憶されている。ＣＰＬＤ用フラッシュメモリ１１ｇに記憶された版数「Ｂ」のＦＰＧＡデータは、ＦＰＧＡ１１ｃにコンフィグされると、ＮＡＮＤ型フラッシュメモリ１１ｄを制御できることが保証されているデータである。
【００６６】
ＣＰＬＤ１１ｆは、ＦＰＧＡ１１ｃ、ＰＬＤ１１ｅおよびＣＰＬＤ用フラッシュメモリ１１ｇに接続されている。ＣＰＬＤ１１ｆは、ＣＰＵ用フラッシュメモリ１１ｂに記憶されているＦＰＧＡデータと、ＣＰＬＤ用フラッシュメモリ１１ｇに記憶されているＦＰＧＡデータとに基づいて、ＦＰＧＡ１１ｃのコンフィグを制御する。以下、ＣＰＬＤ１１ｆの機能を詳しく説明する。
【００６７】
図５は、ＣＰＬＤの機能を示すブロック図である。
ＣＰＬＤ１１ｆは、機能抑止レジスタ１１１ｆと、チェックサム記憶部１１２ｆと、比較部１１３ｆと、コンフィグ制御部１１４ｆとを有している。
【００６８】
機能抑止レジスタ１１１ｆは、比較部１１３ｆの動作の許否を決定する情報を記憶するレジスタである。機能抑止レジスタ１１１ｆは、初期設定では、「ＯＦＦ（比較部１１３ｆの動作許可）」に設定されている。
【００６９】
ＣＰＬＤ１１ｆは、ＰＬＤ１１ｅを介してＣＰＵ１１ａから受信する機能抑止レジスタ設定要求に基づいて、機能抑止レジスタ１１１ｆを「ＯＮ（比較部１１３ｆの動作不可）」に設定する。
【００７０】
チェックサム記憶部１１２ｆには、ＦＰＧＡ１１ｃにコンフィグされると、ＦＰＧＡ１１ｃによるＮＡＮＤ型フラッシュメモリ１１ｄへのデータの読み書きの結果が保証できない等、設計者がＦＰＧＡ１１ｃにコンフィグさせたくないＦＰＧＡデータのチェックサム（Check Sum）ＣＳ１、ＣＳ２が予め記憶されている。
【００７１】
チェックサムＣＳ１、ＣＳ２には、ＦＰＧＡデータの版数および機能を識別する情報が含まれている。
チェックサムＣＳ１、ＣＳ２は、ＣＰＬＤ用フラッシュメモリ１１ｇに記憶されている版数「Ｂ」のＦＰＧＡデータよりも旧版の版数「Ａ」のＦＰＧＡデータ（図５では「ＦＰＧＡデータ「Ａ」」と表記）のチェックサムである。
【００７２】
以下、版数「Ａ」のＦＰＧＡデータは、ＦＰＧＡ１１ｃにコンフィグされると、ＮＡＮＤ型フラッシュメモリ１１ｄへのデータの読み書きの結果が保証できないデータであるものとする。
【００７３】
また、前述したように、ＦＰＧＡデータには、電力供給停止時用のＦＰＧＡデータと、電力供給復旧時用のＦＰＧＡデータの２種類が存在する。チェックサムＣＳ１は、電力供給停止時用のＦＰＧＡデータのチェックサム（図５ではチェックサム（ＦＰＧＡデータ「Ａ」停電）と表記）であり、チェックサムＣＳ２は、電力供給復旧時用のＦＰＧＡデータのチェックサム（図５ではチェックサム（ＦＰＧＡデータ「Ａ」復電）と表記）である。
【００７４】
比較部１１３ｆは、機能抑止レジスタ１１１ｆの設定状況に応じてＣＰＵ用フラッシュメモリ１１ｂから読み出されたＦＰＧＡデータの機能および版数を、チェックサム記憶部１１２ｆに記憶されているチェックサムＣＳ１、ＣＳ２から識別できるＦＰＧＡデータの機能および版数「Ａ」と比較するか否かを決定する。具体的には、機能抑止レジスタ１１１ｆの設定が「ＯＮ」の場合、比較部１１３ｆは、ＣＰＵ用フラッシュメモリ１１ｂから読み出されたＦＰＧＡデータの機能および版数を、チェックサム記憶部１１２ｆに記憶されているチェックサムＣＳ１、ＣＳ２から識別できるＦＰＧＡデータの機能および版数「Ａ」と比較しない。
【００７５】
他方、機能抑止レジスタ１１１ｆの設定が「ＯＦＦ」の場合、ＣＰＵ用フラッシュメモリ１１ｂから読み出されたＦＰＧＡデータの機能および版数を、チェックサム記憶部１１２ｆに記憶されているチェックサムＣＳ１、ＣＳ２から識別できるＦＰＧＡデータの機能および版数「Ａ」と比較する。具体的には、比較部１１３ｆは、ＣＰＵ用フラッシュメモリ１１ｂから読み出されたＦＰＧＡデータのチェックサムと、チェックサム記憶部１１２ｆに記憶されているチェックサムＣＳ１を比較する。また、ＣＰＵ用フラッシュメモリ１１ｂから読み出されたＦＰＧＡデータのチェックサムと、チェックサム記憶部１１２ｆに記憶されているチェックサムＣＳ２を比較する。
【００７６】
そして、比較部１１３ｆは、ＣＰＵ用フラッシュメモリ１１ｂから読み出されたＦＰＧＡデータの版数とチェックサムＣＳ１、ＣＳ２から識別できるＦＰＧＡデータの版数「Ａ」のどちらの版数が新しいか、また、ＣＰＵ用フラッシュメモリ１１ｂから読み出されたＦＰＧＡデータの機能が、電力供給停止時の機能か電力供給復旧時の機能かを示す比較結果をコンフィグ制御部１１４ｆに送る。
【００７７】
コンフィグ制御部１１４ｆは、ＣＰＵ１１ａがＰＬＤ１１ｅ経由で送ってきたコンフィグ用のＦＰＧＡデータを受け取ると、受け取ったコンフィグ用のＦＰＧＡデータを用いてＦＰＧＡ１１ｃのコンフィグを実行する。また、コンフィグ制御部１１４ｆは、比較部１１３ｆから比較結果が送られてくると、比較結果に基づいて、ＣＰＬＤ用フラッシュメモリ１１ｇに記憶されているＦＰＧＡデータを用いてＦＰＧＡ１１ｃのリコンフィグ（再度のコンフィグ）を実行するか否かを決定する。
【００７８】
具体的には、比較結果が、ＣＰＵ用フラッシュメモリ１１ｂから読み出されたＦＰＧＡデータの版数が、チェックサム記憶部１１２ｆに記憶されているチェックサムＣＳ１、ＣＳ２から識別できるＦＰＧＡデータの版数「Ａ」より新しいという比較結果であった場合、コンフィグ制御部１１４ｆは、ＣＰＬＤ用フラッシュメモリ１１ｇに記憶されているＦＰＧＡデータのＦＰＧＡ１１ｃへのリコンフィグを実行しないと決定する。リコンフィグを実行しないと決定した場合、コンフィグ制御部１１４ｆは、対応する機能のＦＰＧＡデータの読み出し要求をＣＰＬＤ用フラッシュメモリ１１ｇに出力しない。
【００７９】
また、比較結果が、ＣＰＵ用フラッシュメモリ１１ｂから読み出されたＦＰＧＡデータの版数が、チェックサム記憶部１１２ｆに記憶されているチェックサムＣＳ１、ＣＳ２から識別できるＦＰＧＡデータの版数「Ａ」と等しいという比較結果であった場合、コンフィグ制御部１１４ｆは、リコンフィグを実行すると決定する。リコンフィグを実行すると決定した場合、コンフィグ制御部１１４ｆは、比較結果に基づいて、ＣＰＵ用フラッシュメモリ１１ｂから読み出されたＦＰＧＡデータの機能が、電力供給停止時の機能か電力供給復旧時の機能かを判断する。
【００８０】
電力供給停止時の機能である場合、コンフィグ制御部１１４ｆは、電力供給停止時用のＦＰＧＡデータの読み出し要求をＣＰＬＤ用フラッシュメモリ１１ｇに出力する。また、電力供給復旧時の機能である場合、コンフィグ制御部１１４ｆは、電力供給復旧時用のＦＰＧＡデータの読み出し要求をＣＰＬＤ用フラッシュメモリ１１ｇに出力する。
【００８１】
そして、ＣＰＬＤ用フラッシュメモリ１１ｇからリコンフィグ用のＦＰＧＡデータを受け取ると、受け取ったリコンフィグ用のＦＰＧＡデータを用いてＦＰＧＡ１１ｃのコンフィグを実行する。
【００８２】
以上に示した比較部１１３ｆおよびコンフィグ制御部１１４ｆの制御内容を表にまとめると以下のようになる。
図６は、ＣＰＬＤの処理を説明する図である。
【００８３】
ＣＰＵ用フラッシュメモリ１１ｂに記憶されているＦＰＧＡデータが版数「Ａ」である場合、すなわち、ＣＰＵ１１ａが記憶装置２０から読み込んだファームウェアに含まれるＦＰＧＡデータが版数「Ａ」である場合、ＣＰＵ１１ａは、機能抑止レジスタ設定要求を、ＰＬＤ１１ｅを介してＣＰＬＤ１１ｆに送信しないため、機能抑止レジスタ１１１ｆは「ＯＦＦ」のままである。機能抑止レジスタ１１１ｆは「ＯＦＦ」のままであるので、比較部１１３ｆは、比較を行う。コンフィグ制御部１１４ｆは、比較部１１３ｆの比較結果に基づいてリコンフィグを実行する。この結果、最終的にＦＰＧＡ１１ｃに適用されるＦＰＧＡデータは版数「Ｂ」である。
【００８４】
ＣＰＵ用フラッシュメモリ１１ｂに記憶されているＦＰＧＡデータが版数「Ｂ」である場合、すなわち、ＣＰＵ１１ａが記憶装置２０から読み込んだファームウェアに含まれるＦＰＧＡデータが版数「Ｂ」である場合、ＣＰＵ１１ａは、機能抑止レジスタ設定要求を、ＰＬＤ１１ｅを介してＣＰＬＤ１１ｆに送信しないため、機能抑止レジスタ１１１ｆは「ＯＦＦ」のままである。機能抑止レジスタ１１１ｆは「ＯＦＦ」のままであるので、比較部１１３ｆは、比較を行う。コンフィグ制御部１１４ｆは、比較部１１３ｆの比較結果に基づいてリコンフィグを実行しない。ＦＰＧＡ１１ｃに適用されるＦＰＧＡデータは版数「Ｂ」である。
【００８５】
ＣＰＵ用フラッシュメモリ１１ｂに格納されているＦＰＧＡデータが版数「Ｃ」である場合、すなわち、ＣＰＵ１１ａが記憶装置２０から読み込んだファームウェアに含まれるＦＰＧＡデータが版数「Ｃ」である場合、ＣＰＵ１１ａは、機能抑止レジスタ設定要求を、ＰＬＤ１１ｅを介してＣＰＬＤ１１ｆに送信する。これにより、機能抑止レジスタ１１１ｆは、「ＯＮ」に設定される。機能抑止レジスタ１１１ｆは、「ＯＮ」に設定されるので、比較部１１３ｆは、比較を行わない。コンフィグ制御部１１４ｆは、比較部１１３ｆから比較結果が送られないのでリコンフィグを実行しない。この結果、ＦＰＧＡ１１ｃに適用されるＦＰＧＡデータは、版数「Ｃ」となる。
【００８６】
次に、ＣＰＬＤ用フラッシュメモリ１１ｇに記憶されているＦＰＧＡデータの版数が「Ｂ」である制御モジュール１０ａが、ストレージシステム１００に実装されたときに、ＣＰＵ１１ａが、記憶装置２０から版数「Ａ」のＦＰＧＡデータを含むファームウェアを読み込んだときの制御モジュール１０ａの処理を説明する。
【００８７】
図７は、制御モジュールの処理を示すシーケンス図である。なお、図７では、版数「Ａ」のＦＰＧＡデータを「ＦＰＧＡデータＡ」と表記している。版数「Ｂ」のＦＰＧＡデータを「ＦＰＧＡデータＢ」と表記している。
【００８８】
［シーケンスＳｅｑ１］  ＣＰＵ１１ａは、ファームウェアの読み出し命令を記憶装置２０に出力する。
［シーケンスＳｅｑ２］  ファームウェアの読み出し命令を受け取った記憶装置２０は、版数「Ａ」のＦＰＧＡデータを含むファームウェアをＣＰＵ１１ａに出力する。
【００８９】
［シーケンスＳｅｑ３］  ＣＰＵ１１ａは、ファームウェアを書き込む書き込み命令をＣＰＵ用フラッシュメモリ１１ｂに出力する。
［シーケンスＳｅｑ４］  ＣＰＵ１１ａは、書き込み命令をＣＰＵ用フラッシュメモリ１１ｂに出力後、版数「Ａ」のＦＰＧＡデータを含むファームウェアをＣＰＵ用フラッシュメモリ１１ｂに出力する。
【００９０】
［シーケンスＳｅｑ５］  ＣＰＵ１１ａは、コンフィグ要求をＰＬＤ１１ｅに出力する。
［シーケンスＳｅｑ６］  コンフィグ要求を受けとったＰＬＤ１１ｅは、受け取ったコンフィグ要求をＣＰＬＤ１１ｆに送る。
【００９１】
［シーケンスＳｅｑ７］  コンフィグ要求を受けとったＣＰＬＤ１１ｆは、ＦＰＧＡ１１ｃのコンフィグを実行する。ＦＰＧＡ１１ｃは、コンフィグレーションメモリの初期化等を行って、コンフィグを行うＦＰＧＡデータの受け取りを待機する。
【００９２】
［シーケンスＳｅｑ８］  ＣＰＵ１１ａは、ＦＰＧＡデータを読み出す読み出し命令をＣＰＵ用フラッシュメモリ１１ｂに出力する。
［シーケンスＳｅｑ９］  読み出し命令を受け取ったＣＰＵ用フラッシュメモリ１１ｂは、版数「Ａ」のＦＰＧＡデータをＣＰＵ１１ａに送る。
【００９３】
［シーケンスＳｅｑ１０］  版数「Ａ」のＦＰＧＡデータを受け取ったＣＰＵ１１ａは、受け取った版数「Ａ」のＦＰＧＡデータをＰＬＤ１１ｅに送る。
［シーケンスＳｅｑ１１］  版数「Ａ」のＦＰＧＡデータを受け取ったＰＬＤ１１ｅは、受け取った版数「Ａ」のＦＰＧＡデータをＣＰＬＤ１１ｆに送る。
【００９４】
［シーケンスＳｅｑ１２］  版数「Ａ」のＦＰＧＡデータを受け取ったＣＰＬＤ１１ｆは、受け取った版数「Ａ」のＦＰＧＡデータをＦＰＧＡ１１ｃに送る。
［シーケンスＳｅｑ１３］  ＣＰＬＤ１１ｆの比較部１１３ｆは、機能抑止レジスタ１１１ｆの設定状況に応じてシーケンスＳｅｑ１１にて受け取ったＦＰＧＡデータの機能および版数とチェックサム記憶部１１２ｆに記憶されているチェックサムＣＳ１、ＣＳ２から識別できるＦＰＧＡデータの機能および版数「Ａ」とを比較するか否かを決定する。
【００９５】
シーケンスＳｅｑ１〜Ｓｅｑ１２の処理によっては機能抑止レジスタ１１１ｆを「ＯＮ」に設定していないため、機能抑止レジスタ１１１ｆは「ＯＦＦ」に設定されている。従って、比較部１１３ｆは、シーケンスＳｅｑ１１にて受け取ったＦＰＧＡデータの機能とチェックサム記憶部１１２ｆに記憶されているチェックサムＣＳ１、ＣＳ２から識別できるＦＰＧＡデータの機能を比較する。比較により、比較部１１３ｆは、シーケンスＳｅｑ１１にて受け取ったＦＰＧＡデータの機能が、電力供給停止時の機能か電力供給復旧時の機能かを識別する。
【００９６】
［シーケンスＳｅｑ１４］  ＣＰＬＤ１１ｆの比較部１１３ｆは、シーケンスＳｅｑ１１にて受け取った版数「Ａ」のＦＰＧＡデータの版数とチェックサムＣＳ１、ＣＳ２から識別できるＦＰＧＡデータの版数「Ａ」を比較する。比較部１１３ｆは、版数を比較した結果、シーケンスＳｅｑ１２にて受け取ったＦＰＧＡデータの版数「Ａ」が、チェックサムＣＳ１、ＣＳ２から識別できるＦＰＧＡデータの版数「Ａ」と等しいと判断する。判断の結果、コンフィグ制御部１１４ｆは、リコンフィグを実行すると決定する。
【００９７】
［シーケンスＳｅｑ１５］  ＦＰＧＡ１１ｃは、シーケンスＳｅｑ１２にて受け取った版数「Ａ」のＦＰＧＡデータのプリアンブル（先頭データ）を検出すると、版数「Ａ」のＦＰＧＡデータのコンフィグを開始する。
【００９８】
なお、シーケンスＳｅｑ１３〜Ｓｅｑ１５の処理の実行は、並行して行われるのが好ましい。並行して処理を行うことにより、図７に示す処理の時間を短縮することができる。
［シーケンスＳｅｑ１６］  ＦＰＧＡ１１ｃは、コンフィグが完了したことを示すコンフィグ完了通知をＣＰＬＤ１１ｆに送る。
【００９９】
［シーケンスＳｅｑ１７］  コンフィグ完了通知を受けとったＣＰＬＤ１１ｆは、ＦＰＧＡ１１ｃのリコンフィグを実行する。ＦＰＧＡ１１ｃは、コンフィグレーションメモリの初期化等を行って、リコンフィグを行うＦＰＧＡデータの受け取りを待機する。
【０１００】
［シーケンスＳｅｑ１８］  ＣＰＬＤ１１ｆは、シーケンスＳｅｑ１４のリコンフィグの実行の決定に基づいて、シーケンスＳｅｑ１３にて識別した機能を有する版数「Ｂ」のＦＰＧＡデータを読み出す読み出し命令をＣＰＬＤ用フラッシュメモリ１１ｇに送る。
【０１０１】
［シーケンスＳｅｑ１９］  読み出し命令を受け取ったＣＰＬＤ用フラッシュメモリ１１ｇは、ＣＰＬＤ用フラッシュメモリ１１ｇ内に記憶されている版数「Ｂ」のＦＰＧＡデータをＣＰＬＤ１１ｆに送る。
【０１０２】
［シーケンスＳｅｑ２０］  版数「Ｂ」のＦＰＧＡデータを受け取ったＣＰＬＤ１１ｆは、受け取った版数「Ｂ」のＦＰＧＡデータをＦＰＧＡ１１ｃに出力する。
［シーケンスＳｅｑ２１］  ＦＰＧＡ１１ｃは、シーケンスＳｅｑ２０にて受け取った版数「Ｂ」のＦＰＧＡデータのプリアンブルを検出すると、版数「Ｂ」のＦＰＧＡデータのコンフィグレーションを開始する。
【０１０３】
［シーケンスＳｅｑ２２］  ＦＰＧＡ１１ｃは、コンフィグが完了したことを示すコンフィグ完了通知をＣＰＬＤ１１ｆに送る。
［シーケンスＳｅｑ２３］  コンフィグ完了通知を受け取ったＣＰＬＤ１１ｆは、受け取ったコンフィグ完了通知をＰＬＤ１１ｅに送る。
【０１０４】
［シーケンスＳｅｑ２４］  コンフィグ完了通知を受け取ったＰＬＤ１１ｅは、受け取ったコンフィグ完了通知をＣＰＵ１１ａに送る。
以上で図７の説明を終了する。
【０１０５】
次に、ＣＰＬＤ用フラッシュメモリ１１ｇに記憶されているＦＰＧＡデータの版数が「Ｂ」である制御モジュール１０ａが、ストレージシステム１００に実装されたときに、ＣＰＵ１１ａが記憶装置２０から版数「Ｃ」のＦＰＧＡデータを含むファームウェアを読み込んだときの制御モジュール１０ａの処理を説明する。
【０１０６】
図８は、制御モジュールの処理を示すシーケンス図である。なお、図８では、版数「Ｃ」のＦＰＧＡデータを「ＦＰＧＡデータＣ」と表記している。
［シーケンスＳｅｑ３１］  ＣＰＵ１１ａは、ファームウェアの読み出し命令を記憶装置２０に出力する。
【０１０７】
［シーケンスＳｅｑ３２］  ファームウェアの読み出し命令を受け取った記憶装置２０は、版数「Ｃ」のＦＰＧＡデータを含むファームウェアをＣＰＵ１１ａに出力する。
［シーケンスＳｅｑ３３］  ＣＰＵ１１ａは、ファームウェアを書き込む書き込み命令をＣＰＵ用フラッシュメモリ１１ｂに出力する。
【０１０８】
［シーケンスＳｅｑ３４］  ＣＰＵ１１ａは、書き込み命令をＣＰＵ用フラッシュメモリ１１ｂに出力後、版数「Ｃ」のＦＰＧＡデータを含むファームウェアをＣＰＵ用フラッシュメモリ１１ｂに出力する。
【０１０９】
［シーケンスＳｅｑ３５］  ＣＰＵ１１ａは、シーケンスＳｅｑ３２にてＣＰＵ１１ａに出力されたファームウェアに含まれるレジスタ書き込み要求をＰＬＤ１１ｅに出力する。
【０１１０】
［シーケンスＳｅｑ３６］  レジスタ書き込み要求を受け取ったＰＬＤ１１ｅは、受け取ったレジスタ書き込み要求をＣＰＬＤ１１ｆに送る。
［シーケンスＳｅｑ３７］  レジスタ書き込み要求を受け取ったＣＰＬＤ１１ｆは、機能抑止レジスタ１１１ｆを「ＯＮ」に設定する。
【０１１１】
［シーケンスＳｅｑ３８］  ＣＰＵ１１ａは、コンフィグ要求をＰＬＤ１１ｅに送る。
［シーケンスＳｅｑ３９］  コンフィグ要求を受けとったＰＬＤ１１ｅは、受け取ったコンフィグ要求をＣＰＬＤ１１ｆに送る。
【０１１２】
［シーケンスＳｅｑ４０］  コンフィグ要求を受けとったＣＰＬＤ１１ｆは、ＦＰＧＡ１１ｃのコンフィグを実行する。ＦＰＧＡ１１ｃは、コンフィグレーションメモリの初期化等を行って、コンフィグを行うＦＰＧＡデータの受け取りを待機する。
【０１１３】
［シーケンスＳｅｑ４１］  ＣＰＵ１１ａは、ＦＰＧＡデータを読み出す読み出し命令をＣＰＵ用フラッシュメモリ１１ｂに出力する。
［シーケンスＳｅｑ４２］  読み出し命令を受け取ったＣＰＵ用フラッシュメモリ１１ｂは、版数「Ｃ」のＦＰＧＡデータをＣＰＵ１１ａに送る。
【０１１４】
［シーケンスＳｅｑ４３］  版数「Ｃ」のＦＰＧＡデータを受け取ったＣＰＵ１１ａは、受け取った版数「Ｃ」のＦＰＧＡデータをＰＬＤ１１ｅに送る。
［シーケンスＳｅｑ４４］  版数「Ｃ」のＦＰＧＡデータを受け取ったＰＬＤ１１ｅは、受け取った版数「Ｃ」のＦＰＧＡデータをＣＰＬＤ１１ｆに送る。
【０１１５】
［シーケンスＳｅｑ４５］  版数「Ｃ」のＦＰＧＡデータを受け取ったＣＰＬＤ１１ｆは、受け取った版数「Ｃ」のＦＰＧＡデータをＦＰＧＡ１１ｃに送る。このとき、シーケンスＳｅｑ３７にて機能抑止レジスタ１１１ｆは「ＯＮ」に設定されているため、ＣＰＬＤ１１ｆの比較部１１３ｆは、機能を比較しない。また、版数も比較しない。
【０１１６】
［シーケンスＳｅｑ４６］  ＦＰＧＡ１１ｃは、シーケンスＳｅｑ４５にて受け取った版数「Ｃ」のＦＰＧＡデータのプリアンブルを検出すると、版数「Ｃ」のＦＰＧＡデータのコンフィグレーションを開始する。
【０１１７】
［シーケンスＳｅｑ４７］  ＦＰＧＡ１１ｃは、コンフィグが完了したことを示すコンフィグ完了通知をＣＰＬＤ１１ｆに送る。
［シーケンスＳｅｑ４８］  コンフィグ完了通知を受け取ったＣＰＬＤ１１ｆは、受け取ったコンフィグ完了通知をＰＬＤ１１ｅに送る。
【０１１８】
［シーケンスＳｅｑ４９］  コンフィグ完了通知を受け取ったＰＬＤ１１ｅは、受け取ったコンフィグ完了通知をＣＰＵ１１ａに送る。
以上で、図８の説明を終了する。
【０１１９】
次に、コンフィグ時のＣＰＬＤの処理を、フローチャートを用いて説明する。
図９は、コンフィグ時のＣＰＬＤの処理を示すフローチャートである。
［ステップＳ１］  コンフィグ制御部１１４ｆは、ＰＬＤ１１ｅからコンフィグ要求を受け付けると、ＦＰＧＡ１１ｃのコンフィグの実行を開始する。その後、ステップＳ２に遷移する。
【０１２０】
［ステップＳ２］  コンフィグ制御部１１４ｆは、ＰＬＤ１１ｅからＦＰＧＡデータを受け取ったか否かを判断する。ＦＰＧＡデータを受け取った場合（ステップＳ２のＹｅｓ）、ステップＳ３に遷移する。ＦＰＧＡデータを受け取っていない場合（ステップＳ２のＮｏ）、ＦＰＧＡデータの受け取りを待機する。
【０１２１】
［ステップＳ３］  コンフィグ制御部１１４ｆは、受け取ったＦＰＧＡデータをＦＰＧＡ１１ｃに出力する。その後、ステップＳ４に遷移する。
［ステップＳ４］  比較部１１３ｆは、機能抑止レジスタ１１１ｆが「ＯＦＦ」に設定されているか否かを判断する。機能抑止レジスタ１１１ｆが「ＯＦＦ」に設定されている場合（ステップＳ４のＹｅｓ）、ステップＳ５に遷移する。機能抑止レジスタ１１１ｆが「ＯＮ」に設定されている場合（ステップＳ４のＮｏ）、ステップＳ１２に遷移する。
【０１２２】
［ステップＳ５］  比較部１１３ｆは、ＰＬＤ１１ｅから受け取ったＦＰＧＡデータの機能および版数を、チェックサム記憶部１１２ｆに記憶されているチェックサムＣＳ１、ＣＳ２から識別できるＦＰＧＡデータの機能および版数「Ａ」と比較する。その後、ステップＳ６に遷移する。
【０１２３】
［ステップＳ６］  比較部１１３ｆは、ステップＳ５の比較結果をコンフィグ制御部１１４ｆに送る。その後、ステップＳ７に遷移する。
［ステップＳ７］  比較結果を受け取ったコンフィグ制御部１１４ｆは、ＰＬＤ１１ｅから受け取ったＦＰＧＡデータの版数がチェックサム記憶部１１２ｆに記憶されているチェックサムＣＳ１、ＣＳ２から識別できるＦＰＧＡデータの版数「Ａ」に一致しているか否かを判断する。版数が一致している場合（ステップＳ７のＹｅｓ）、ステップＳ８に遷移する。版数が一致していない場合（ステップＳ７のＮｏ）、すなわち、ＰＬＤ１１ｅから受け取ったＦＰＧＡデータの版数が、チェックサム記憶部１１２ｆに記憶されているチェックサムＣＳ１、ＣＳ２から識別できるＦＰＧＡデータの版数「Ａ」より新しいという比較結果であった場合、ステップＳ１２に遷移する。
【０１２４】
［ステップＳ８］  コンフィグ制御部１１４ｆは、ステップＳ５にて比較した機能に一致するＦＰＧＡデータの読み出し要求をＣＰＬＤ用フラッシュメモリ１１ｇに出力する。その後、ステップＳ９に遷移する。
【０１２５】
［ステップＳ９］  コンフィグ制御部１１４ｆは、リコンフィグ用のＦＰＧＡデータをＣＰＬＤ用フラッシュメモリ１１ｇから受け取ったか否かを判断する。リコンフィグ用のＦＰＧＡデータをＣＰＬＤ用フラッシュメモリ１１ｇから受け取った場合（ステップＳ９のＹｅｓ）、ステップＳ１０に遷移する。リコンフィグ用のＦＰＧＡデータをＣＰＬＤ用フラッシュメモリ１１ｇから受け取っていない場合（ステップＳ９のＮｏ）、リコンフィグ用のＦＰＧＡデータの受け取りを待機する。
【０１２６】
［ステップＳ１０］  コンフィグ制御部１１４ｆは、コンフィグ完了通知をＦＰＧＡ１１ｃから受け取ったか否かを判断する。コンフィグ完了通知をＦＰＧＡ１１ｃから受け取った場合（ステップＳ１０のＹｅｓ）、ステップＳ１１に遷移する。コンフィグ完了通知をＦＰＧＡ１１ｃから受け取っていない場合（ステップＳ１０のＮｏ）、コンフィグ完了通知の受け取りを待機する。
【０１２７】
［ステップＳ１１］  コンフィグ制御部１１４ｆは、ステップＳ９にて受け取ったＦＰＧＡデータをＦＰＧＡ１１ｃに出力する。その後、ステップＳ１２に遷移する。
［ステップＳ１２］  コンフィグ制御部１１４ｆは、コンフィグ完了通知をＦＰＧＡ１１ｃから受け取ったか否かを判断する。コンフィグ完了通知をＦＰＧＡ１１ｃから受け取った場合（ステップＳ１２のＹｅｓ）、ステップＳ１３に遷移する。コンフィグ完了通知をＦＰＧＡ１１ｃから受け取っていない場合（ステップＳ１２のＮｏ）、コンフィグ完了通知の受け取りを待機する。
【０１２８】
［ステップＳ１３］  コンフィグ制御部１１４ｆは、受け取ったコンフィグ完了通知をＰＬＤ１１ｅに出力する。その後、図１１に示す処理を終了する。
以上述べたように、ストレージシステム１００によれば、機能抑止レジスタ１１１ｆがＯＦＦの場合、コンフィグ制御部１１４ｆが、ＣＰＵ用フラッシュメモリ１１ｂに記憶されているＦＰＧＡデータをコンフィグした後に、ＣＰＬＤ用フラッシュメモリ１１ｇに記憶されているＦＰＧＡデータのリコンフィグを実行するようにした。
【０１２９】
リコンフィグの実行により、古い版数のＦＰＧＡデータが、ＦＰＧＡ１１ｃに書き込まれたままになることを防止できるため、ＮＡＮＤ型フラッシュメモリ１１ｄが交換された場合でも交換されたＮＡＮＤ型フラッシュメモリ１１ｄを制御することができる。従って、制御モジュール１０ａの誤動作を抑制することができる。
【０１３０】
また、人手を介さずに版数の新しいＦＰＧＡデータをＦＰＧＡ１１ｃにコンフィグすることができるため、人手を介することにより生じる不具合の発生を回避することができる。
【０１３１】
他方、機能抑止レジスタ１１１ｆがＯＮの場合、ＣＰＵ用フラッシュメモリ１１ｂに記憶されているＦＰＧＡデータをコンフィグするが、ＣＰＬＤ用フラッシュメモリ１１ｇに記憶されているＦＰＧＡデータのリコンフィグは実行しないようにした。
【０１３２】
リコンフィグを実行しないことにより、ＣＰＵ用フラッシュメモリ１１ｂに記憶されているＦＰＧＡデータの版数が、ＣＰＬＤ用フラッシュメモリ１１ｇに記憶されているＦＰＧＡデータの版数より新しい場合には、新しい版数のＦＰＧＡデータが最終的にＦＰＧＡ１１ｃにコンフィグされる。これにより、版数を容易にアップデートすることができる。
【０１３３】
なお、本実施の形態では、機能抑止レジスタ１１１ｆの設定が「ＯＮ」の場合、比較部１１３ｆは、版数および機能を比較しないようにした。しかしこれに限らず、機能抑止レジスタ１１１ｆの設定が「ＯＮ」の場合、比較部１１３ｆは、版数および機能を比較しても比較結果をコンフィグ制御部１１４ｆに送らないよう設定されていてもよい。
【０１３４】
また、本実施の形態のチェックサム記憶部１１２ｆには、版数「Ａ」のＦＰＧＡデータのチェックサムＣＳ１、ＣＳ２を記憶し、比較部１１３ｆは、ＣＰＵ用フラッシュメモリ１１ｂから読み出されたＦＰＧＡデータの版数を、チェックサム記憶部１１２ｆに記憶されているチェックサムＣＳ１、ＣＳ２から識別できるＦＰＧＡデータの版数「Ａ」と比較した。しかしこれに限らず、チェックサム記憶部１１２ｆには、ＣＰＬＤ用フラッシュメモリ１１ｇに記憶されている版数、すなわち、版数「Ｂ」のＦＰＧＡデータのチェックサムを記憶し、比較部１１３ｆは、ＣＰＵ用フラッシュメモリ１１ｂから読み出されたＦＰＧＡデータの版数を、チェックサム記憶部１１２ｆに記憶されているチェックサムＣＳ１、ＣＳ２から識別できるＦＰＧＡデータの版数「Ｂ」と比較し、この比較結果に応じてリコンフィグを行うか否かを決定するようにしてもよい。
【０１３５】
また、本実施の形態では、版数「Ｂ」のＦＰＧＡデータのＦＰＧＡ１１ｃへのコンフィグの完了を待って版数「Ｃ」のＦＰＧＡデータのＦＰＧＡ１１ｃへのコンフィグを実行している。しかしこれに限らず、版数「Ｂ」のＦＰＧＡデータのコンフィグの完了を待たずに版数「Ｃ」のＦＰＧＡデータのＦＰＧＡ１１ｃへのコンフィグを開始するようにしてもよい。
【０１３６】
＜第３の実施の形態＞
次に、第３の実施の形態のストレージシステム１００について説明する。
以下、第３の実施の形態のストレージシステム１００について、前述した第２の実施の形態のストレージシステムとの相違点を中心に説明し、同様の事項については、その説明を省略する。
【０１３７】
第３の実施の形態のストレージシステム１００は、制御モジュールの構成が第２の実施の形態のストレージシステム１００と異なっている。
図１０は、第３の実施の形態の制御モジュールを示す図である。
【０１３８】
第３の実施の形態のストレージシステム１００では、制御モジュール１０ａが取り外され、取り外された位置に制御モジュール１０ｄが取り付けられている。
なお、図１０では、制御モジュール１０ｄが有する制御部１４以外の要素の図示を省略している。
【０１３９】
以下、第２の実施の形態の制御部１１と同じ機能を有する部位には制御部１１と同じ符号を付し、説明を省略する。
制御モジュール１０ｄが有する制御部１４には、ＮＡＮＤ型フラッシュメモリ１１ｄとは制御方法が異なるＮＡＮＤ型フラッシュメモリ１４ｄが実装されている。このＮＡＮＤ型フラッシュメモリ１４ｄは、ＣＰＬＤ用フラッシュメモリ１１ｇに記憶されている版数「Ｄ」の電力供給停止時用のＦＰＧＡデータ（図１０中、（ＦＰＧＡデータ「Ｄ」停電）と表記）または版数「Ｄ」の電力供給停止時用のＦＰＧＡデータ（図１０中、（ＦＰＧＡデータ「Ｄ」復電）と表記）をＦＰＧＡ１１ｃにコンフィグすることにより、正しい制御が可能となる（ＮＡＮＤ型フラッシュメモリ１４ｄに読み書きするデータが保証できる）ものである。言い換えれば、版数「Ａ」〜「Ｃ」のＦＰＧＡデータがコンフィグされているＦＰＧＡ１１ｃでは、ＮＡＮＤ型フラッシュメモリ１４ｄを正しく制御することができない（ＮＡＮＤ型フラッシュメモリ１４ｄに読み書きするデータが保証できない）。
【０１４０】
また、制御部１４には、ＣＰＬＤ１１ｆとは機能が異なるＣＰＬＤ１４ｆが実装されている。
図１１は、第３の実施の形態のＣＰＬＤの機能を示すブロック図である。
【０１４１】
以下、第２の実施の形態のＣＰＬＤ１１ｆと同じ機能を有する部位にはＣＰＬＤ１１ｆと同じ符号を付し、説明を省略する。
ＣＰＵ用フラッシュメモリ１１ｂには、版数「Ａ」、「Ｂ」、および、「Ｃ」のＦＰＧＡデータの内一つが記憶されている。
【０１４２】
ＣＰＬＤ１４ｆは、比較部１４２ｆの動作の許否を決定する情報を記憶する機能抑止レジスタ１４１ｆをさらに有している。機能抑止レジスタ１４１ｆは、初期設定では、「ＯＦＦ（比較部１４２ｆの動作許可）」に設定されている。
【０１４３】
また、本実施の形態のチェックサム記憶部１１２ｆには、チェックサムＣＳ１、ＣＳ２に加え、版数「Ｂ」の電力供給停止時用のＦＰＧＡデータのチェックサム（図１１ではチェックサム（ＦＰＧＡデータ「Ｂ」停電）と表記）を示すチェックサムＣＳ３、版数「Ｂ」の電力供給復旧時用のＦＰＧＡデータのチェックサム（図１１ではチェックサム（ＦＰＧＡデータ「Ｂ」復電）と表記）を示すチェックサムＣＳ４、版数「Ｃ」の電力供給停止時用のＦＰＧＡデータのチェックサム（図１１ではチェックサム（ＦＰＧＡデータ「Ｃ」停電）と表記）を示すチェックサムＣＳ５、版数「Ｃ」の電力供給復旧時用のＦＰＧＡデータのチェックサム（図１１ではチェックサム（ＦＰＧＡデータ「Ｃ」復電）と表記）を示すチェックサムＣＳ６が予め記憶されている。
【０１４４】
次に、ＣＰＬＤ用フラッシュメモリ１１ｇに記憶されているＦＰＧＡデータの版数が「Ｄ」である場合において、ＣＰＵ１１ａが、記憶装置２０から版数「Ｃ」のＦＰＧＡデータを含むファームウェアを読み込んだときの制御モジュール１０ａの処理を説明する。
【０１４５】
図１２は、制御モジュールの処理を示すシーケンス図である。なお、図１２では、版数「Ｃ」のＦＰＧＡデータを「ＦＰＧＡデータＣ」と表記している。版数「Ｄ」のＦＰＧＡデータを「ＦＰＧＡデータＤ」と表記している。
【０１４６】
［シーケンスＳｅｑ５１］  保守作業後に、ＣＰＵ１１ａは、ファームウェアの読み出し命令を記憶装置２０に出力する。
［シーケンスＳｅｑ５２］  ファームウェアの読み出し命令を受け取った記憶装置２０は、版数「Ｃ」のＦＰＧＡデータを含むファームウェアをＣＰＵ１１ａに出力する。
【０１４７】
［シーケンスＳｅｑ５３］  ＣＰＵ１１ａは、ファームウェアを書き込む書き込み命令をＣＰＵ用フラッシュメモリ１１ｂに出力する。
［シーケンスＳｅｑ５４］  ＣＰＵ１１ａは、書き込み命令をＣＰＵ用フラッシュメモリ１１ｂに出力後、版数「Ｃ」のＦＰＧＡデータを含むファームウェアをＣＰＵ用フラッシュメモリ１１ｂに出力する。
【０１４８】
［シーケンスＳｅｑ５５］  ＣＰＵ１１ａは、シーケンスＳｅｑ５２にてＣＰＵ１１ａに出力されたファームウェアに含まれるレジスタ書き込み要求をＰＬＤ１１ｅに出力する。
【０１４９】
［シーケンスＳｅｑ５６］  レジスタ書き込み要求を受け取ったＰＬＤ１１ｅは、受け取ったレジスタ書き込み要求をＣＰＬＤ１４ｆに送る。
［シーケンスＳｅｑ５７］  レジスタ書き込み要求を受け取ったＣＰＬＤ１４ｆは、機能抑止レジスタ１１１ｆを「ＯＮ」に設定する。
【０１５０】
［シーケンスＳｅｑ５８］  ＣＰＵ１１ａは、コンフィグ要求をＰＬＤ１１ｅに出力する。
［シーケンスＳｅｑ５９］  コンフィグ要求を受けとったＰＬＤ１１ｅは、受け取ったコンフィグ要求をＣＰＬＤ１４ｆに送る。
【０１５１】
［シーケンスＳｅｑ６０］  コンフィグ要求を受けとったＣＰＬＤ１４ｆは、ＦＰＧＡ１１ｃのコンフィグを実行する。ＦＰＧＡ１１ｃは、コンフィグレーションメモリの初期化等を行って、コンフィグを行うＦＰＧＡデータの受け取りを待機する。
【０１５２】
［シーケンスＳｅｑ６１］  ＣＰＵ１１ａは、ＦＰＧＡデータを読み出す読み出し命令をＣＰＵ用フラッシュメモリ１１ｂに出力する。
［シーケンスＳｅｑ６２］  読み出し命令を受け取ったＣＰＵ用フラッシュメモリ１１ｂは、版数「Ｃ」のＦＰＧＡデータをＣＰＵ１１ａに送る。
【０１５３】
［シーケンスＳｅｑ６３］  版数「Ｃ」のＦＰＧＡデータを受け取ったＣＰＵ１１ａは、受け取った版数「Ｃ」のＦＰＧＡデータをＰＬＤ１１ｅに送る。
［シーケンスＳｅｑ６４］  版数「Ｃ」のＦＰＧＡデータを受け取ったＰＬＤ１１ｅは、受け取った版数「Ｃ」のＦＰＧＡデータをＣＰＬＤ１４ｆに送る。
【０１５４】
［シーケンスＳｅｑ６５］  版数「Ｃ」のＦＰＧＡデータを受け取ったＣＰＬＤ１４ｆは、受け取った版数「Ｃ」のＦＰＧＡデータをＦＰＧＡ１１ｃに送る。
［シーケンスＳｅｑ６６］  ＣＰＬＤ１４ｆの比較部１４２ｆは、機能抑止レジスタ１４１ｆの設定状況に応じてシーケンスＳｅｑ６４にて受け取ったＦＰＧＡデータの機能および版数とチェックサム記憶部１１２ｆに記憶されているチェックサムＣＳ１〜ＣＳ６から識別できるＦＰＧＡデータの機能および版数とを比較するか否かを決定する。ここで、シーケンスＳｅｑ５７の処理によって機能抑止レジスタ１１１ｆは、「ＯＮ」に設定されているが、機能抑止レジスタ１４１ｆは、「ＯＦＦ」のままである。従って、比較部１４２ｆは、シーケンスＳｅｑ６４にて受け取ったＦＰＧＡデータの機能とチェックサム記憶部１１２ｆに記憶されているチェックサムＣＳ１〜ＣＳ６から識別できるＦＰＧＡデータの機能を比較する。比較により、比較部１４２ｆは、シーケンスＳｅｑ６４にて受け取った版数「Ｃ」のＦＰＧＡデータの機能が、電力供給停止時の機能か電力供給復旧時の機能かを識別する。
【０１５５】
［シーケンスＳｅｑ６７］  ＣＰＬＤ１４ｆの比較部１４２ｆは、シーケンスＳｅｑ６４にて受け取った版数「Ｃ」のＦＰＧＡデータの版数とチェックサムＣＳ１〜ＣＳ６から識別できるＦＰＧＡデータの版数「Ａ」、「Ｂ」、「Ｃ」を比較する。比較部１４２ｆは、シーケンスＳｅｑ６４にて受け取ったＦＰＧＡデータの版数「Ｃ」が、チェックサムＣＳ５、ＣＳ６から識別できるＦＰＧＡデータの版数「Ｃ」と等しいと判断する。判断の結果、コンフィグ制御部１１４ｆは、リコンフィグを実行すると決定する。
【０１５６】
［シーケンスＳｅｑ６８］  ＦＰＧＡ１１ｃは、シーケンスＳｅｑ６４にて受け取った版数「Ｃ」のＦＰＧＡデータのプリアンブルを検出すると、版数「Ｃ」のＦＰＧＡデータのコンフィグレーションを開始する。
【０１５７】
なお、シーケンスＳｅｑ６６〜Ｓｅｑ６８の処理の実行は、並行して行われるのが好ましい。並行して処理を行うことにより、図１２に示す処理の時間を短縮することができる。
【０１５８】
［シーケンスＳｅｑ６９］  ＦＰＧＡ１１ｃは、コンフィグが完了したことを示すコンフィグ完了通知をＣＰＬＤ１４ｆに送る。
［シーケンスＳｅｑ７０］  コンフィグ完了通知を受けとったＣＰＬＤ１４ｆは、ＦＰＧＡ１１ｃのリコンフィグを実行する。ＦＰＧＡ１１ｃは、コンフィグレーションメモリの初期化等を行って、コンフィグを行うＦＰＧＡデータの受け取りを待機する。
【０１５９】
［シーケンスＳｅｑ７１］  ＣＰＬＤ１４ｆは、シーケンスＳｅｑ６７のリコンフィグの実行の決定に基づいて、シーケンスＳｅｑ６６にて識別した機能を有する版数「Ｄ」のＦＰＧＡデータを読み出す読み出し命令をＣＰＬＤ用フラッシュメモリ１１ｇに出力する。
【０１６０】
［シーケンスＳｅｑ７２］  読み出し命令を受け取ったＣＰＬＤ用フラッシュメモリ１１ｇは、ＣＰＬＤ用フラッシュメモリ１１ｇ内に記憶されている版数「Ｄ」のＦＰＧＡデータをＣＰＬＤ１４ｆに出力する。
【０１６１】
［シーケンスＳｅｑ７３］  版数「Ｄ」のＦＰＧＡデータを受け取ったＣＰＬＤ１４ｆは、受け取った版数「Ｄ」のＦＰＧＡデータをＦＰＧＡ１１ｃに出力する。
［シーケンスＳｅｑ７４］  版数「Ｄ」のＦＰＧＡデータを受け取ったＦＰＧＡ１１ｃは、コンフィグを実行する。
【０１６２】
［シーケンスＳｅｑ７５］  ＦＰＧＡ１１ｃは、コンフィグが完了したことを示すコンフィグ完了通知をＣＰＬＤ１４ｆに送る。
［シーケンスＳｅｑ７６］  コンフィグ完了通知を受け取ったＣＰＬＤ１４ｆは、受け取ったコンフィグ完了通知をＰＬＤ１１ｅに送る。
【０１６３】
［シーケンスＳｅｑ７７］  コンフィグ完了通知を受け取ったＰＬＤ１１ｅは、受け取ったコンフィグ完了通知をＣＰＵ１１ａに送る。
以上で図１２の説明を終了する。
【０１６４】
この第３の実施の形態のストレージシステム１００によれば、第２の実施の形態のストレージシステム１００と同様の効果が得られる。
そして、第３の実施の形態のストレージシステム１００によれば、さらに、制御モジュール１０ａが制御モジュール１０ｄに交換された場合においても、版数「Ｃ」のＦＰＧＡデータがＦＰＧＡ１１ｃにコンフィグされることを防止することができる。従って、制御モジュール１０ｄの誤動作を抑制することができる。
【０１６５】
以上、本発明の制御装置、制御方法およびストレージシステムを、図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置換することができる。また、本発明に、他の任意の構成物や工程が付加されていてもよい。
【０１６６】
また、本発明は、前述した各実施の形態のうちの、任意の２以上の構成（特徴）を組み合わせたものであってもよい。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、制御モジュール１０ａ、１０ｂ、１０ｃ、１０ｄが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ／ＲＷなどがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０１６７】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１６８】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１６９】
また、上記の処理機能の少なくとも一部を、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）などの電子回路で実現することもできる。
【０１７０】
以上の第１〜第３の実施の形態に関し、さらに以下の付記を開示する。
（付記１）  データを記憶する不揮発性記憶部へのデータの書き込みを制御する書き込み制御部と、
前記書き込み制御部の動作を決定する制御情報を記憶する制御情報記憶部と、
前記制御情報の入力を受け付ける入力受付部と、
前記入力受付部が受け付けた前記制御情報と前記制御情報記憶部に記憶されている前記制御情報のうち版数が新しい方の前記制御情報を前記書き込み制御部に設定する設定部と、
を有することを特徴とする制御装置。
【０１７１】
（付記２）  前記入力受付部が受け付けた前記制御情報の版数が、前記制御情報記憶部に記憶されている前記制御情報の版数より新しいか否かを判断する判断部をさらに備え、
前記設定部は、前記判断部の判断結果に基づいて前記制御情報記憶部に記憶されている前記制御情報を前記書き込み制御部に設定することを特徴とする付記１記載の制御装置。
【０１７２】
（付記３）  前記制御情報記憶部に記憶されている制御情報を前記書き込み制御部に設定するか否かを示すフラグを記憶するフラグ記憶部をさらに有し、
前記判断部は、前記フラグ記憶部に記憶された前記フラグに基づいて、判断を行うか否かを決定することを特徴とする付記２記載の制御装置。
【０１７３】
（付記４）  前記判断部は、前記フラグ記憶部に記憶された前記フラグが前記制御情報記憶部に記憶されている制御情報を適用することを示すフラグである場合に限り、判断を行うことを特徴とする付記３記載の制御装置。
【０１７４】
（付記５）  前記フラグ記憶部は、前記制御情報の版数に応じた前記フラグの記憶箇所を複数有し、
前記判断部は、前記制御情報の版数に応じた前記記憶箇所に記憶された前記フラグに基づいて、判断を行うか否かを決定することを特徴とする付記２または３記載の制御装置。
【０１７５】
（付記６）  前記設定部は、前記入力受付部が前記制御情報を受け付けた時点で前記書き込み制御部への前記制御情報の書き込みを開始し、その後、前記判断部の判断結果に基づいて前記制御情報記憶部に記憶されている前記制御情報を前記書き込み制御部に設定することを特徴とする付記２ないし５のいずれかに記載の制御装置。
【０１７６】
（付記７）  前記設定部の前記入力受付部が受け付けた前記制御情報の前記書き込み制御部への設定処理と、前記判断部の判断処理を並行して実行することを特徴とする付記２ないし６のいずれかに記載の制御装置。
【０１７７】
（付記８）  前記制御情報記憶部に記憶されている前記制御情報の版数が、前記入力受付部が受け付けた前記制御情報の版数と等しい場合、前記設定部は、前記制御情報記憶部に記憶されている前記制御情報を前記書き込み制御部に書き込まないことを特徴とする付記２記載の制御装置。
【０１７８】
（付記９）  前記設定部は、前記入力受付部が受け付けた前記制御情報の機能に一致する機能を有する前記制御情報記憶部に記憶されている前記制御情報を前記書き込み制御部に設定することを特徴とする付記２ないし８のいずれかに記載の制御装置。
【０１７９】
（付記１０）  制御装置が有する、
入力受付部が、データを記憶する不揮発性記憶部へのデータの書き込みを制御する書き込み制御部の動作を決定する制御情報の入力を受け付け、
設定部が、受け付けた前記制御情報と前記制御モジュールが有する制御情報記憶部に記憶されている前記制御情報のうち版数が新しい方の前記制御情報を前記書き込み制御部に設定する、
ことを特徴とする制御方法。
【０１８０】
（付記１１）  データが記憶される記憶装置と、前記記憶装置に対するデータ記憶を制御する制御部と、前記制御部の動作を決定する制御情報を記憶する制御情報記憶装置とを備えるストレージシステムにおいて、
前記制御部は、
データが書き込まれる不揮発性記憶部と、
前記不揮発性記憶部へのデータの書き込みを制御する書き込み制御部と、
前記書き込み制御部の動作を決定する制御情報を記憶する制御情報記憶部と、
前記入力受付部が受け付けた前記制御情報と前記制御情報記憶部に記憶されている前記制御情報のうち版数が新しい方の前記制御情報を前記書き込み制御部に設定する設定部と、
を備えることを特徴とするストレージシステム。
【符号の説明】
【０１８１】
１  制御装置
１ａ  制御情報記憶部
１ｂ  書き込み制御部
１ｃ  不揮発性記憶部
１ｄ  入力受付部
１ｅ  判断部
１ｆ  比較用版数情報記憶部
１ｇ  フラグ記憶部
１ｈ  設定部
１０ａ〜１０ｄ  制御モジュール
１１、１４  制御部
１１ａ  ＣＰＵ
１１ｂ  ＣＰＵ用フラッシュメモリ
１１ｃ  ＦＰＧＡ
１１ｄ、１４ｄ  ＮＡＮＤ型フラッシュメモリ
１１ｅ  ＰＬＤ
１１ｆ  ＣＰＬＤ
１１ｇ  ＣＰＬＤ用フラッシュメモリ
１１ｈ  キャッシュメモリ
２０  システムディスク
１００  ストレージシステム
１１１ｆ、１４１ｆ  機能抑止レジスタ
１１２ｆ  チェックサム記憶部
１１３ｆ、１４２ｆ  比較部
１１４ｆ  コンフィグ制御部
【図１】
0005644202.tif 000002
【図２】
0005644202.tif 000003
【図３】
0005644202.tif 000004
【図４】
0005644202.tif 000005
【図５】
0005644202.tif 000006
【図６】
0005644202.tif 000007
【図７】
0005644202.tif 000008
【図８】
0005644202.tif 000009
【図９】
0005644202.tif 000010
【図１０】
0005644202.tif 000011
【図１１】
0005644202.tif 000012
【図１２】
0005644202.tif 000013
【図１３】
0005644202.tif 000014