以下、図面を用いて実施形態を説明する。
図1は、情報処理装置、制御装置および情報処理装置の制御方法の一実施形態を示す。図1に示す情報処理装置100は、例えば、サーバであり、情報処理を実行する情報処理部10と、情報処理部10を制御する制御装置20、30とを有する。情報処理部10は、CPU(Central Processing Unit)等の演算処理装置としてのプロセッサ12と、図示しない主記憶装置、電源ユニット、ハードディスクドライブ装置および通信インタフェース等を有する。
制御装置20、30は、互いに同じ構成を有し、制御装置20、30の一方が運用系の制御装置として動作し、制御装置20、30の他方が待機系の制御装置として機能する。すなわち、二重化された制御装置20、30のいずれかにより、情報処理部10の制御が排他的に実行される。なお、以下では、制御装置20が運用系として動作し、制御装置30が待機系として動作する例が説明される。
制御装置20は、演算処理部22と、制御プログラムPGM1および監視プログラムPGM2を保持する記憶部24と、制御部26とを有する。制御装置30は、演算処理部32と、制御プログラムPGM1および監視プログラムPGM2を保持する記憶部34と、制御部36とを有する。例えば、演算処理部22、32は、MPU(Micro-Processing Unit)等のプロセッサであり、制御部26、36は、FPGA(Field-Programmable Gate Array)等の動的に論理を再構成可能なデバイスを含む。
なお、制御装置20は、記憶部24から転送される制御プログラムPGM1および監視プログラムPGM2を保持するSDRAM(Synchronous Dynamic Random Access Memory)等のメモリ(図示せず)を有する。同様に、制御装置30は、記憶部34から転送される制御プログラムPGM1および監視プログラムPGM2を保持するSDRAM等のメモリ(図示せず)を有する。演算処理部22は、制御装置20が運用系として動作する場合、制御装置20のメモリに転送された制御プログラムPGM1および監視プログラムPGM2を実行する。演算処理部32は、制御装置30が待機系として動作する場合、制御装置30のメモリに転送された監視プログラムPGM2を実行する。
制御プログラムPGM1は、情報処理部10を制御するとともに情報処理部10の動作状態を監視するために、制御装置20の記憶部24および制御装置30の記憶部34にそれぞれ組み込まれた組み込みファームウェアの一例である。監視プログラムPGM2は、他の制御装置(30または20)の動作を監視するために、自制御装置(20または30)の記憶部(24、34)に組み込まれた組み込みファームウェアの一例である。
なお、記憶部24、34は、情報処理部10のCPU12が実行するPOST(Power-On Self-Test)ファームウェアまたはOBP(OpenBoot PROM)ファームウェア等のファームウェアを保持してもよい。この場合、記憶部24(または記憶部34)に保持されたCPU12用のファームウェアは、情報処理部10の主記憶装置に転送された後、CPU12により実行される。
演算処理部22、32は、通信線CL1を介して互いに接続される。演算処理部22は、制御部26を介して通信線CL2に接続され、演算処理部32は、制御部36を介して通信線CL2に接続される。通信線CL2は、情報処理部10と制御部26、36とを相互に接続する。記憶部24は、演算処理部22または制御部26によりアクセス可能であり、記憶部34は、演算処理部32または制御部36によりアクセス可能である。
制御部26は、制御装置20が運用系として動作中に、演算処理部22からの指示に基づいて、情報処理部10を制御し、情報処理部10の動作状態(温度、電圧等)を示す情報を情報処理部10から読み出し、読み出した情報を記憶部24等に格納する。また、制御部26は、制御装置20が運用系または待機系として動作中に、演算処理部22からの指示に基づいて、通信線CL2および制御部36を介して記憶部34にアクセス可能である。さらに、制御部26は、制御装置20が運用系または待機系として動作中に、制御部36および通信線CL2を介して受信する演算処理部32からの指示に基づいて、記憶部24にアクセスし、または演算処理部22のリセット状態を制御する。
制御部36は、制御装置30が運用系として動作中に、演算処理部32からの指示に基づいて、情報処理部10を制御し、情報処理部10の動作状態(温度、電圧等)を示す情報を情報処理部10から読み出し、読み出した情報を記憶部34等に格納する。また、制御部36は、制御装置30が運用系または待機系として動作中に、演算処理部32からの指示に基づいて、通信線CL2および制御部26を介して記憶部24にアクセス可能である。さらに、制御部36は、制御装置30が運用系または待機系として動作中に、制御部26および通信線CL2を介して受信する演算処理部22からの指示に基づいて、記憶部34にアクセスし、または演算処理部32のリセット状態を制御する。
すなわち、演算処理部22は、制御部26、36を介して、制御装置30の記憶部34が保持する情報を読み出すことができ、記憶部34に情報を書き込むことができる。同様に、演算処理部32は、制御部36、26を介して、制御装置20の記憶部24が保持する情報を読み出すことができ、記憶部24に情報を書き込むことができる。
演算処理部22は、記憶部24が保持する監視プログラムPGM2を実行することで、通信線CL1を介して演算処理部32の動作を監視する。演算処理部32は、記憶部34が保持する監視プログラムPGM2を実行することで、通信線CL1を介して演算処理部22の動作を監視する。すなわち、制御装置20は、制御装置30の動作を監視し、制御装置30は、制御装置20の動作を監視する。
運用系の制御装置20の演算処理部22は、記憶部24が保持する制御プログラムPGM1を実行することで、制御部26および通信線CL2を介して情報処理部10を制御するとともに情報処理部10の動作状態を監視する。制御装置30が待機系から運用系に切り替えられた場合、制御装置30の演算処理部32は、記憶部34が保持する制御プログラムPGM1を実行する。そして、演算処理部32は、制御部36および通信線CL2を介して情報処理部10を制御するとともに情報処理部10の動作状態を監視する。
なお、各記憶部24、34は、情報処理部10に設定された設定データおよび情報処理部10の動作状態を示すステータスを保持するために割り当てられた図示しないデータ領域を有する。運用系の制御装置20(または、制御装置30)は、制御プログラムPGM1の実行により、情報処理部10の設定データまたはステータスを監視する。例えば、運用系の制御装置20は、設定データまたはステータスが変更された場合、変更された設定データまたはステータスを記憶部24のデータ領域に書き込む。
また、運用系の制御装置20は、監視プログラムPGM2の実行により、待機系の制御装置30と通信し、変更された設定データまたはステータスを待機系の記憶部34のデータ領域に書き込ませる。すなわち、運用系の制御装置20の記憶部24が保持する設定データおよびステータスと、待機系の制御装置30の記憶部34が保持する設定データおよびステータスとは、互いに同期される。制御装置30が運用系の場合にも、待機系の制御装置20との間で、設定データまたはステータスは同期される。
図2は、図1に示す情報処理装置100の動作の一例を示す。すなわち、図2は、情報処理装置100の制御方法の一例を示す。図2は、制御装置20が運用系として動作し、制御装置30が待機系として動作している状態で、待機系の制御装置30がハングアップした場合の動作を示す。
運用系の制御装置20の演算処理部22は、制御プログラムPGM1および監視プログラムPGM2を実行する(図2(a))。待機系の制御装置30の演算処理部32は、監視プログラムPGM2を実行する(図2(b))。演算処理部22は、所定の周期で演算処理部32の動作状態を監視し、演算処理部32は、所定の周期で演算処理部22の動作状態を監視する(図2(c))。
演算処理部32は、例えば、記憶部34に誤った情報が書き込まれたことにより、監視プログラムPGM2を正常に実行できなくなり、ハングアップする(図2(d))。演算処理部22は、例えば、演算処理部32に発行した監視用のパケットに対する演算処理部32からの応答を所定の時間受信しないことに基づいて、演算処理部32のハングアップを検出する(図2(e))。すなわち、運用系の制御装置20は、待機系の制御装置30の停止を検出する。
なお、監視プログラムPGM2等の更新中に、情報処理装置100の電源ケーブルが電源タップ等から誤って外れされた場合、または停電が発生した場合にも、ハングアップが発生する。ハングアップの発生により、監視プログラムPGM2等の更新処理が正常に終了しない場合、例えば、制御装置30は、更新後の再起動で正常に起動されず、再起動を繰り返す。この場合、演算処理部32は、監視プログラムPGM2を実行する状態まで遷移しないため、監視用のパケットに対する応答を発行せず、制御装置20により制御装置30の停止が検出される。
次に、演算処理部22は、制御部26、通信線CL2および制御部36を介して記憶部34にアクセスし、記憶部34に保持された情報を読み出し、読み出した情報に基づいて、記憶部34が保持する情報が正しいか否かの診断を実行する(図2(f))。例えば、記憶部34の診断は、記憶部34から読み出した情報を、記憶部24が保持する情報と比較することにより実行される。なお、演算処理部22は、記憶部34の診断を開始する前に、制御部26、通信線CL2および制御部36を介して演算処理部32をリセット状態に設定してもよい。
例えば、演算処理部22は、記憶部34が保持する情報に誤りが含まれることを検出し、記憶部34に保持された誤った情報が演算処理部32のハングアップの原因であると判定する。そして、演算処理部22は、記憶部24から読み出した正しい情報を記憶部34に格納することで、記憶部34に保持された情報を修復する(図2(g))。
すなわち、待機系の制御装置30が停止した場合、運用系の制御装置20は、制御部26、36を介して待機系の制御装置30の記憶部34にアクセスすることで、記憶部34に保持された情報の診断および修復を実行することができる。換言すれば、記憶部34を演算処理部32、22のいずれからもアクセス可能にすることで、待機系の制御装置30の演算処理部32が再起動できない場合にも、記憶部34に保持されたファームウェア等を書き替えることができる。また、記憶部24、34に保持された情報は、互いに同期されているため、記憶部24に保持された情報を記憶部34にコピーすることで、記憶部34に保持された情報を修復することができる。
次に、演算処理部22は、記憶部34に保持された情報を修復した後、制御部26、通信線CL2および制御部36を介して演算処理部32を再起動する(図2(h))。再起動された演算処理部32は、記憶部34に保持された修復済みの監視プログラムPGM2を図示しないSDRAM等のメモリに転送し、監視プログラムPGM2の実行を再開する(図2(i))。記憶部34に保持された情報が修復されたため、演算処理部32は、正常に起動され、監視プログラムPGM2を正常に実行する。そして、演算処理部32は、演算処理部22の動作状態の監視を再開する(図2(j))。すなわち、動作を停止した待機系の制御装置30の動作が復旧される。
図3は、図1に示す情報処理装置100の動作の別の例を示す。すなわち、図3は、情報処理装置100の制御方法の別の例を示す。図3は、制御装置20が運用系として動作し、制御装置30が待機系として動作している状態で、運用系の制御装置20がハングアップした場合の動作を示す。図2と同一または同様の動作については、詳細な説明は省略する。
図3では、運用系の制御装置20の演算処理部22は、例えば、記憶部24に誤った情報が書き込まれたことにより、制御プログラムPGM1および監視プログラムPGM2の少なくともいずれかを正常に実行できなくなり、ハングアップする(図3(a))。演算処理部32は、例えば、演算処理部22に発行した監視用のパケットに対する演算処理部22からの応答を所定の時間受信しないことに基づいて、演算処理部22のハングアップを検出する(図3(b))。すなわち、待機系の制御装置30は、運用系の制御装置20の停止を検出する。
なお、制御プログラムPGM1または監視プログラムPGM2等の更新中に、情報処理装置100の電源ケーブルが電源タップ等から誤って外れた場合、または停電が発生した場合にも、ハングアップが発生する。この場合、演算処理部22は、例えば、再起動を繰り返し、制御プログラムPGM1および監視プログラムPGM2を実行する状態まで遷移しない。
待機系の制御装置30の演算処理部32は、運用系の制御装置30の停止を検出した場合、記憶部34に保持された制御プログラムPGM1の実行を開始する(図3(c))。すなわち、待機系の制御装置30が、運用系に切り替わり、制御装置20に代わって、情報処理部10の制御および監視を実行する。これにより、運用系の制御装置20が停止した場合にも情報処理部10の制御および監視を継続することができる。
図2と同様に、演算処理部32は、制御部36、通信線CL2および制御部26を介して記憶部24にアクセスし、記憶部24に保持された情報を読み出し、読み出した情報に基づいて、記憶部24が保持する情報が正しいか否かの診断を実行する(図3(d))。例えば、記憶部24の診断は、記憶部24から読み出した情報を、記憶部34が保持する情報と比較することにより実行される。なお、演算処理部32は、記憶部24の診断を開始する前に、制御部36、通信線CL2および制御部26を介して演算処理部22をリセット状態に設定してもよい。
演算処理部32は、記憶部24が保持する情報に誤りが含まれるため、記憶部24に保持された誤った情報が演算処理部22のハングアップの原因であると判定する。そして、演算処理部32は、記憶部34から読み出した正しい情報を記憶部24に格納することで、記憶部24に保持された情報を修復する(図3(e))。
すなわち、運用系の制御装置20が停止した場合、待機系の制御装置30は、制御部36、26を介して運用系の制御装置20の記憶部24にアクセスすることで、記憶部24に保持された情報の診断および修復を実行することができる。換言すれば、記憶部24を演算処理部32、22のいずれからもアクセス可能にすることで、運用系の制御装置20の演算処理部22が再起動できない場合にも、記憶部24に保持されたファームウェア等を書き替えることができる。また、記憶部24、34に保持された情報は、互いに同期されているため、記憶部34に保持された情報を記憶部24にコピーすることで、記憶部24に保持された情報を修復することができる。
次に、図2と同様に、演算処理部32は、記憶部24に保持された情報を修復した後、制御部36、通信線CL2および制御部26を介して演算処理部22を再起動する(図3(f))。再起動された演算処理部22は、停止していた監視プログラムPGM2の実行を再開する(図3(g))。この際、演算処理部32は、制御プログラムPGM1の実行を再開しない。すなわち、動作を停止した運用系の制御装置20は、待機系に切り替わる。そして、演算処理部22は、演算処理部32の動作状態の監視を再開する(図3(h))。
以上、図1に示す実施形態では、制御装置20、30の一方が停止した場合、制御装置20、30の他方により、制御装置20、30の一方の記憶部24(または、記憶部34)の診断および修復を実行することができる。すなわち、記憶部24、34を演算処理部32、22のいずれからもアクセス可能にすることで、停止した制御装置20(または、制御装置30)の記憶部24(または、記憶部34)に保持されたファームウェア等を書き替えることができる。また、記憶部24、34に保持された情報は、互いに同期されているため、例えば、記憶部24に保持された情報を記憶部34にコピーすることで、記憶部34に保持された情報を修復することができる。
図4は、情報処理装置、制御装置および情報処理装置の制御方法の別の実施形態を示す。図1に示す実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。図4に示す情報処理装置110は、例えば、サーバであり、情報処理を実行する部品を有するシステムボード11と、システムボード11を制御する制御ボード40、50とを有する。システムボード11は、情報処理を実行する情報処理部の一例であり、制御ボード40、50は、システムボード11を制御する制御装置の一例である。
制御ボード40、50は、互いに同じ構成を有しており、制御ボード40、50の一方が運用系の制御ボードとして動作し、制御ボード40、50の他方が待機系の制御ボードとして機能する。以下では、制御ボード40が運用系として動作し、制御ボード50が待機系として動作する例が説明される。
制御ボード40は、MPU42と、USB(Universal Serial Bus)インタフェースを有するフラッシュメモリ44と、FPGA46と、スイッチ48とを有する。制御ボード50は、MPU52と、USBインタフェースを有するフラッシュメモリ54と、FPGA56と、スイッチ58とを有する。MPU42は、第1の演算処理部の一例であり、MPU52は、第2の演算処理部の一例である。フラッシュメモリ44は、第1の記憶部の一例であり、フラッシュメモリ54は、第2の記憶部の一例である。FPGA46は、第1の制御部の一例であり、FPGA56は、第2の制御部の一例である。スイッチ48は、第1の接続部の一例であり、スイッチ58は、第2の接続部の一例である。
MPU42は、複数の入出力ポートを含むUSBコントローラ43(USBC)を有し、MPU52は、複数の入出力ポートを含むUSBコントローラ53(USBC)を有する。USBコントローラ43の入出力ポートのいずれかは、信号線を介してスイッチ48に接続され、USBコントローラ43の入出力ポートの他のいずれかは、信号線を介して制御ボード50のスイッチ58に接続される。USBコントローラ53の入出力ポートのいずれかは、信号線を介してスイッチ58に接続され、USBコントローラ53の入出力ポートの他のいずれかは、信号線を介して制御ボード40のスイッチ48に接続される。
フラッシュメモリ44、54の各々は、1ポートタイプであり、制御プログラムPGM1、監視プログラムPGM2、および様々なデータDTを保持する記憶領域を有する。データDTは、制御プログラムPGM1および監視プログラムPGM2で使用するデータと、システムボード11を監視することで得られるシステムボード11の設定データおよびステータス情報とを含む。以下では、制御プログラムPGM1および監視プログラムPGM2は、プログラムファイルとも称され、データDTは、データファイルとも称される。なお、フラッシュメモリ44、54は、CPU12が実行するPOSTファームウェアまたはOBPファームウェア等のファームウェアを保持してもよい。フラッシュメモリ44、54に保持されたCPU12用のファームウェアは、システムボード11の主記憶装置に転送された後、CPU12により実行される。
FPGA46は、MPU42のリセットを制御するリセット制御部RSTCNT1と、スイッチ48の切り替えを制御するスイッチ制御部SWCNT1とを有する。FPGA56は、MPU52のリセットを制御するリセット制御部RSTCNT2と、スイッチ58の切り替えを制御するスイッチ制御部SWCNT2とを有する。リセット制御部RSTCNT1は、第1の起動制御部の一例であり、リセット制御部RSTCNT2は、第2の起動制御部の一例である。スイッチ制御部SWCNT1は、第1の切替制御部の一例であり、スイッチ制御部SWCNT2は、第2の切替制御部の一例である。
スイッチ48は、FPGA46のスイッチ制御部SWCNT1による制御に基づいて、USBコントローラ43、53のいずれか一方をフラッシュメモリ44に接続する。スイッチ58は、FPGA56のスイッチ制御部SWCNT2による制御に基づいて、USBコントローラ43、53のいずれか一方をフラッシュメモリ54に接続する。すなわち、スイッチ48により、MPU42、52を1ポートタイプのフラッシュメモリ44に接続することができ、スイッチ58により、MPU42、52を1ポートタイプのフラッシュメモリ54に接続することができる。そして、フラッシュメモリ44、54の各々を、MPU42、52の両方からアクセスすることができる。換言すれば、MPU42は、スイッチ58を介して他の制御ボード50のフラッシュメモリ54に直接アクセスすることができ、MPU52は、スイッチ48を介して他の制御ボード40のフラッシュメモリ44に直接アクセスすることができる。
MPU42、52は、LAN(Local Area Network)等の通信線CL1を介して互いに接続される。MPU42は、FPGA46を介して通信線CL2に接続され、MPU52は、FPGA56を介して通信線CL2に接続される。通信線CL2は、システムボード11とFPGA46、56とを相互に接続する。
なお、フラッシュメモリ44、54がUSBインタフェース以外の入出力インタフェースを有する場合、MPU42、52は、フラッシュメモリ44、54が有する入出力インタフェースに適合するコントローラを有する。
図5は、図4に示す情報処理装置110の動作の一例を示す。すなわち、図5は、情報処理装置110の制御方法の一例を示す。図5は、制御ボード40が運用系として動作し、制御ボード50が待機系として動作している状態で、待機系の制御ボード50がハングアップした場合の動作を示す。図2と同様の動作については、詳細な説明は省略する。
図5の初期状態において、MPU42は、スイッチ48を介して接続されたフラッシュメモリ44に保持された制御プログラムPGM1および監視プログラムPGM2を実行する。MPU52は、スイッチ58を介して接続されたフラッシュメモリ54に保持された監視プログラムPGM2を実行する(図5(a)、(b))。MPU42、52は、図2と同様に、互いに監視する動作を実行し、MPU42は、MPU52のハングアップを検出する(図5(c))。ハングアップの原因は、フラッシュメモリ54に誤った情報が書き込まれたことにより、監視プログラムPGM2を正常に実行できなくなったこととする。
MPU42は、FPGA46および通信線CL2を介して、MPU52をリセットする指示をFPGA56に発行する(図5(d))。FPGA56は、指示に基づいて、MPU52をリセットし、リセット状態を維持する。MPU52のリセット状態は、MPU42によりMPU52のリセットが解除されるまで維持される。また、MPU42は、FPGA46および通信線CL2を介して、FPGA56にスイッチ58の切替指示を発行する(図5(e))。FPGA56は、切替指示に基づいて、スイッチ58を制御し、MPU52とフラッシュメモリ54との接続を解除させ、フラッシュメモリ54をMPU42に接続させる。
MPU42は、スイッチ58を介して接続されたフラッシュメモリ54をマウントした後、図2と同様に、フラッシュメモリ54に保持されたファイルの診断を実行し、壊れたファイルを修復する(図5(f))。例えば、ファイルの診断とファイルの修復とは、独立ではなく並行して実行される。MPU42は、診断によりプログラムファイルの破壊を検出した場合、フラッシュメモリ44が保持するプログラムファイルをフラッシュメモリ54に書き込む。MPU42は、診断によりデータファイルの破壊を検出した場合、フラッシュメモリ44が保持するデータファイルをフラッシュメモリ54に書き込む。ファイルの診断と修復の例は、図8に示される。
この後、MPU42は、FPGA46および通信線CL2を介して、FPGA56にスイッチ58の切替指示を発行する(図5(g))。FPGA56は、切替指示に基づいて、スイッチ58を制御し、MPU42とフラッシュメモリ54との接続を解除し、フラッシュメモリ54をMPU52に接続する。次に、MPU42は、FPGA46および通信線CL2を介して、MPU52のリセットを解除する指示をFPGA56に発行する(図5(h))。FPGA56は、指示に基づいて、MPU52のリセットを解除する。
リセットの解除により、MPU52は、再起動され、フラッシュメモリ54から監視プログラムPGM2をSDRAM等のメモリに転送する。そして、MPU52は、メモリに転送された監視プログラムPGM2の実行を再開し、MPU42の動作状態の監視を再開する(図5(i))。
図6は、図4に示す情報処理装置110の動作の別の例を示す。すなわち、図6は、情報処理装置110の制御方法の別の例を示す。図6は、制御ボード40が運用系として動作し、制御ボード50が待機系として動作している状態で、運用系の制御ボード40がハングアップした場合の動作を示す。図3および図5と同様の動作については、詳細な説明は省略する。
図6では、MPU42、52は、互いに監視する動作を実行し、MPU52がMPU42のハングアップを検出する(図6(a))。ハングアップの原因は、フラッシュメモリ44に誤った情報が書き込まれたことにより、監視プログラムPGM2を正常に実行できなくなったこととする。
MPU52は、運用系の制御ボード40が実行していた制御プログラムPGM1の代わりに、フラッシュメモリ54に保持された制御プログラムPGM1の実行を開始し、制御ボード50を運用系として動作させる(図6(b))。次に、MPU52は、FPGA56および通信線CL2を介して、MPU42をリセットする指示をFPGA46に発行する(図6(c))。FPGA46は、指示に基づいて、MPU42をリセットし、リセット状態を維持する。MPU42のリセット状態は、MPU52によりMPU42のリセットが解除されるまで維持される。また、MPU52は、FPGA56および通信線CL2を介して、FPGA46にスイッチ48の切替指示を発行する(図6(d))。FPGA46は、切替指示に基づいて、スイッチ48を制御し、MPU42とフラッシュメモリ44との接続を解除させ、フラッシュメモリ44をMPU52に接続させる。
MPU52は、スイッチ48を介してフラッシュメモリ44をマウントした後、フラッシュメモリ44に保持されたファイルの診断を実行し、壊れたファイルを修復する(図6(e))。MPU52は、診断によりプログラムファイルの破壊を検出した場合、フラッシュメモリ54が保持するプログラムファイルをフラッシュメモリ44に書き込む。MPU52は、診断によりデータファイルの破壊を検出した場合、フラッシュメモリ54が保持するデータファイルをフラッシュメモリ44に書き込む。ファイルの診断と修復の例は、図8に示される。
この後、MPU52は、FPGA56および通信線CL2を介して、FPGA46にスイッチ48の切替指示を発行する(図6(f))。FPGA46は、切替指示に基づいて、スイッチ48を制御し、MPU52とフラッシュメモリ44との接続を解除し、フラッシュメモリ44をMPU42に接続する。そして、MPU52は、FPGA56および通信線CL2を介して、MPU42のリセットを解除する指示をFPGA46に発行する(図6(g))。FPGA46は、指示に基づいて、MPU42のリセットを解除する。リセットの解除により、MPU42は、再起動され、監視プログラムPGM2の実行を再開する(図6(h))。制御プログラムPGM1は、制御ボード50により実行されているため、MPU42は、制御プログラムPGM1を実行しない。すなわち、制御ボード50は、待機系として動作する。
図7は、図4に示す情報処理装置110の動作のさらなる別の例を示す。すなわち、図7は、情報処理装置110の制御方法の別の例を示す。図3および図5と同様の動作については、詳細な説明は省略する。
図7において、MPU42がフラッシュメモリ54の診断と修復を開始するまでの動作は、図5と同じである。図7では、MPU42は、フラッシュメモリ54の診断と修復の途中で、フラッシュメモリ54が修復できないと判定する。すなわち、MPU42は、フラッシュメモリ54の物理的な故障を検出する。物理的な故障を検出した場合、MPU42は、情報処理装置110の外部に接続される表示装置等に、制御ボード50が故障したことを表示し、制御プログラムPGM1を実行を継続する。これにより、情報処理装置110の管理者は、表示装置に表示された制御ボード50の故障を示すメッセージ等を見ることで、制御ボード50の故障を認識することができ、制御ボード50を交換することができる。なお、図6において、フラッシュメモリ44の診断と修復の途中で、待機系のMPU52がフラッシュメモリ44を修復できないと判定した場合、MPU52は、表示装置等に、制御ボード40が故障したことを表示する。
図8は、図5、図6および図7に示すフラッシュメモリの診断と修復の一例を示す。図8に示すフローは、MPU42が、フラッシュメモリ44に保持された監視プログラムPGM2を実行することで実現され、あるいは、MPU52が、フラッシュメモリ54に保持された監視プログラムPGM2を実行することで実現される。以下では、MPU42がフラッシュメモリ54に保持された情報の診断と修復を実行する例が説明される。
まず、ステップS10において、MPU42は、フラッシュメモリ54からMBR(Master Boot Record)の情報を読み出し、フラッシュメモリ44に保持されたMBRの情報と比較することで、MBRを診断する。次に、ステップS12において、MPU42は、MBRの比較結果が一致しない場合、MBRに異常があると診断し、処理をステップS14に移行し、MBRの比較結果が一致する場合、MBRが正常であると診断し、処理をステップS16に移行する。
ステップS14において、MPU42は、MBRが保持される記憶領域をフォーマットし、フォーマットした記憶領域にブートストラップローダ等のファームウェアとパーティション情報等のデータを書き込み、処理をステップS16に移行する。ファームウェアとデータの書き込みは、例えば、フラッシュメモリ44からフラッシュメモリ54にファームウェアとデータをコピーすることにより実行される。なお、ステップS10、S12、S14の処理は、プログラムファイルの診断とデータファイルの診断とに含まれる共通の処理である。
ステップS16において、MPU42は、フラッシュメモリ54に保持されたプログラムファイルのファイルシステムの整合性を、例えば、ファイルシステムの整合性をチェックするためのツールであるfsck(file system check)コマンドを使用して検証する。次に、ステップS18において、MPU42は、プログラムファイルのファイルシステムに異常がある場合、処理をステップS20に移行し、プログラムファイルのファイルシステムが正常である場合、処理をステップS22に移行する。
ステップS20において、MPU42は、プログラムファイルが保持されるフラッシュメモリ54の記憶領域をフォーマットし、フォーマットした記憶領域に制御プログラムPGM1および監視プログラムPGM2等の正常なプログラムファイルを書き込む。この後、処理はステップS22に移行される。プログラムファイルの書き込みは、例えば、フラッシュメモリ44からフラッシュメモリ54にプログラムファイルをコピーすることにより実行される。
ステップS22において、MPU42は、フラッシュメモリ54に保持されたプログラムファイルのチェックサムを診断する。例えば、チェックサムの診断は、プログラムファイルのチェックサムを算出し、算出したチェックサムと、フラッシュメモリ54に予め保持されたプログラムファイルのチェックサムとを比較することで実行される。次に、ステップS24において、MPU42は、チェックサムに異常がある場合、処理をステップS26に移行し、チェックサムが正常である場合、処理をステップS22に移行する。
ステップS26において、MPU42は、制御プログラムPGM1および監視プログラムPGM2等の正常なプログラムファイルを、フラッシュメモリ54の所定の記憶領域に書き込み、処理をステップS28に移行する。プログラムファイルの書き込みは、例えば、フラッシュメモリ44からフラッシュメモリ54にプログラムファイルをコピーすることにより実行される。
ステップS28において、ステップS16と同様に、MPU42は、フラッシュメモリ54に保持されたデータファイルのファイルシステムの整合性を、例えば、fsckコマンドを使用して検証する。次に、ステップS30において、MPU42は、データファイルのファイルシステムに異常がある場合、処理をステップS32に移行し、データファイルのファイルシステムが正常である場合、処理をステップS34に移行する。
ステップS32において、MPU42は、データファイルが保持されるフラッシュメモリ54の記憶領域をフォーマットし、フォーマットした記憶領域に、フラッシュメモリ44が保持するデータファイルをコピーし、処理をステップS34に移行する。
ステップS34において、MPU42は、例えば、データベースの検査ユーティリティであるdb_verifyを使用して、フラッシュメモリ54に保持されたデータファイルを診断する。次に、ステップS36において、MPU42は、データファイルに異常がある場合、処理をステップS38に移行し、データファイルが正常である場合、処理をステップS40に移行する。ステップS38において、MPU42は、正常なデータファイルを、フラッシュメモリ54の所定の記憶領域に書き込み、処理をステップS40に移行する。データファイルの書き込みは、例えば、フラッシュメモリ44からフラッシュメモリ54にデータファイルをコピーすることにより実行される。
ステップS40において、MPU42は、全ての修復が完了した場合、処理を終了し、MBR、プログラムファイルおよびデータファイルの少なくともいずれかの修復ができなかった場合、処理をステップS42に移行する。ステップS42において、MPU42は、フラッシュメモリ54が物理的に故障したと判定し、処理を終了する。なお、ステップS40、S42による判定は、ステップS14、S20、S32、S38による修復毎に実行されてもよい。
図9は、図4に示す情報処理装置110において、運用系の制御ボードのMPUの動作の一例を示す図である。運用系の制御ボードのMPUは、監視プログラムPGM2を実行することで、図9に示す動作を実現する。図9に示す動作は、所定の頻度で繰り返し実行される。図9では、制御ボード40が運用系であり、制御ボード50が待機系であるとする。
制御ボード40のMPU42は、制御ボード50のMPU52に送信した監視用のパケットに対する応答の有無に基づいて、制御ボード50の生存監視を実行する。ステップS50において、MPU42は、監視用のパケットに対する応答を所定時間(例えば、5分)受信しない場合、制御ボード50のハングアップを検出し、処理をステップS52に移行する。MPU42は、監視用のパケットに対する応答を所定時間内に受信した場合、制御ボード50が正常に動作していると判断し、処理を終了する。
ステップS52において、MPU42は、待機系のFPGA56に待機系のMPU52のリセットを指示する。次に、ステップS54において、MPU42は、待機系のフラッシュメモリ54をMPU42に接続するために、待機系のFPGA56に待機系のスイッチ58の切り替えを指示する。
次に、ステップS56において、MPU42は、待機系のフラッシュメモリ54に保持されたプログラムファイルの診断を実行する。次に、ステップS58において、MPU42は、プログラムファイルに異常がある場合、処理をステップS60に移行し、プログラムファイルが正常な場合、処理をステップS62に移行する。ステップS60において、MPU42は、待機系のフラッシュメモリ54に保持されたプログラムファイルを修復する。ステップS56、S58、S60の処理は、図8に示したステップS10からS26の処理に対応する。
次に、ステップS62において、MPU42は、待機系のフラッシュメモリ54に保持されたデータファイルの診断を実行する。次に、ステップS64において、MPU42は、データファイルに異常がある場合、処理をステップS66に移行し、データファイルが正常な場合、処理をステップS68に移行する。ステップS64において、MPU42は、待機系のフラッシュメモリ54に保持されたデータファイルを修復する。ステップS62、S64、S66の処理は、図8に示したステップS10、S12、S28からS38の処理に対応する。
次に、ステップS68において、MPU42は、ステップS52からS66による診断および修復において、修復できない異常があった場合、または、他に修復できない異常があった場合、処理をステップS74に移行する。ステップS68において、MPU42は、修復できない異常がない場合、処理をステップS70に移行する。
ステップS70において、MPU42は、待機系のフラッシュメモリ54を待機系のMPU52に接続するために、待機系のFPGA56に待機系のスイッチ58の切り替えを指示する。次に、ステップS72において、MPU42は、待機系のFPGA56に待機系のMPU52のリセットの解除を指示し、処理を終了する。一方、ステップS74において、MPU42は、待機系の制御ボード50に故障が発生したことを、情報処理装置110を管理する管理装置等に通知し、処理を終了する。管理装置等は、MPU42からの通知に基づいて、制御ボード50の故障の発生を、情報処理装置110に接続された表示装置等に表示する。なお、情報処理装置110の管理者等は、故障の発生の表示に基づいて、待機系の制御ボード50を交換するなどの処置を行う。
図10は、図4に示す情報処理装置において、待機系の制御ボードのMPUの動作の一例を示す。待機系の制御ボードのMPUは、監視プログラムPGM2を実行することで、図10に示す動作を実現する。図10に示す動作は、所定の頻度で繰り返し実行される。図10では、制御ボード40が運用系であり、制御ボード50が待機系であるとする。図9と同様の動作については、詳細な説明は省略する。図10は、ステップS51を含むことを除き、図9の動作と同様である。但し、図9では監視の対象が待機系であるのに対して、図10では監視の対象は運用系である。
制御ボード50のMPU52は、制御ボード40のMPU42に送信した監視用のパケットに対する応答の有無に基づいて、制御ボード40の生存監視を実行する。MPU52は、ステップS50において、監視用のパケットに対する応答を所定時間受信せずに制御ボード40のハングアップを検出した場合、ステップS52の処理を実行する前に、ステップS51の処理を実行する。
ステップS51において、MPU52は、ハングアップしたMPU42に代わって、制御プログラムPGM1の実行を開始し、処理をステップS52に移行する。すなわち、制御ボード50は、運用系としての動作を開始する。この後の処理は、図9と同様である。
図11は、図4に示す情報処理装置110において、FPGAの動作の一例を示す図である。図11に示す動作は、所定の頻度で繰り返し実行される。図11に示す動作は、制御ボード40のFPGA46および制御ボード50のFPGA56に共通の動作であるため、以下では、FPGA46の動作が説明される。
まず、ステップS80において、FPGA46は、FPGA56を介してMPU52からMPU42のリセットの指示を受信した場合、処理をステップS82に移行し、MPU42のリセットの指示を受信しない場合、処理をステップS84に移行する。ステップS82において、FPGA46は、MPU42をリセットし、リセット状態を維持し、処理を終了する。
ステップS84において、FPGA46は、フラッシュメモリ44をMPU52(他MPU)に接続する指示を、FPGA56を介してMPU52から受信した場合、処理をステップS86に移行する。FPGA46は、フラッシュメモリ44をMPU52に接続する指示を受信しない場合、処理をステップS88に移行する。ステップS86において、FPGA46は、MPU42とフラッシュメモリ44との接続を解除し、フラッシュメモリ44をMPU52(他MPU)に接続し、処理を終了する。
ステップS88において、FPGA46は、フラッシュメモリ44をMPU42(自MPU)に接続する指示を、FPGA56を介してMPU52から受信した場合、処理をステップS90に移行する。FPGA46は、フラッシュメモリ44をMPU42に接続する指示を受信しない場合、処理をステップS92に移行する。ステップS90において、FPGA46は、MPU52とフラッシュメモリ44との接続を解除し、フラッシュメモリ44をMPU42(自MPU)に接続し、処理を終了する。
ステップS92において、FPGA46は、FPGA56を介してMPU52からMPU42のリセットの解除の指示を受信した場合、処理をステップS94に移行し、MPU42のリセットの解除の指示を受信しない場合、処理を終了する。ステップS94において、FPGA46は、MPU42のリセットを解除し、処理を終了する。
以上、図4から図11に示す実施形態においても、図1から図3に示す実施形態と同様の効果を得ることができる。例えば、制御ボード40、50の一方が停止した場合、制御ボード40、50の他方により、制御ボード40、50の一方のフラッシュメモリ(44または54)の診断および修復を実行することができる。また、フラッシュメモリ44、54が保持する情報は、互いに同期しているため、フラッシュメモリ44、54の一方からフラッシュメモリ44、54の他方に情報をコピーすることで、フラッシュメモリ44、54の他方に保持された情報を修復することができる。
さらに、図4から図11に示す実施形態では、スイッチ48、58の切り替えにより、フラッシュメモリ44、54の各々を、MPU42、52の両方から直接アクセスすることができる。フラッシュメモリ44、54に保持された情報を修復できない場合、情報処理装置110に接続される表示装置等を介して、情報処理装置110の管理者にフラッシュメモリ44、54の故障を通知することで、管理者に制御ボード50の交換を促すことができる。
図12は、情報処理装置、制御装置および情報処理装置の制御方法の別の実施形態を示す。図1から図11に示す実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。図12に示す情報処理装置120は、例えば、サーバであり、システムボード11と、システムボード11を制御する制御ボード60、70とを有する。制御ボード60、70は、システムボード11を制御する制御装置の一例である。
制御ボード60、70は、互いに同じ構成を有しており、制御ボード60、70の一方が運用系の制御ボードとして動作し、制御ボード60、70の他方が待機系の制御ボードとして機能する。以下では、制御ボード60が運用系として動作し、制御ボード70が待機系として動作する例が説明される。
制御ボード60は、図4に示す制御ボード40と同様に、MPU62と、フラッシュメモリ64およびFPGA66を有する。制御ボード70は、図4に示す制御ボード50と同様に、MPU72、フラッシュメモリ74およびFPGA76を有する。MPU62、72は、LAN等の通信線CL1を介して互いに接続され、FPGA66、76とシステムボード11とは、通信線CL2を介して相互に接続される。MPU62は、第1の演算処理部の一例であり、MPU72は、第2の演算処理部の一例である。フラッシュメモリ64は、第1の記憶部の一例であり、フラッシュメモリ74は、第2の記憶部の一例である。FPGA66は、第1の制御部の一例であり、FPGA76は、第2の制御部の一例である。
フラッシュメモリ64、74は、2つのアクセス要求をそれぞれ独立に受信可能な2ポートタイプである。フラッシュメモリ64、74の各々は、図4に示すフラッシュメモリ44、54と同様に、制御プログラムPGM1を保持するプログラム領域と、監視プログラムPGM2を保持するプログラム領域と、様々なデータDTを保持するデータ領域とを有する。
MPU62は、フラッシュメモリ64のアクセスを制御するメモリコントローラMCNTを含み、メモリコントローラMCNTは、フラッシュメモリ64の入出力ポートのいずれかに接続される。MPU72は、フラッシュメモリ74のアクセスを制御するメモリコントローラMCNTを含み、メモリコントローラMCNTは、フラッシュメモリ74の入出力ポートのいずれかに接続される。
FPGA66は、MPU62のリセットを制御するリセット制御部RSTCNT1と、DMAC1(Direct Memory Access Controller)と、フラッシュメモリ64のアクセスを制御するメモリコントローラMCNT1とを含む。メモリコントローラMCNT1は、フラッシュメモリ64の入出力ポートのいずれかに接続される。FPGA76は、MPU72のリセットを制御するリセット制御部RSTCNT2と、DMAC2と、フラッシュメモリ74のアクセスを制御するメモリコントローラMCNT2とを含む。メモリコントローラMCNT2は、フラッシュメモリ74の入出力ポートのいずれかに接続される。メモリコントローラMCNT1は、第1のアクセス制御部の一例であり、メモリコントローラMCNT2は、第2のアクセス制御部の一例である。
DMAC1は、MPU62から受信するメモリアクセス要求パケットおよびデータ等をFPGA76のメモリコントローラMCNT2に転送し、メモリコントローラMCNT2から転送されるメモリアクセス要求パケットに対応する応答等をMPU62に転送する。メモリコントローラMCNT2は、DMAC1を介してMPU62からメモリアクセス要求パケット(読み出し要求)を受信した場合、フラッシュメモリ74からデータを読み出し、読み出したデータを含む応答をDMAC1を介してMPU62に出力する。メモリコントローラMCNT2は、DMAC1を介してMPU62からメモリアクセス要求パケット(書き込み要求)を受信した場合、メモリアクセス要求パケットに含まれる書き込みデータをフラッシュメモリ74に書き込む。
DMAC2は、MPU72から受信するメモリアクセス要求パケットおよびデータ等をFPGA66のメモリコントローラMCNT1に転送し、メモリコントローラMCNT1から転送されるメモリアクセス要求パケットに対応する応答等をMPU72に転送する。メモリコントローラMCNT1は、DMAC2を介してMPU72からメモリアクセス要求パケット(読み出し要求)を受信した場合、フラッシュメモリ64からデータを読み出し、読み出したデータを含む応答をDMAC2を介してMPU72に出力する。メモリコントローラMCNT1は、DMAC2を介してMPU72からメモリアクセス要求パケット(書き込み要求)を受信した場合、メモリアクセス要求パケットに含まれる書き込みデータをフラッシュメモリ64に書き込む。
図12に示す情報処理装置120の動作は、スイッチ48、58を切り替える制御がないことを除き、図5から図7に示した動作と同様である。すなわち、図5から図7に示した動作から、スイッチ48、58を切り替える制御を省き、MPU、フラッシュメモリおよびFPGAの符号を図12に合わせることで、情報処理装置120の動作が実現される。
なお、上述したように、MPU62による他の制御ボード70のフラッシュメモリ74に対するアクセスは、DMAC1およびメモリコントローラMCNT2を介して実行される。MPU72による他の制御ボード60のフラッシュメモリ64に対するアクセスは、DMAC2およびメモリコントローラMCNT1を介して実行される。FPGA66にDMAC1およびメモリコントローラMCNT1を設け、FPGA76にDMAC2およびメモリコントローラMCNT2を設けることで、フラッシュメモリ64、74の各々を、MPU62、72の両方からアクセスすることができる。
図13は、図12に示す情報処理装置120において、運用系の制御ボードのMPUの動作の一例を示す。運用系の制御ボードのMPUは、監視プログラムPGM2を実行することで、図13に示す動作を実現する。図13では、制御ボード60が運用系であり、制御ボード70が待機系であるとする。図9と同じ動作については、詳細な説明は省略する。
図13に示す動作は、図9に示したステップS54、S70の動作がないことを除き、図9に示した動作と同様である。すなわち、ステップS52の処理の後、ステップS56の処理が実行され、ステップS68において異常がないと判定された場合、ステップS72の処理が実行される。フラッシュメモリ74に保持されたプログラムファイルおよびデータファイルの診断と修復は、MPU62がDMCA1およびメモリコントローラMCNT2を介してフラッシュメモリ74にアクセスすることで実行される。
なお、2ポートタイプのフラッシュメモリ74では、メモリコントローラMCNT2がフラッシュメモリ74をアクセスしている間に、MPU72がフラッシュメモリ74にアクセスすることが可能である。ハングアップしたMPU72によるフラッシュメモリ74への意図しないアクセスが実行された場合、MPU62によるフラッシュメモリ74の診断と修復とが正しく実行されないおそれがある。そこで、ステップS52でMPU72のリセットを指示されたFPGA76は、MPU62によりフラッシュメモリ74の診断と修復とが実行されている期間、MPU72のリセット状態を維持する。換言すれば、リセット制御部RSTCNT2は、MPU62がフラッシュメモリ74にアクセスする期間、MPU62からの指示に基づいて、MPU72をリセット状態に設定する。これにより、ハングアップしたMPU72によるフラッシュメモリ74への意図しないアクセスを抑止することができ、フラッシュメモリ74の診断と修復とが正しく実行されないことを抑止することができる。
図14は、図12に示す情報処理装置120において、待機系の制御ボードのMPUの動作の一例を示す。待機系の制御ボードのMPUは、監視プログラムPGM2を実行することで、図14に示す動作を実現する。図14では、制御ボード60が運用系であり、制御ボード70が待機系であるとする。図10および図13と同じ動作については、詳細な説明は省略する。
図14に示す動作は、図10に示したステップS54、S70の動作がないことを除き、図10および図13に示した動作と同様である。すなわち、図13と同様に、ステップS52の処理の後、ステップS56の処理が実行され、ステップS68において異常がないと判定された場合、ステップS72の処理が実行される。また、ステップS52では、MPU62のリセットを指示されたFPGA66が、MPU72によりフラッシュメモリ64の診断と修復とが実行されている期間、MPU62のリセット状態を維持する。これにより、ハングアップしたMPU62によるフラッシュメモリ64への意図しないアクセスを抑止することができ、MPU72によるフラッシュメモリ64の診断と修復とが正しく実行されないことを抑止することができる。
以上、図12から図14に示す実施形態においても、図1から図11に示す実施形態と同様の効果を得ることができる。さらに、図12から図14に示す実施形態では、FPGA66にDMAC1およびメモリコントローラMCNT1を設け、FPGA76にDMAC2およびメモリコントローラMCNT2を設ける。これにより、フラッシュメモリ64、74の各々を、MPU62、72の両方からアクセスすることができる。また、例えば、MPU62がフラッシュメモリ74の診断と修復を実行する場合、ハングアップしたMPU72のリセット状態をFPGA76により維持する。これにより、2ポートタイプのフラッシュメモリ74が制御ボード70に設けられる場合にも、ハングアップしたMPU72によるフラッシュメモリ74への意図しないアクセスを抑止することができる。この結果、MPU62によるフラッシュメモリ74の診断と修復とが正しく実行されないことを抑止することができる。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。