説明

制御装置、制御方法およびストレージシステム

【課題】誤動作を抑制すること。
【解決手段】書き込み制御部1bは、データを記憶する不揮発性記憶部1cへのデータの書き込みを制御する。制御情報記憶部1aは、書き込み制御部1bの動作を決定する制御情報を記憶する。入力受付部1dは、制御情報の入力を受け付ける。設定部1hは、入力受付部1dが受け付けた制御情報と制御情報記憶部1aに記憶されている制御情報のうち版数が新しい方の制御情報を書き込み制御部1bに設定する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は制御装置、制御方法およびストレージシステムに関する。
【背景技術】
【0002】
データのバックアップ等の用途に使用するフラッシュメモリ(Flash Memory)等の不揮発性の記憶媒体が知られている。
図13は、不揮発性の記憶媒体を備える装置の一例を説明する図である。
【0003】
図13に示す制御装置90は、HDD(Hard Disk Drive)やSSD(Solid State Drive)等を備える記憶装置91を制御する装置である。
制御装置90には、CPU90aとCPU90aのキャッシュメモリ90bとCPU用フラッシュメモリ90fが設けられている。
【0004】
また、制御装置90には、制御装置90への電源の供給が停止されたときに、キャッシュメモリ90bに記憶されている情報のバックアップ先となるフラッシュメモリ90dが設けられている。フラッシュメモリ90dへのバックアップは、FPGA90cにより実行される。
【0005】
FPGA90cのバックアップ動作を決定するFPGAデータは、例えば記憶装置91に記憶されている。記憶装置91に記憶されているFPGAデータは、所定のタイミングでCPU90aにより読み出され、CPU用フラッシュメモリ90fに記憶される。そして、FPGA90cのFPGAデータをコンフィグ(Config)する際には、CPU90aがCPU用フラッシュメモリ90fからFPGAデータを読み出し、読み出したFPGAデータが、PLD90dからFPGA90cに送られる。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開平11−95994号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
フラッシュメモリの小型化や、生産中止等の理由により、以前搭載していたフラッシュメモリとは制御方法の異なるフラッシュメモリを搭載した制御装置を用いて記憶装置を制御する場合等が生じる。
【0008】
例えば、図13に示す制御装置90では、フラッシュメモリ90dとは制御方法の異なるフラッシュメモリを搭載した制御装置を用いて記憶装置91を制御する場合等が生じる。
【0009】
このとき記憶装置91に記憶されているFPGAデータが、フラッシュメモリ90dとは制御方法の異なるフラッシュメモリの制御に対応していないと、記憶装置91に記憶されているFPGAデータのFPGA90cへのコンフィグ後にFPGA90cが正常に動作しなくなるという問題があった。
【0010】
また、FPGAデータをFPGA90cにコンフィグするタイミングをCPU90aに依存せず、管理者が決定すると、人為的なミスが発生する可能性があり、運用上徹底することが難しい。
【0011】
本発明はこのような点に鑑みてなされたものであり、誤動作を抑制する制御装置、制御方法およびストレージシステムを提供することを目的とする。
【課題を解決するための手段】
【0012】
上記目的を達成するために、開示の制御装置が提供される。この制御装置は、書き込み制御部と制御情報記憶部と、入力受付部と、設定部とを有している。
書き込み制御部は、データを記憶する不揮発性記憶部へのデータの書き込みを制御する。
【0013】
制御情報記憶部は、書き込み制御部の動作を決定する制御情報を記憶する。
入力受付部は、制御情報の入力を受け付ける。
設定部は、入力受付部が受け付けた制御情報と制御情報記憶部に記憶されている制御情報のうち版数が新しい方の制御情報を書き込み制御部に設定する。
【発明の効果】
【0014】
開示の制御装置によれば、誤動作を抑制することができる。
【図面の簡単な説明】
【0015】
【図1】第1の実施の形態の制御装置の概要を示す図である。
【図2】第2の実施の形態のストレージシステムを示すブロック図である。
【図3】ドライブエンクロージャの一例を示す図である。
【図4】制御モジュールの機能を示すブロック図である。
【図5】CPLDの機能を示すブロック図である。
【図6】CPLDの処理を説明する図である。
【図7】制御モジュールの処理を示すシーケンス図である。
【図8】制御モジュールの処理を示すシーケンス図である。
【図9】コンフィグ時のCPLDの処理を示すフローチャートである。
【図10】第3の実施の形態の制御モジュールを示す図である。
【図11】第3の実施の形態のCPLDの機能を示すブロック図である。
【図12】制御モジュールの処理を示すシーケンス図である。
【図13】不揮発性の記憶媒体を備える装置の一例を説明する図である。
【発明を実施するための形態】
【0016】
以下、実施の形態を、図面を参照して詳細に説明する。
まず、実施の形態の制御装置について説明し、その後、実施の形態をより具体的に説明する。
【0017】
<第1の実施の形態>
図1は、第1の実施の形態の制御装置の概要を示す図である。
第1の実施の形態の制御装置1は、制御情報記憶部1aと、書き込み制御部1bと、不揮発性記憶部1cと、入力受付部1dと、判断部1eと、比較用版数情報記憶部1fと、フラグ記憶部1gと、設定部1hとを有している。
【0018】
制御情報記憶部1aは、書き込み制御部1bの動作を決定する制御情報を記憶する。
制御情報の内容としては、特に限定されないが、例えば、制御装置1の電力供給停止時の書き込み制御部1bの動作を決定する制御情報や、制御装置1の電力供給復旧時の書き込み制御部1bの動作を決定する制御情報等が挙げられる。
【0019】
書き込み制御部1bは、設定部1hにより設定された制御情報により、不揮発性記憶部1cへのデータの書き込みを制御する。
書き込み制御部1bは、例えば、前述した制御装置1の電力供給停止時には、制御装置1の図示しない揮発性メモリに記憶されているデータを不揮発性記憶部1cに退避させる。また、制御装置1の電力供給復旧時には、不揮発性記憶部1cに退避させたデータを揮発性メモリに書き戻す。
【0020】
入力受付部1dは、制御装置1の外部から制御装置1に入力される制御情報の入力を受け付ける。入力を受け付けるタイミングとしては、特に限定されないが、例えば、制御装置1の初回起動時等が挙げられる。
【0021】
なお、入力受付部1dは、入力受付部1d自身が、制御装置1の外部から制御情報を読み出す機能を有していてもよい。また、入力受付部1dは、受け付けた制御情報を一時記憶する機能を有していてもよいし、図示しない他の記憶媒体(フラッシュメモリ等)に一時記憶する機能を有していてもよい。
【0022】
また、入力受付部1dは、後述するフラグ設定情報を受け付けることもできる。
判断部1eは、入力受付部1dが受け付けた制御情報に含まれる版数を識別する版数情報を、比較用版数情報記憶部1fに記憶されている制御情報の版数を識別する版数情報と比較する。この比較により、入力受付部1dが受け付けた制御情報の版数が、制御情報記憶部1aに記憶されている制御情報の版数より新しいか否かが判断される。
【0023】
例えば、比較用版数情報記憶部1fに記憶されている版数情報が「A」であり、入力受付部1dが受け付けた制御情報の版数が「A」であり、制御情報記憶部1aに記憶されている制御情報の版数情報が「B」(BはAよりも新しい版数を示す情報)である場合、判断部1eは、入力受付部1dが受け付けた制御情報の版数が、制御情報記憶部1aに記憶されている制御情報の版数より古いと判断する。
【0024】
なお、判断部1eは、入力受付部1dが受け付けた制御情報の版数情報を、制御情報記憶部1aに記憶されている制御情報の版数情報と比較するようにしてもよい。
フラグ記憶部1gは、入力受付部1dが受け付けたフラグ設定情報に基づいて入力受付部1dが設定するフラグを記憶する。
【0025】
このフラグは、判断部1eの比較動作を実行するか否かを決定するフラグである。具体的には、フラグ記憶部1gを制御装置1に設けた場合、判断部1eは、フラグ記憶部1gに記憶されたフラグを参照する。そして、フラグが設定されている場合、判断部1eは、比較動作を実行しない。換言すれば、フラグが設定されていない場合に限り、判断部1eが、入力受付部1dが受け付けた制御情報の版数情報を、比較用版数情報記憶部1fに記憶されている比較用の版数情報と比較することができる。
【0026】
フラグ設定情報は、例えば、制御情報に含まれる版数情報が「C」(CはAおよびBよりも新しい版数を示す情報)である場合に、制御情報に併せてこのフラグ設定情報を入力受付部1dに読み込ませるようにする。
【0027】
設定部1hは、入力受付部1dが受け付けた制御情報と制御情報記憶部1aに記憶されている制御情報のうち版数が新しい方の制御情報を書き込み制御部1bに設定する。
ここで、設定部1hは、判断部1eの比較結果に基づいて、選択した制御情報を書き込み制御部1bに設定することができる。
【0028】
例えば、制御情報記憶部1aに記憶されている制御情報の版数が、入力受付部1dが受け付けた制御情報の版数と等しい場合、設定部1hは、制御情報記憶部1aに記憶されている制御情報を書き込み制御部1bに設定しないよう制御することができる。この制御により、設定部1hが同じ版数の制御情報を書き込み制御部1bに書き込まないようにすることができる。
【0029】
また、判断部1eの比較動作が実行されない場合(すなわち、フラグが設定されている場合)も、設定部1hは、制御情報記憶部1aに記憶されている制御情報を書き込み制御部1bに設定しないよう制御することができる。この制御により、設定部1hが、制御情報記憶部1aに記憶されている古い版数の制御情報を書き込み制御部1bに書き込まないようにすることができる。
【0030】
制御装置1によれば、入力受付部1dが受け付けた制御情報と制御情報記憶部1aに記憶されている制御情報のうち版数が新しい方の制御情報が書き込み制御部1bに設定される。従って、旧版のデータが書き込み制御部1bに設定され、書き込み制御部1bが誤動作することを抑制することができる。
【0031】
なお、制御情報記憶部1aは、フラッシュメモリ等により実現することができる。また、書き込み制御部1bは、例えば、FPGA(Field Programmable Gate Array)等により実現することができる。また、入力受付部1dは、例えば、CPU(Central Processing Unit)等により実現することができる。また、入力受付部1d、判断部1e、比較用版数情報記憶部1f、フラグ記憶部1gおよび設定部1hは、例えば、CPLD(Complex Programmable Logic Device)等により実現することができる。
【0032】
また、制御装置1に比較用版数情報記憶部1fおよびフラグ記憶部1gを配置するか否かは任意に決定することができ、省略することもできる。
以下、実施の形態をより具体的に説明する。
【0033】
<第2の実施の形態>
図2は、第2の実施の形態のストレージシステムを示すブロック図である。
ストレージシステム100は、ホストコンピュータ(以下、単に「ホスト」と言う)30と、ディスクの動作制御を行う制御モジュール(CM:Controller Module)10a、10b、10cと、記憶装置20を構成するドライブエンクロージャ(DE:Drive Enclosure)20a、20b、20c、20dとを有する。
【0034】
ストレージシステム100は、ドライブエンクロージャ20a、20b、20c、20dと、ホスト30とが、制御モジュール10a、10b、10cを介して接続されている。
【0035】
ストレージシステム100は、運用に使用する制御モジュールを2以上有することで、冗長性が確保されている。
制御モジュール10a、10b、10cは、コントローラエンクロージャ(CE:Controller Enclosure)18内に実装されている。各制御モジュール10a、10b、10cは、それぞれストレージ制御装置として機能する。
【0036】
制御モジュール10a、10b、10cは、それぞれ、コントローラエンクロージャ18に対し着脱可能になっている。
なお、図2では、1つのホスト30を図示しているが、複数のホストが、コントローラエンクロージャ18に接続されていてもよい。
【0037】
制御モジュール10a、10b、10cは、それぞれ、アクセス指示情報としてI/Oコマンドをドライブエンクロージャ20a、20b、20c、20dに送信し、ストレージ装置の記憶領域に対するデータの入出力指令を行う。また、入出力指令からアクセス監視時間が経過しても応答が得られないときは、このI/O処理を中断するアボート指示コマンドをドライブエンクロージャ20a、20b、20c、20dに送信する。
【0038】
ドライブエンクロージャ20a、20b、20c、20dにより構成される記憶装置20は、冗長性を考慮したRAID構成をなしている。
制御モジュール10aは、制御部11によって装置全体が制御されている。
【0039】
制御部11には、内部バスを介してチャネルアダプタ(CA:Channel Adapter)12およびデバイスアダプタ(DA:Device Adapter)13が接続されている。
チャネルアダプタ12は、ファイバチャネル(FC:Fibre Channel)スイッチ31に接続され、ファイバチャネルスイッチ31を介してホスト30のチャネルCH1、CH2、CH3、CH4に接続される。この経路を介して、ホスト30と、CPU11aとの間でデータの送受信が行われる。
【0040】
デバイスアダプタ13は、記憶装置20を構成する外部のドライブエンクロージャ20a、20b、20cおよび20dに接続される。制御部11は、デバイスアダプタ17を介して外部のドライブエンクロージャ20a、20b、20cおよび20dとの間でデータの送受信を行う。
【0041】
制御電源供給部41は、制御モジュール10a、10bおよび10cに接続されている。制御電源供給部41は、制御モジュール10a、10bおよび10cを駆動する駆動電源を制御モジュール10a、10bおよび10cに供給する。
【0042】
停電時給電部42は、制御モジュール10a、10bおよび10cに接続されている。
停電時給電部42は、内部にコンデンサ(図示せず)を有している。停電時給電部42は、制御電源供給部41の稼働時、すなわち、制御電源供給部41の制御モジュール10a、10bおよび10cへの電源供給時は、制御電源供給部41から電力の供給を受けて、内部に有するコンデンサに電力を蓄える。
【0043】
そして、停電時等、制御電源供給部41の制御モジュール10a、10bおよび10cへの電力供給停止時(以下、単に「電力供給停止時」と言う)には、内部に有するコンデンサに蓄えた電力を制御モジュール10a、10bおよび10cに供給する。
【0044】
制御モジュール10a、10bおよび10cは、コンデンサから供給された電力によって、制御部11が有する後述するCPUキャッシュに記憶されている情報を、後述するNAND型フラッシュメモリに退避させる。
【0045】
なお、制御モジュール10b、10cのハードウェア構成も、制御モジュール10aと同様である。このようなハードウェア構成によって、制御モジュール10a、10bおよび10cの処理機能を実現することができる。
【0046】
図3は、ドライブエンクロージャの一例を示す図である。
ドライブエンクロージャ20aは、複数のストレージ装置211a、211b、211c、211d、211e、211f、211gおよび211hと、各ストレージ装置211a〜211hにそれぞれ電源経路221a、221bを介して電源を供給する複数の電源供給部(PSU:Power Supply Unit)231a、231bとを有する。さらに、ドライブエンクロージャ20aは、各ストレージ装置211a〜211hとそれぞれ入出力経路222a、222bを介して接続された複数のデバイス監視部(PBC:Port Bypass Circuit)230a、230bを有する。
【0047】
各ストレージ装置211a〜211hには、電源供給部231a、231bの両方から電力が供給される。
電源供給部231a、231bは、それぞれが、ドライブエンクロージャ20aが備える全てのストレージ装置211a〜211hを同時に稼動し、また、全てのストレージ装置211a〜211hのうち所定の数のストレージ装置を同時に起動するのに充分な電力を供給する能力を備えている。
【0048】
このように、電源供給部231a、231bが冗長化された構成であるため、一方の電源供給部が故障したとしても、ストレージ装置211a〜211hへの電力の供給の停止を抑制することができる。
【0049】
デバイス監視部230a、230bは、各制御モジュール10a〜10cの指示に基づいて、各ストレージ装置211a〜211hに記憶される情報を読み出したり、書き込んだりする。
【0050】
さらに、デバイス監視部230a、230bは、各ストレージ装置211a〜211hを監視し、各ストレージ装置211a〜211hの動作状態(稼動、起動、停止)を検出する。ここで、稼動とは、起動後の安定した状態を指し、この稼動状態においてデータの書き込み、または、読み出し処理が行われる。
【0051】
さらに、デバイス監視部230a、230bは、各電源供給部231a、231bを監視し、各電源供給部231a、231bの動作モードの検出及び故障検出を行う。さらに、デバイス監視部230a、230bは、電源供給部231a、231bが供給可能な最大電力量と、電源供給部231a、231bの現在の電力使用量とを検出する。
【0052】
なお、他のドライブエンクロージャ20b〜20dも、ドライブエンクロージャ20aと同様の構造を備えている。
このようなドライブエンクロージャ20b〜20dで構成される記憶装置20は、各ドライブエンクロージャ20b〜20dが備えるストレージ装置のうちの複数のストレージ装置に、例えばユーザ情報等の情報を分割して記憶し、またはそれぞれ同じ情報を記憶するRAID構造を備える。
【0053】
そして、記憶装置20は、各ドライブエンクロージャ20a〜20dが備えるストレージのうち、1つ、または複数のストレージによりそれぞれ構成された複数のRAIDグループを有する。ここで、記憶装置20では、各RAIDグループに論理ボリュームが設定されている。なお、ここでは、RAIDグループと論理ボリュームとは一致するが、これに限らず、1つの論理ボリュームが複数のRAIDグループに対して設けられていてもよく、1つのRAIDグループに対して複数の論理ボリュームが設けられていてもよい。また、図3ではドライブエンクロージャ20aは、8つのストレージ装置211a〜211hを有するが、これに限らず、任意の個数のストレージ装置を有してもよい。
【0054】
次に、制御モジュール10a、10b、10cが備える機能を、より詳しく説明する。
図4は、制御モジュールの機能を示すブロック図である。
制御部11は、CPU11aと、CPU用フラッシュメモリ11bと、キャッシュメモリ11hと、FPGA11cと、NAND型フラッシュメモリ11dと、PLD(Programmable Logic Device)11eと、CPLD11fと、CPLD用フラッシュメモリ11gとを有している。
【0055】
制御部11は、CPU11aによって装置全体が制御されている。
CPU11aには、内部バスを介してCPU用フラッシュメモリ11b、FPGA11cおよびPLD11eが接続されている。また、メモリインタフェースを介しキャッシュメモリ11hが接続される。
【0056】
記憶装置20には、制御モジュール10aのファームウェアが、アーカイブ形式で格納されている。すなわち、記憶装置20は、制御情報記憶装置としての役割も果たす。このファームウェアは、制御モジュール10aがストレージシステム100に実装されたとき等にCPU11aが記憶装置20のファームウェアの格納箇所に自動的にアクセスすることにより、または、ファームウェアの格納箇所に自動的にアクセスさせるユーザの指示をCPU11aが受け付けることにより、CPU11aが記憶装置20から読み出してCPU用フラッシュメモリ11bに書き込む。
【0057】
ファームウェアには、FPGA11cの動作を決定するFPGAデータが内包されている。FPGA11cのFPGAデータを改版する要求が生じた場合、制御モジュール10aのファームウェアをアップデートすることでFPGA11cのFPGAデータを改版することができる。
【0058】
以下、FPGAデータの版数を、版数の古い順に「A」、「B」、「C」とする。すなわち、版数「A」が一番古く、版数「C」が一番新しい。
1つのファームウェアには、いずれか1つの版数のFPGAデータが内包されている。そして、版数「C」のファームウェアにのみ、後述する機能抑止レジスタを設定する機能抑止レジスタ設定要求が含まれており、版数「A」、「B」のファームウェアには、機能抑止レジスタ設定要求は含まれていない。この機能抑止レジスタ設定要求には、機能抑止レジスタのアドレスを特定する情報と、特定したアドレスの機能抑止レジスタを設定する要求とが含まれている。
【0059】
ここで、FPGA11cの機能には、キャッシュメモリ11hに記憶されているデータを電力供給停止時にNAND型フラッシュメモリ11dに退避する機能と、電力供給停止時にNAND型フラッシュメモリ11dに退避したデータを、電力供給復旧時にキャッシュメモリ11hに書き戻す機能の2種類が存在する。このため、FPGAデータには、電力供給停止時用のFPGAデータと、電力供給復旧時用のFPGAデータの2種類が存在する。
【0060】
CPU11aは、記憶装置20から読み込んだファームウェアに機能抑止レジスタ設定要求が含まれている場合、機能抑止レジスタ設定要求を、PLD11eを介してCPLD11fに送信する。
【0061】
また、CPU11aは、記憶装置20から読み出してCPU用フラッシュメモリ11bに書き込んだファームウェアに含まれるFPGAデータを必要に応じて読み出し、読み出したFPGAデータをPLD11e経由でCPLD11fに送る。
【0062】
CPU用フラッシュメモリ11bには、CPU11aに実行させるプログラムの少なくとも一部が一時的に格納される。また、CPU用フラッシュメモリ11bには、CPU11aが記憶装置20から読み込んだFPGAデータ等、CPU11aによる処理に用いる各種データが格納される。
【0063】
FPGA11cは、コンフィグされたFPGAデータに従って、インタフェースを介してFPGA11cに接続されているNAND型フラッシュメモリ11dを制御する。なお、FPGA11cの制御内容については、後に詳述する。
【0064】
NAND型フラッシュメモリ11dは、不揮発性メモリであり、電力供給停止時にキャッシュメモリ11hに記憶されているデータの退避先となる記憶領域を有している。
PLD11eは、CPU11aから送られてきたFPGAデータを受け取ると、CPLD11fに送る。
【0065】
CPLD用フラッシュメモリ11gは、CPLD11fに接続されている。CPLD用フラッシュメモリ11gには、版数「B」の電力供給停止時用のFPGAデータ(図5では「FPGAデータ「B」停電」と表記)および版数「B」の電力供給復旧時用のFPGAデータ(図5では「FPGAデータ「B」復電」と表記)が予め書き込まれて記憶されている。CPLD用フラッシュメモリ11gに記憶された版数「B」のFPGAデータは、FPGA11cにコンフィグされると、NAND型フラッシュメモリ11dを制御できることが保証されているデータである。
【0066】
CPLD11fは、FPGA11c、PLD11eおよびCPLD用フラッシュメモリ11gに接続されている。CPLD11fは、CPU用フラッシュメモリ11bに記憶されているFPGAデータと、CPLD用フラッシュメモリ11gに記憶されているFPGAデータとに基づいて、FPGA11cのコンフィグを制御する。以下、CPLD11fの機能を詳しく説明する。
【0067】
図5は、CPLDの機能を示すブロック図である。
CPLD11fは、機能抑止レジスタ111fと、チェックサム記憶部112fと、比較部113fと、コンフィグ制御部114fとを有している。
【0068】
機能抑止レジスタ111fは、比較部113fの動作の許否を決定する情報を記憶するレジスタである。機能抑止レジスタ111fは、初期設定では、「OFF(比較部113fの動作許可)」に設定されている。
【0069】
CPLD11fは、PLD11eを介してCPU11aから受信する機能抑止レジスタ設定要求に基づいて、機能抑止レジスタ111fを「ON(比較部113fの動作不可)」に設定する。
【0070】
チェックサム記憶部112fには、FPGA11cにコンフィグされると、FPGA11cによるNAND型フラッシュメモリ11dへのデータの読み書きの結果が保証できない等、設計者がFPGA11cにコンフィグさせたくないFPGAデータのチェックサム(Check Sum)CS1、CS2が予め記憶されている。
【0071】
チェックサムCS1、CS2には、FPGAデータの版数および機能を識別する情報が含まれている。
チェックサムCS1、CS2は、CPLD用フラッシュメモリ11gに記憶されている版数「B」のFPGAデータよりも旧版の版数「A」のFPGAデータ(図5では「FPGAデータ「A」」と表記)のチェックサムである。
【0072】
以下、版数「A」のFPGAデータは、FPGA11cにコンフィグされると、NAND型フラッシュメモリ11dへのデータの読み書きの結果が保証できないデータであるものとする。
【0073】
また、前述したように、FPGAデータには、電力供給停止時用のFPGAデータと、電力供給復旧時用のFPGAデータの2種類が存在する。チェックサムCS1は、電力供給停止時用のFPGAデータのチェックサム(図5ではチェックサム(FPGAデータ「A」停電)と表記)であり、チェックサムCS2は、電力供給復旧時用のFPGAデータのチェックサム(図5ではチェックサム(FPGAデータ「A」復電)と表記)である。
【0074】
比較部113fは、機能抑止レジスタ111fの設定状況に応じてCPU用フラッシュメモリ11bから読み出されたFPGAデータの機能および版数を、チェックサム記憶部112fに記憶されているチェックサムCS1、CS2から識別できるFPGAデータの機能および版数「A」と比較するか否かを決定する。具体的には、機能抑止レジスタ111fの設定が「ON」の場合、比較部113fは、CPU用フラッシュメモリ11bから読み出されたFPGAデータの機能および版数を、チェックサム記憶部112fに記憶されているチェックサムCS1、CS2から識別できるFPGAデータの機能および版数「A」と比較しない。
【0075】
他方、機能抑止レジスタ111fの設定が「OFF」の場合、CPU用フラッシュメモリ11bから読み出されたFPGAデータの機能および版数を、チェックサム記憶部112fに記憶されているチェックサムCS1、CS2から識別できるFPGAデータの機能および版数「A」と比較する。具体的には、比較部113fは、CPU用フラッシュメモリ11bから読み出されたFPGAデータのチェックサムと、チェックサム記憶部112fに記憶されているチェックサムCS1を比較する。また、CPU用フラッシュメモリ11bから読み出されたFPGAデータのチェックサムと、チェックサム記憶部112fに記憶されているチェックサムCS2を比較する。
【0076】
そして、比較部113fは、CPU用フラッシュメモリ11bから読み出されたFPGAデータの版数とチェックサムCS1、CS2から識別できるFPGAデータの版数「A」のどちらの版数が新しいか、また、CPU用フラッシュメモリ11bから読み出されたFPGAデータの機能が、電力供給停止時の機能か電力供給復旧時の機能かを示す比較結果をコンフィグ制御部114fに送る。
【0077】
コンフィグ制御部114fは、CPU11aがPLD11e経由で送ってきたコンフィグ用のFPGAデータを受け取ると、受け取ったコンフィグ用のFPGAデータを用いてFPGA11cのコンフィグを実行する。また、コンフィグ制御部114fは、比較部113fから比較結果が送られてくると、比較結果に基づいて、CPLD用フラッシュメモリ11gに記憶されているFPGAデータを用いてFPGA11cのリコンフィグ(再度のコンフィグ)を実行するか否かを決定する。
【0078】
具体的には、比較結果が、CPU用フラッシュメモリ11bから読み出されたFPGAデータの版数が、チェックサム記憶部112fに記憶されているチェックサムCS1、CS2から識別できるFPGAデータの版数「A」より新しいという比較結果であった場合、コンフィグ制御部114fは、CPLD用フラッシュメモリ11gに記憶されているFPGAデータのFPGA11cへのリコンフィグを実行しないと決定する。リコンフィグを実行しないと決定した場合、コンフィグ制御部114fは、対応する機能のFPGAデータの読み出し要求をCPLD用フラッシュメモリ11gに出力しない。
【0079】
また、比較結果が、CPU用フラッシュメモリ11bから読み出されたFPGAデータの版数が、チェックサム記憶部112fに記憶されているチェックサムCS1、CS2から識別できるFPGAデータの版数「A」と等しいという比較結果であった場合、コンフィグ制御部114fは、リコンフィグを実行すると決定する。リコンフィグを実行すると決定した場合、コンフィグ制御部114fは、比較結果に基づいて、CPU用フラッシュメモリ11bから読み出されたFPGAデータの機能が、電力供給停止時の機能か電力供給復旧時の機能かを判断する。
【0080】
電力供給停止時の機能である場合、コンフィグ制御部114fは、電力供給停止時用のFPGAデータの読み出し要求をCPLD用フラッシュメモリ11gに出力する。また、電力供給復旧時の機能である場合、コンフィグ制御部114fは、電力供給復旧時用のFPGAデータの読み出し要求をCPLD用フラッシュメモリ11gに出力する。
【0081】
そして、CPLD用フラッシュメモリ11gからリコンフィグ用のFPGAデータを受け取ると、受け取ったリコンフィグ用のFPGAデータを用いてFPGA11cのコンフィグを実行する。
【0082】
以上に示した比較部113fおよびコンフィグ制御部114fの制御内容を表にまとめると以下のようになる。
図6は、CPLDの処理を説明する図である。
【0083】
CPU用フラッシュメモリ11bに記憶されているFPGAデータが版数「A」である場合、すなわち、CPU11aが記憶装置20から読み込んだファームウェアに含まれるFPGAデータが版数「A」である場合、CPU11aは、機能抑止レジスタ設定要求を、PLD11eを介してCPLD11fに送信しないため、機能抑止レジスタ111fは「OFF」のままである。機能抑止レジスタ111fは「OFF」のままであるので、比較部113fは、比較を行う。コンフィグ制御部114fは、比較部113fの比較結果に基づいてリコンフィグを実行する。この結果、最終的にFPGA11cに適用されるFPGAデータは版数「B」である。
【0084】
CPU用フラッシュメモリ11bに記憶されているFPGAデータが版数「B」である場合、すなわち、CPU11aが記憶装置20から読み込んだファームウェアに含まれるFPGAデータが版数「B」である場合、CPU11aは、機能抑止レジスタ設定要求を、PLD11eを介してCPLD11fに送信しないため、機能抑止レジスタ111fは「OFF」のままである。機能抑止レジスタ111fは「OFF」のままであるので、比較部113fは、比較を行う。コンフィグ制御部114fは、比較部113fの比較結果に基づいてリコンフィグを実行しない。FPGA11cに適用されるFPGAデータは版数「B」である。
【0085】
CPU用フラッシュメモリ11bに格納されているFPGAデータが版数「C」である場合、すなわち、CPU11aが記憶装置20から読み込んだファームウェアに含まれるFPGAデータが版数「C」である場合、CPU11aは、機能抑止レジスタ設定要求を、PLD11eを介してCPLD11fに送信する。これにより、機能抑止レジスタ111fは、「ON」に設定される。機能抑止レジスタ111fは、「ON」に設定されるので、比較部113fは、比較を行わない。コンフィグ制御部114fは、比較部113fから比較結果が送られないのでリコンフィグを実行しない。この結果、FPGA11cに適用されるFPGAデータは、版数「C」となる。
【0086】
次に、CPLD用フラッシュメモリ11gに記憶されているFPGAデータの版数が「B」である制御モジュール10aが、ストレージシステム100に実装されたときに、CPU11aが、記憶装置20から版数「A」のFPGAデータを含むファームウェアを読み込んだときの制御モジュール10aの処理を説明する。
【0087】
図7は、制御モジュールの処理を示すシーケンス図である。なお、図7では、版数「A」のFPGAデータを「FPGAデータA」と表記している。版数「B」のFPGAデータを「FPGAデータB」と表記している。
【0088】
[シーケンスSeq1] CPU11aは、ファームウェアの読み出し命令を記憶装置20に出力する。
[シーケンスSeq2] ファームウェアの読み出し命令を受け取った記憶装置20は、版数「A」のFPGAデータを含むファームウェアをCPU11aに出力する。
【0089】
[シーケンスSeq3] CPU11aは、ファームウェアを書き込む書き込み命令をCPU用フラッシュメモリ11bに出力する。
[シーケンスSeq4] CPU11aは、書き込み命令をCPU用フラッシュメモリ11bに出力後、版数「A」のFPGAデータを含むファームウェアをCPU用フラッシュメモリ11bに出力する。
【0090】
[シーケンスSeq5] CPU11aは、コンフィグ要求をPLD11eに出力する。
[シーケンスSeq6] コンフィグ要求を受けとったPLD11eは、受け取ったコンフィグ要求をCPLD11fに送る。
【0091】
[シーケンスSeq7] コンフィグ要求を受けとったCPLD11fは、FPGA11cのコンフィグを実行する。FPGA11cは、コンフィグレーションメモリの初期化等を行って、コンフィグを行うFPGAデータの受け取りを待機する。
【0092】
[シーケンスSeq8] CPU11aは、FPGAデータを読み出す読み出し命令をCPU用フラッシュメモリ11bに出力する。
[シーケンスSeq9] 読み出し命令を受け取ったCPU用フラッシュメモリ11bは、版数「A」のFPGAデータをCPU11aに送る。
【0093】
[シーケンスSeq10] 版数「A」のFPGAデータを受け取ったCPU11aは、受け取った版数「A」のFPGAデータをPLD11eに送る。
[シーケンスSeq11] 版数「A」のFPGAデータを受け取ったPLD11eは、受け取った版数「A」のFPGAデータをCPLD11fに送る。
【0094】
[シーケンスSeq12] 版数「A」のFPGAデータを受け取ったCPLD11fは、受け取った版数「A」のFPGAデータをFPGA11cに送る。
[シーケンスSeq13] CPLD11fの比較部113fは、機能抑止レジスタ111fの設定状況に応じてシーケンスSeq12にて受け取ったFPGAデータの機能および版数とチェックサム記憶部112fに記憶されているチェックサムCS1、CS2から識別できるFPGAデータの機能および版数「A」とを比較するか否かを決定する。
【0095】
シーケンスSeq1〜Seq12の処理によっては機能抑止レジスタ111fを「ON」に設定していないため、機能抑止レジスタ111fは「OFF」に設定されている。従って、比較部113fは、シーケンスSeq12にて受け取ったFPGAデータの機能とチェックサム記憶部112fに記憶されているチェックサムCS1、CS2から識別できるFPGAデータの機能を比較する。比較により、比較部113fは、シーケンスSeq11にて受け取ったFPGAデータの機能が、電力供給停止時の機能か電力供給復旧時の機能かを識別する。
【0096】
[シーケンスSeq14] CPLD11fの比較部113fは、シーケンスSeq12にて受け取った版数「A」のFPGAデータの版数とチェックサムCS1、CS2から識別できるFPGAデータの版数「A」を比較する。比較部113fは、版数を比較した結果、シーケンスSeq12にて受け取ったFPGAデータの版数「A」が、チェックサムCS1、CS2から識別できるFPGAデータの版数「A」と等しいと判断する。判断の結果、コンフィグ制御部114fは、リコンフィグを実行すると決定する。
【0097】
[シーケンスSeq15] FPGA11cは、シーケンスSeq12にて受け取った版数「A」のFPGAデータのプリアンブル(先頭データ)を検出すると、版数「A」のFPGAデータのコンフィグを開始する。
【0098】
なお、シーケンスSeq13〜Seq15の処理の実行は、並行して行われるのが好ましい。並行して処理を行うことにより、図7に示す処理の時間を短縮することができる。
[シーケンスSeq16] FPGA11cは、コンフィグが完了したことを示すコンフィグ完了通知をCPLD11fに送る。
【0099】
[シーケンスSeq17] コンフィグ完了通知を受けとったCPLD11fは、FPGA11cのリコンフィグを実行する。FPGA11cは、コンフィグレーションメモリの初期化等を行って、リコンフィグを行うFPGAデータの受け取りを待機する。
【0100】
[シーケンスSeq18] CPLD11fは、シーケンスSeq14のリコンフィグの実行の決定に基づいて、シーケンスSeq13にて識別した機能を有する版数「B」のFPGAデータを読み出す読み出し命令をCPLD用フラッシュメモリ11gに送る。
【0101】
[シーケンスSeq19] 読み出し命令を受け取ったCPLD用フラッシュメモリ11gは、CPLD用フラッシュメモリ11g内に記憶されている版数「B」のFPGAデータをCPLD11fに送る。
【0102】
[シーケンスSeq20] 版数「B」のFPGAデータを受け取ったCPLD11fは、受け取った版数「B」のFPGAデータをFPGA11cに出力する。
[シーケンスSeq21] FPGA11cは、シーケンスSeq20にて受け取った版数「B」のFPGAデータのプリアンブルを検出すると、版数「B」のFPGAデータのコンフィグレーションを開始する。
【0103】
[シーケンスSeq22] FPGA11cは、コンフィグが完了したことを示すコンフィグ完了通知をCPLD11fに送る。
[シーケンスSeq23] コンフィグ完了通知を受け取ったCPLD11fは、受け取ったコンフィグ完了通知をPLD11eに送る。
【0104】
[シーケンスSeq24] コンフィグ完了通知を受け取ったPLD11eは、受け取ったコンフィグ完了通知をCPU11aに送る。
以上で図7の説明を終了する。
【0105】
次に、CPLD用フラッシュメモリ11gに記憶されているFPGAデータの版数が「B」である制御モジュール10aが、ストレージシステム100に実装されたときに、CPU11aが記憶装置20から版数「C」のFPGAデータを含むファームウェアを読み込んだときの制御モジュール10aの処理を説明する。
【0106】
図8は、制御モジュールの処理を示すシーケンス図である。なお、図8では、版数「C」のFPGAデータを「FPGAデータC」と表記している。
[シーケンスSeq31] CPU11aは、ファームウェアの読み出し命令を記憶装置20に出力する。
【0107】
[シーケンスSeq32] ファームウェアの読み出し命令を受け取った記憶装置20は、版数「C」のFPGAデータを含むファームウェアをCPU11aに出力する。
[シーケンスSeq33] CPU11aは、ファームウェアをFPGA11cに書き込む書き込み命令をCPU用フラッシュメモリ11bに出力する。
【0108】
[シーケンスSeq34] CPU11aは、書き込み命令をCPU用フラッシュメモリ11bに出力後、版数「C」のFPGAデータを含むファームウェアをCPU用フラッシュメモリ11bに出力する。
【0109】
[シーケンスSeq35] CPU11aは、シーケンスSeq32にてCPU11aに出力されたファームウェアに含まれるレジスタ書き込み要求をPLD11eに出力する。
【0110】
[シーケンスSeq36] レジスタ書き込み要求を受け取ったPLD11eは、受け取ったレジスタ書き込み要求をCPLD11fに送る。
[シーケンスSeq37] レジスタ書き込み要求を受け取ったCPLD11fは、機能抑止レジスタ111fを「ON」に設定する。
【0111】
[シーケンスSeq38] CPU11aは、コンフィグ要求をPLD11eに送る。
[シーケンスSeq39] コンフィグ要求を受けとったPLD11eは、受け取ったコンフィグ要求をCPLD11fに送る。
【0112】
[シーケンスSeq40] コンフィグ要求を受けとったCPLD11fは、FPGA11cのコンフィグを実行する。FPGA11cは、コンフィグレーションメモリの初期化等を行って、コンフィグを行うFPGAデータの受け取りを待機する。
【0113】
[シーケンスSeq41] CPU11aは、FPGAデータを読み出す読み出し命令をCPU用フラッシュメモリ11bに出力する。
[シーケンスSeq42] 読み出し命令を受け取ったCPU用フラッシュメモリ11bは、版数「C」のFPGAデータをCPU11aに送る。
【0114】
[シーケンスSeq43] 版数「C」のFPGAデータを受け取ったCPU11aは、受け取った版数「C」のFPGAデータをPLD11eに送る。
[シーケンスSeq44] 版数「C」のFPGAデータを受け取ったPLD11eは、受け取った版数「C」のFPGAデータをCPLD11fに送る。
【0115】
[シーケンスSeq45] 版数「C」のFPGAデータを受け取ったCPLD11fは、受け取った版数「C」のFPGAデータをFPGA11cに送る。このとき、シーケンスSeq37にて機能抑止レジスタ111fは「ON」に設定されているため、CPLD11fの比較部113fは、機能を比較しない。また、版数も比較しない。
【0116】
[シーケンスSeq46] FPGA11cは、シーケンスSeq45にて受け取った版数「C」のFPGAデータのプリアンブルを検出すると、版数「C」のFPGAデータのコンフィグレーションを開始する。
【0117】
[シーケンスSeq47] FPGA11cは、コンフィグが完了したことを示すコンフィグ完了通知をCPLD11fに送る。
[シーケンスSeq48] コンフィグ完了通知を受け取ったCPLD11fは、受け取ったコンフィグ完了通知をPLD11eに送る。
【0118】
[シーケンスSeq49] コンフィグ完了通知を受け取ったPLD11eは、受け取ったコンフィグ完了通知をCPU11aに送る。
以上で、図8の説明を終了する。
【0119】
次に、コンフィグ時のCPLDの処理を、フローチャートを用いて説明する。
図9は、コンフィグ時のCPLDの処理を示すフローチャートである。
[ステップS1] コンフィグ制御部114fは、PLD11eからコンフィグ要求を受け付けると、FPGA11cのコンフィグの実行を開始する。その後、ステップS2に遷移する。
【0120】
[ステップS2] コンフィグ制御部114fは、PLD11eからFPGAデータを受け取ったか否かを判断する。FPGAデータを受け取った場合(ステップS2のYes)、ステップS3に遷移する。FPGAデータを受け取っていない場合(ステップS2のNo)、FPGAデータの受け取りを待機する。
【0121】
[ステップS3] コンフィグ制御部114fは、受け取ったFPGAデータをFPGA11cに出力する。その後、ステップS4に遷移する。
[ステップS4] 比較部113fは、機能抑止レジスタ111fが「OFF」に設定されているか否かを判断する。機能抑止レジスタ111fが「OFF」に設定されている場合(ステップS4のYes)、ステップS5に遷移する。機能抑止レジスタ111fが「ON」に設定されている場合(ステップS4のNo)、ステップS12に遷移する。
【0122】
[ステップS5] 比較部113fは、PLD11eから受け取ったFPGAデータの機能および版数を、チェックサム記憶部112fに記憶されているチェックサムCS1、CS2から識別できるFPGAデータの機能および版数「A」と比較する。その後、ステップS6に遷移する。
【0123】
[ステップS6] 比較部113fは、ステップS5の比較結果をコンフィグ制御部114fに送る。その後、ステップS7に遷移する。
[ステップS7] 比較結果を受け取ったコンフィグ制御部114fは、PLD11eから受け取ったFPGAデータの版数がチェックサム記憶部112fに記憶されているチェックサムCS1、CS2から識別できるFPGAデータの版数「A」に一致しているか否かを判断する。版数が一致している場合(ステップS7のYes)、ステップS8に遷移する。版数が一致していない場合(ステップS7のNo)、すなわち、PLD11eから受け取ったFPGAデータの版数が、チェックサム記憶部112fに記憶されているチェックサムCS1、CS2から識別できるFPGAデータの版数「A」より新しいという比較結果であった場合、ステップS12に遷移する。
【0124】
[ステップS8] コンフィグ制御部114fは、ステップS5にて比較した機能に一致するFPGAデータの読み出し要求をCPLD用フラッシュメモリ11gに出力する。その後、ステップS8に遷移する。
【0125】
[ステップS9] コンフィグ制御部114fは、リコンフィグ用のFPGAデータをCPLD用フラッシュメモリ11gから受け取ったか否かを判断する。リコンフィグ用のFPGAデータをCPLD用フラッシュメモリ11gから受け取った場合(ステップS9のYes)、ステップS10に遷移する。リコンフィグ用のFPGAデータをCPLD用フラッシュメモリ11gから受け取っていない場合(ステップS9のNo)、リコンフィグ用のFPGAデータの受け取りを待機する。
【0126】
[ステップS10] コンフィグ制御部114fは、コンフィグ完了通知をFPGA11cから受け取ったか否かを判断する。コンフィグ完了通知をFPGA11cから受け取った場合(ステップS10のYes)、ステップS11に遷移する。コンフィグ完了通知をFPGA11cから受け取っていない場合(ステップS10のNo)、コンフィグ完了通知の受け取りを待機する。
【0127】
[ステップS11] コンフィグ制御部114fは、ステップS9にて受け取ったFPGAデータをFPGA11cに出力する。その後、ステップS12に遷移する。
[ステップS12] コンフィグ制御部114fは、コンフィグ完了通知をFPGA11cから受け取ったか否かを判断する。コンフィグ完了通知をFPGA11cから受け取った場合(ステップS12のYes)、ステップS13に遷移する。コンフィグ完了通知をFPGA11cから受け取っていない場合(ステップS12のNo)、コンフィグ完了通知の受け取りを待機する。
【0128】
[ステップS13] コンフィグ制御部114fは、受け取ったコンフィグ完了通知をPLD11eに出力する。その後、図11に示す処理を終了する。
以上述べたように、ストレージシステム100によれば、機能抑止レジスタ111fがOFFの場合、コンフィグ制御部114fが、CPU用フラッシュメモリ11bに記憶されているFPGAデータをコンフィグした後に、CPLD用フラッシュメモリ11gに記憶されているFPGAデータのリコンフィグを実行するようにした。
【0129】
リコンフィグの実行により、古い版数のFPGAデータが、FPGA11cに書き込まれたままになることを防止できるため、NAND型フラッシュメモリ11dが交換された場合でも交換されたNAND型フラッシュメモリ11dを制御することができる。従って、制御モジュール10aの誤動作を抑制することができる。
【0130】
また、人手を介さずに版数の新しいFPGAデータをFPGA11cにコンフィグすることができるため、人手を介することにより生じる不具合の発生を回避することができる。
【0131】
他方、機能抑止レジスタ111fがONの場合、CPU用フラッシュメモリ11bに記憶されているFPGAデータをコンフィグするが、CPLD用フラッシュメモリ11gに記憶されているFPGAデータのリコンフィグは実行しないようにした。
【0132】
リコンフィグを実行しないことにより、CPU用フラッシュメモリ11bに記憶されているFPGAデータの版数が、CPLD用フラッシュメモリ11gに記憶されているFPGAデータの版数より新しい場合には、新しい版数のFPGAデータが最終的にFPGA11cにコンフィグされる。これにより、版数を容易にアップデートすることができる。
【0133】
なお、本実施の形態では、機能抑止レジスタ111fの設定が「ON」の場合、比較部113fは、版数および機能を比較しないようにした。しかしこれに限らず、機能抑止レジスタ111fの設定が「ON」の場合、比較部113fは、版数および機能を比較しても比較結果をコンフィグ制御部114fに送らないよう設定されていてもよい。
【0134】
また、本実施の形態のチェックサム記憶部112fには、版数「A」のFPGAデータのチェックサムCS1、CS2を記憶し、比較部113fは、CPU用フラッシュメモリ11bから読み出されたFPGAデータの版数を、チェックサム記憶部112fに記憶されているチェックサムCS1、CS2から識別できるFPGAデータの版数「A」と比較した。しかしこれに限らず、チェックサム記憶部112fには、CPLD用フラッシュメモリ11gに記憶されている版数、すなわち、版数「B」のFPGAデータのチェックサムを記憶し、比較部113fは、CPU用フラッシュメモリ11bから読み出されたFPGAデータの版数を、チェックサム記憶部112fに記憶されているチェックサムCS1、CS2から識別できるFPGAデータの版数「B」と比較し、この比較結果に応じてリコンフィグを行うか否かを決定するようにしてもよい。
【0135】
また、本実施の形態では、版数「B」のFPGAデータのFPGA11cへのコンフィグの完了を待って版数「C」のFPGAデータのFPGA11cへのコンフィグを実行している。しかしこれに限らず、版数「B」のFPGAデータのコンフィグの完了を待たずに版数「C」のFPGAデータのFPGA11cへのコンフィグを開始するようにしてもよい。
【0136】
<第3の実施の形態>
次に、第3の実施の形態のストレージシステム100について説明する。
以下、第3の実施の形態のストレージシステム100について、前述した第2の実施の形態のストレージシステムとの相違点を中心に説明し、同様の事項については、その説明を省略する。
【0137】
第3の実施の形態のストレージシステム100は、制御モジュールの構成が第2の実施の形態のストレージシステム100と異なっている。
図10は、第3の実施の形態の制御モジュールを示す図である。
【0138】
第3の実施の形態のストレージシステム100では、制御モジュール10aが取り外され、取り外された位置に制御モジュール10dが取り付けられている。
なお、図10では、制御モジュール10dが有する制御部14以外の要素の図示を省略している。
【0139】
以下、第2の実施の形態の制御部11と同じ機能を有する部位には制御部11と同じ符号を付し、説明を省略する。
制御モジュール10dが有する制御部14には、NAND型フラッシュメモリ11dとは制御方法が異なるNAND型フラッシュメモリ14dが実装されている。このNAND型フラッシュメモリ14dは、CPLD用フラッシュメモリ11gに記憶されている版数「D」の電力供給停止時用のFPGAデータ(図10中、(FPGAデータ「D」停電)と表記)または版数「D」の電力供給停止時用のFPGAデータ(図10中、(FPGAデータ「D」復電)と表記)をFPGA11cにコンフィグすることにより、正しい制御が可能となる(NAND型フラッシュメモリ14dに読み書きするデータが保証できる)ものである。言い換えれば、版数「A」〜「C」のFPGAデータがコンフィグされているFPGA11cでは、NAND型フラッシュメモリ14dを正しく制御することができない(NAND型フラッシュメモリ14dに読み書きするデータが保証できない)。
【0140】
また、制御部14には、CPLD11fとは機能が異なるCPLD14fが実装されている。
図11は、第3の実施の形態のCPLDの機能を示すブロック図である。
【0141】
以下、第2の実施の形態のCPLD11fと同じ機能を有する部位にはCPLD11fと同じ符号を付し、説明を省略する。
CPU用フラッシュメモリ11bには、版数「A」、「B」、および、「C」のFPGAデータの内一つが記憶されている。
【0142】
CPLD14fは、比較部142fの動作の許否を決定する情報を記憶する機能抑止レジスタ141fをさらに有している。機能抑止レジスタ141fは、初期設定では、「OFF(比較部142fの動作許可)」に設定されている。
【0143】
また、本実施の形態のチェックサム記憶部112fには、チェックサムCS1、CS2に加え、版数「B」の電力供給停止時用のFPGAデータのチェックサム(図11ではチェックサム(FPGAデータ「B」停電)と表記)を示すチェックサムCS3、版数「B」の電力供給復旧時用のFPGAデータのチェックサム(図11ではチェックサム(FPGAデータ「B」復電)と表記)を示すチェックサムCS4、版数「C」の電力供給停止時用のFPGAデータのチェックサム(図11ではチェックサム(FPGAデータ「C」停電)と表記)を示すチェックサムCS5、版数「C」の電力供給復旧時用のFPGAデータのチェックサム(図11ではチェックサム(FPGAデータ「C」復電)と表記)を示すチェックサムCS6が予め記憶されている。
【0144】
次に、CPLD用フラッシュメモリ11gに記憶されているFPGAデータの版数が「D」である場合において、CPU11aが、記憶装置20から版数「C」のFPGAデータを含むファームウェアを読み込んだときの制御モジュール10aの処理を説明する。
【0145】
図12は、制御モジュールの処理を示すシーケンス図である。なお、図12では、版数「C」のFPGAデータを「FPGAデータC」と表記している。版数「D」のFPGAデータを「FPGAデータD」と表記している。
【0146】
[シーケンスSeq51] 保守作業後に、CPU11aは、ファームウェアの読み出し命令を記憶装置20に出力する。
[シーケンスSeq52] ファームウェアの読み出し命令を受け取った記憶装置20は、版数「C」のFPGAデータを含むファームウェアをCPU11aに出力する。
【0147】
[シーケンスSeq53] CPU11aは、ファームウェアを書き込む書き込み命令をCPU用フラッシュメモリ11bに出力する。
[シーケンスSeq54] CPU11aは、書き込み命令をCPU用フラッシュメモリ11bに出力後、版数「C」のFPGAデータを含むファームウェアをCPU用フラッシュメモリ11bに出力する。
【0148】
[シーケンスSeq55] CPU11aは、シーケンスSeq52にてCPU11aに出力されたファームウェアに含まれるレジスタ書き込み要求をPLD11eに出力する。
【0149】
[シーケンスSeq56] レジスタ書き込み要求を受け取ったPLD11eは、受け取ったレジスタ書き込み要求をCPLD11fに送る。
[シーケンスSeq57] レジスタ書き込み要求を受け取ったCPLD11fは、機能抑止レジスタ111fを「ON」に設定する。
【0150】
[シーケンスSeq58] CPU11aは、コンフィグ要求をPLD11eに出力する。
[シーケンスSeq59] コンフィグ要求を受けとったPLD11eは、受け取ったコンフィグ要求をCPLD14fに送る。
【0151】
[シーケンスSeq60] コンフィグ要求を受けとったCPLD14fは、FPGA11cのコンフィグを実行する。FPGA11cは、コンフィグレーションメモリの初期化等を行って、コンフィグを行うFPGAデータの受け取りを待機する。
【0152】
[シーケンスSeq61] CPU11aは、FPGAデータを読み出す読み出し命令をCPU用フラッシュメモリ11bに出力する。
[シーケンスSeq62] 読み出し命令を受け取ったCPU用フラッシュメモリ11bは、版数「C」のFPGAデータをCPU11aに送る。
【0153】
[シーケンスSeq63] 版数「C」のFPGAデータを受け取ったCPU11aは、受け取った版数「C」のFPGAデータをPLD11eに送る。
[シーケンスSeq64] 版数「C」のFPGAデータを受け取ったPLD11eは、受け取った版数「C」のFPGAデータをCPLD14fに送る。
【0154】
[シーケンスSeq65] 版数「C」のFPGAデータを受け取ったCPLD14fは、受け取った版数「C」のFPGAデータをFPGA11cに送る。
[シーケンスSeq66] CPLD14fの比較部142fは、機能抑止レジスタ141fの設定状況に応じてシーケンスSeq65にて受け取ったFPGAデータの機能および版数とチェックサム記憶部112fに記憶されているチェックサムCS1〜CS6から識別できるFPGAデータの機能および版数とを比較するか否かを決定する。ここで、シーケンスSeq57の処理によって機能抑止レジスタ111fは、「ON」に設定されているが、機能抑止レジスタ141fは、「OFF」のままである。従って、比較部142fは、シーケンスSeq62にて受け取ったFPGAデータの機能とチェックサム記憶部112fに記憶されているチェックサムCS1〜CS6から識別できるFPGAデータの機能を比較する。比較により、比較部142fは、シーケンスSeq64にて受け取った版数「C」のFPGAデータの機能が、電力供給停止時の機能か電力供給復旧時の機能かを識別する。
【0155】
[シーケンスSeq67] CPLD14fの比較部142fは、シーケンスSeq64にて受け取った版数「C」のFPGAデータの版数とチェックサムCS1〜CS6から識別できるFPGAデータの版数「A」、「B」、「C」を比較する。比較部142fは、シーケンスSeq64にて受け取ったFPGAデータの版数「C」が、チェックサムCS5、CS6から識別できるFPGAデータの版数「C」と等しいと判断する。判断の結果、コンフィグ制御部114fは、リコンフィグを実行すると決定する。
【0156】
[シーケンスSeq68] FPGA11cは、シーケンスSeq64にて受け取った版数「C」のFPGAデータのプリアンブルを検出すると、版数「C」のFPGAデータのコンフィグレーションを開始する。
【0157】
なお、シーケンスSeq66〜Seq68の処理の実行は、並行して行われるのが好ましい。並行して処理を行うことにより、図12に示す処理の時間を短縮することができる。
【0158】
[シーケンスSeq69] FPGA11cは、コンフィグが完了したことを示すコンフィグ完了通知をCPLD14fに送る。
[シーケンスSeq70] コンフィグ完了通知を受けとったCPLD14fは、FPGA11cのリコンフィグを実行する。FPGA11cは、コンフィグレーションメモリの初期化等を行って、コンフィグを行うFPGAデータの受け取りを待機する。
【0159】
[シーケンスSeq71] CPLD14fは、シーケンスSeq67のリコンフィグの実行の決定に基づいて、シーケンスSeq66にて識別した機能を有する版数「D」のFPGAデータを読み出す読み出し命令をCPLD用フラッシュメモリ11gに出力する。
【0160】
[シーケンスSeq72] 読み出し命令を受け取ったCPLD用フラッシュメモリ11gは、CPLD用フラッシュメモリ11g内に記憶されている版数「D」のFPGAデータをCPLD14fに出力する。
【0161】
[シーケンスSeq73] 版数「D」のFPGAデータを受け取ったCPLD14fは、受け取った版数「D」のFPGAデータをFPGA11cに出力する。
[シーケンスSeq74] 版数「D」のFPGAデータを受け取ったFPGA11cは、コンフィグを実行する。
【0162】
[シーケンスSeq75] FPGA11cは、コンフィグが完了したことを示すコンフィグ完了通知をCPLD14fに送る。
[シーケンスSeq76] コンフィグ完了通知を受け取ったCPLD14fは、受け取ったコンフィグ完了通知をPLD11eに送る。
【0163】
[シーケンスSeq77] コンフィグ完了通知を受け取ったPLD11eは、受け取ったコンフィグ完了通知をCPU11aに送る。
以上で図12の説明を終了する。
【0164】
この第3の実施の形態のストレージシステム100によれば、第2の実施の形態のストレージシステム100と同様の効果が得られる。
そして、第3の実施の形態のストレージシステム100によれば、さらに、制御モジュール10aが制御モジュール10dに交換された場合においても、版数「C」のFPGAデータがFPGA11cにコンフィグされることを防止することができる。従って、制御モジュール10dの誤動作を抑制することができる。
【0165】
以上、本発明の制御装置、制御方法およびストレージシステムを、図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置換することができる。また、本発明に、他の任意の構成物や工程が付加されていてもよい。
【0166】
また、本発明は、前述した各実施の形態のうちの、任意の2以上の構成(特徴)を組み合わせたものであってもよい。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、制御モジュール10a、10b、10c、10dが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD、DVD−RAM、CD−ROM/RWなどがある。光磁気記録媒体には、MO(Magneto-Optical disk)などがある。
【0167】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【0168】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【0169】
また、上記の処理機能の少なくとも一部を、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現することもできる。
【0170】
以上の第1〜第3の実施の形態に関し、さらに以下の付記を開示する。
(付記1) データを記憶する不揮発性記憶部へのデータの書き込みを制御する書き込み制御部と、
前記書き込み制御部の動作を決定する制御情報を記憶する制御情報記憶部と、
前記制御情報の入力を受け付ける入力受付部と、
前記入力受付部が受け付けた前記制御情報と前記制御情報記憶部に記憶されている前記制御情報のうち版数が新しい方の前記制御情報を前記書き込み制御部に設定する設定部と、
を有することを特徴とする制御装置。
【0171】
(付記2) 前記入力受付部が受け付けた前記制御情報の版数が、前記制御情報記憶部に記憶されている前記制御情報の版数より新しいか否かを判断する判断部をさらに備え、
前記設定部は、前記判断部の判断結果に基づいて前記制御情報記憶部に記憶されている前記制御情報を前記書き込み制御部に設定することを特徴とする付記1記載の制御装置。
【0172】
(付記3) 前記制御情報記憶部に記憶されている制御情報を前記書き込み制御部に設定するか否かを示すフラグを記憶するフラグ記憶部をさらに有し、
前記判断部は、前記フラグ記憶部に記憶された前記フラグに基づいて、判断を行うか否かを決定することを特徴とする付記2記載の制御装置。
【0173】
(付記4) 前記判断部は、前記フラグ記憶部に記憶された前記フラグが前記制御情報記憶部に記憶されている制御情報を適用することを示すフラグである場合に限り、判断を行うことを特徴とする付記3記載の制御装置。
【0174】
(付記5) 前記フラグ記憶部は、前記制御情報の版数に応じた前記フラグの記憶箇所を複数有し、
前記判断部は、前記制御情報の版数に応じた前記記憶箇所に記憶された前記フラグに基づいて、判断を行うか否かを決定することを特徴とする付記2または3記載の制御装置。
【0175】
(付記6) 前記設定部は、前記入力受付部が前記制御情報を受け付けた時点で前記書き込み制御部への前記制御情報の書き込みを開始し、その後、前記判断部の判断結果に基づいて前記制御情報記憶部に記憶されている前記制御情報を前記書き込み制御部に設定することを特徴とする付記2ないし5のいずれかに記載の制御装置。
【0176】
(付記7) 前記設定部の前記入力受付部が受け付けた前記制御情報の前記書き込み制御部への設定処理と、前記判断部の判断処理を並行して実行することを特徴とする付記2ないし6のいずれかに記載の制御装置。
【0177】
(付記8) 前記制御情報記憶部に記憶されている前記制御情報の版数が、前記入力受付部が受け付けた前記制御情報の版数と等しい場合、前記設定部は、前記制御情報記憶部に記憶されている前記制御情報を前記書き込み制御部に書き込まないことを特徴とする付記2記載の制御装置。
【0178】
(付記9) 前記設定部は、前記入力受付部が受け付けた前記制御情報の機能に一致する機能を有する前記制御情報記憶部に記憶されている前記制御情報を前記書き込み制御部に設定することを特徴とする付記2ないし8のいずれかに記載の制御装置。
【0179】
(付記10) 制御装置が有する、
入力受付部が、データを記憶する不揮発性記憶部へのデータの書き込みを制御する書き込み制御部の動作を決定する制御情報の入力を受け付け、
設定部が、受け付けた前記制御情報と前記制御モジュールが有する制御情報記憶部に記憶されている前記制御情報のうち版数が新しい方の前記制御情報を前記書き込み制御部に設定する、
ことを特徴とする制御方法。
【0180】
(付記11) データが記憶される記憶装置と、前記記憶装置に対するデータ記憶を制御する制御部と、前記制御部の動作を決定する制御情報を記憶する制御情報記憶装置とを備えるストレージシステムにおいて、
前記制御部は、
データが書き込まれる不揮発性記憶部と、
前記不揮発性記憶部へのデータの書き込みを制御する書き込み制御部と、
前記書き込み制御部の動作を決定する制御情報を記憶する制御情報記憶部と、
前記入力受付部が受け付けた前記制御情報と前記制御情報記憶部に記憶されている前記制御情報のうち版数が新しい方の前記制御情報を前記書き込み制御部に設定する設定部と、
を備えることを特徴とするストレージシステム。
【符号の説明】
【0181】
1 制御装置
1a 制御情報記憶部
1b 書き込み制御部
1c 不揮発性記憶部
1d 入力受付部
1e 判断部
1f 比較用版数情報記憶部
1g フラグ記憶部
1h 設定部
10a〜10d 制御モジュール
11、14 制御部
11a CPU
11b CPU用フラッシュメモリ
11c FPGA
11d、14d NAND型フラッシュメモリ
11e PLD
11f CPLD
11g CPLD用フラッシュメモリ
11h キャッシュメモリ
20 システムディスク
100 ストレージシステム
111f、141f 機能抑止レジスタ
112f チェックサム記憶部
113f、142f 比較部
114f コンフィグ制御部

【特許請求の範囲】
【請求項1】
データを記憶する不揮発性記憶部へのデータの書き込みを制御する書き込み制御部と、
前記書き込み制御部の動作を決定する制御情報を記憶する制御情報記憶部と、
前記制御情報の入力を受け付ける入力受付部と、
前記入力受付部が受け付けた前記制御情報と前記制御情報記憶部に記憶されている前記制御情報のうち版数が新しい方の前記制御情報を前記書き込み制御部に設定する設定部と、
を有することを特徴とする制御装置。
【請求項2】
前記入力受付部が受け付けた前記制御情報の版数が、前記制御情報記憶部に記憶されている前記制御情報の版数より新しいか否かを判断する判断部をさらに備え、
前記設定部は、前記判断部の判断結果に基づいて前記制御情報記憶部に記憶されている前記制御情報を前記書き込み制御部に設定することを特徴とする請求項1記載の制御装置。
【請求項3】
前記制御情報記憶部に記憶されている制御情報を前記書き込み制御部に設定するか否かを示すフラグを記憶するフラグ記憶部をさらに有し、
前記判断部は、前記フラグ記憶部に記憶された前記フラグに基づいて、判断を行うか否かを決定することを特徴とする請求項2記載の制御装置。
【請求項4】
前記フラグ記憶部は、前記制御情報の版数に応じた前記フラグの記憶箇所を複数有し、
前記判断部は、前記制御情報の版数に応じた前記記憶箇所に記憶された前記フラグに基づいて、判断を行うか否かを決定することを特徴とする請求項2または3記載の制御装置。
【請求項5】
前記設定部は、前記入力受付部が前記制御情報を受け付けた時点で前記書き込み制御部への前記制御情報の書き込みを開始し、その後、前記判断部の判断結果に基づいて前記制御情報記憶部に記憶されている前記制御情報を前記書き込み制御部に設定することを特徴とする請求項2ないし4のいずれかに記載の制御装置。
【請求項6】
制御装置が有する、
入力受付部が、データを記憶する不揮発性記憶部へのデータの書き込みを制御する書き込み制御部の動作を決定する制御情報の入力を受け付け、
設定部が、受け付けた前記制御情報と前記制御モジュールが有する制御情報記憶部に記憶されている前記制御情報のうち版数が新しい方の前記制御情報を前記書き込み制御部に設定する、
ことを特徴とする制御方法。
【請求項7】
データが記憶される記憶装置と、前記記憶装置に対するデータ記憶を制御する制御部と、前記制御部の動作を決定する制御情報を記憶する制御情報記憶装置とを備えるストレージシステムにおいて、
前記制御部は、
データが書き込まれる不揮発性記憶部と、
前記不揮発性記憶部へのデータの書き込みを制御する書き込み制御部と、
前記書き込み制御部の動作を決定する制御情報を記憶する制御情報記憶部と、
前記入力受付部が受け付けた前記制御情報と前記制御情報記憶部に記憶されている前記制御情報のうち版数が新しい方の前記制御情報を前記書き込み制御部に設定する設定部と、
を備えることを特徴とするストレージシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate


【公開番号】特開2012−3518(P2012−3518A)
【公開日】平成24年1月5日(2012.1.5)
【国際特許分類】
【出願番号】特願2010−137880(P2010−137880)
【出願日】平成22年6月17日(2010.6.17)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】