(57)【特許請求の範囲】
【請求項１】
複数の試験項目のうち、現在実行されている試験項目の試験を識別する識別情報を記憶する識別情報記憶部と、
ＢＩＯＳの起動後に、試験対象に前記複数の試験項目の試験をそれぞれ実行し、１つの試験項目の試験の終了に伴い前記識別情報記憶部に記憶されている識別情報を、次に実行する試験項目の試験の識別情報に変更する試験実行部と、所定時間以内に前記識別情報記憶部に記憶されている識別情報が変更されたか否かを判断する判断部とを備え、前記所定時間以内に前記識別情報記憶部に記憶されている識別情報が変更された場合は、カウンタのカウンタ値を所定のタイミングで第１のカウンタ値に設定する処理を実行する制御部と、
前記カウンタを有し、前記カウンタのカウンタ値が第２のカウンタ値になる前に前記制御部により前記第１のカウンタ値に設定されない場合に前記制御部をリセットし、リセット後も前記識別情報記憶部に記憶されている識別情報が変更されないことにより、前記判断部が、前記識別情報記憶部に記憶されている識別情報が前記所定時間以内に変更されなかったと判断した場合、前記制御部の再起動を前記制御部に電力を供給する回路に指示する指示部と、
前記制御部の前記ＢＩＯＳの起動の際、前記ＢＩＯＳの起動に伴い実行されるプログラムのコードの生成を監視する監視部と、
前記ＢＩＯＳの起動の開始前に前記監視部により所定値に設定されるリセットフラグを記憶するリセットフラグ記憶部と、
を有し、
前記制御部は、前記ＢＩＯＳの起動の開始後に前記リセットフラグが前記所定値に設定されていない場合に、前記ＢＩＯＳの起動を停止し、前記リセットフラグが前記所定値に設定されている場合に、前記ＢＩＯＳの起動を継続し、
前記監視部は、前記ＢＩＯＳの起動の停止により前記プログラムのコードが生成されなくなったことを検出すると、前記制御部の再起動を前記制御部に電力を供給する回路に指示する、
ことを特徴とする情報処理装置。
【請求項２】
監視部が、複数の試験項目の試験をそれぞれ実行する制御部のＢＩＯＳの起動の際、前記ＢＩＯＳの起動に伴い実行されるプログラムのコードの生成を監視し、
前記制御部が、前記ＢＩＯＳの起動の開始後に、前記ＢＩＯＳの起動の開始前に所定値に設定されるリセットフラグが前記所定値に設定されていない場合に、前記ＢＩＯＳの起動を停止し、前記リセットフラグが前記所定値に設定されている場合に、前記ＢＩＯＳの起動を継続し、
前記監視部が、前記ＢＩＯＳの起動の停止により前記プログラムのコードが生成されなくなったことを検出すると、前記制御部の再起動を前記制御部に電力を供給する回路に指示し、
前記制御部が、前記ＢＩＯＳの起動後に、試験対象に前記複数の試験項目の試験をそれぞれ実行し、１つの試験項目の試験の終了に伴い識別情報記憶部に記憶されている現在実行されている試験項目の試験を識別する識別情報を、次に実行する試験項目の試験の識別情報に変更し、
前記制御部が、所定時間以内に前記識別情報記憶部に記憶されている識別情報が変更されたか否かを判断し、前記所定時間以内に前記識別情報記憶部に記憶されている識別情報が変更された場合は、カウンタのカウンタ値を所定のタイミングで第１のカウンタ値に設定する処理を実行し、
指示部が、前記識別情報記憶部に記憶されている識別情報が前記所定時間以内に変更されなかったと判断された場合、前記制御部の再起動を前記制御部に電力を供給する回路に指示し、
前記指示部が、前記制御部の再起動を指示する際に、前記カウンタのカウンタ値が第２のカウンタ値になる前に前記制御部により前記第１のカウンタ値に設定されない場合、前記制御部をリセットし、リセット後も前記識別情報記憶部に記憶されている識別情報が変更されない場合に前記制御部の再起動を指示する、
ことを特徴とする情報処理装置の試験方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置および情報処理装置の試験方法に関する。
【背景技術】
【０００２】
製品の信頼性を保証するために、製品の開発期間中および製造期間中に電圧、温度、クロック周波数等の、製品の選択されたコンポーネントに関連した動作状況の変化に対してマージン試験を行うことが知られている。また、マージン試験を行う製品の動作監視を行うウォッチドッグタイマ回路を製品内に設け、製品内のＣＰＵやメモリが動作不能となった場合には、ウォッチドックタイマが動作し、リセット信号をＣＰＵおよび電源部に出力する技術が知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−１８７６１号公報
【特許文献２】特開平５−２５０２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
例えば、製品の電圧やクロック周波数を一定時間毎に変更するマージン試験を、試験項目を変えて連続して実行する場合、製品のＣＰＵやメモリがハングアップ（hang-up）する等の理由により、試験項目が変更されなくなる場合がある。この場合、マージン試験自体は停止せずに実行されるため、ウォッチドッグタイマ回路ではエラーが検出できないという問題がある。
【０００５】
本発明はこのような点に鑑みてなされたものであり、試験時にハングアップから復旧する情報処理装置および情報処理装置の試験方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、開示の情報処理装置が提供される。この情報処理装置は、識別情報記憶部と、制御部と、指示部と、監視部と、リセットフラグ記憶部とを有している。
識別情報記憶部は、複数の試験項目のうち、現在実行されている試験項目の試験を識別する識別情報を記憶する。
【０００７】
制御部は、ＢＩＯＳの起動後に、試験対象に複数の試験項目の試験をそれぞれ実行し、１つの試験項目の試験の終了に伴い識別情報記憶部に記憶されている識別情報を、次に実行する試験項目の試験の識別情報に変更する試験実行部と、所定時間以内に識別情報記憶部に記憶されている識別情報が変更されたか否かを判断する判断部とを備え、所定時間以内に識別情報記憶部に記憶されている識別情報が変更された場合は、カウンタのカウンタ値を所定のタイミングで第１のカウンタ値に設定する処理を実行する。
【０００８】
指示部は、カウンタを有し、カウンタのカウンタ値が第２のカウンタ値になる前に制御部により第１のカウンタ値に設定されない場合に制御部をリセットし、リセット後も識別情報記憶部に記憶されている識別情報が変更されないことにより、判断部が、識別情報記憶部に記憶されている識別情報が所定時間以内に変更されなかったと判断した場合、制御部の再起動を制御部に電力を供給する回路に指示する。
監視部は、制御部のＢＩＯＳの起動の際、ＢＩＯＳの起動に伴い実行されるプログラムのコードの生成を監視する。リセットフラグ記憶部は、ＢＩＯＳの起動の開始前に監視部により所定値に設定されるリセットフラグを記憶する。また、制御部は、ＢＩＯＳの起動の開始後にリセットフラグが所定値に設定されていない場合に、ＢＩＯＳの起動を停止し、リセットフラグが所定値に設定されている場合に、ＢＩＯＳの起動を継続する。監視部は、ＢＩＯＳの起動の停止によりプログラムのコードが生成されなくなったことを検出すると、制御部の再起動を制御部に電力を供給する回路に指示する。
【発明の効果】
【０００９】
試験時にハングアップから復旧することができる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施の形態の情報処理装置を示す図である。
【図２】第２の実施の形態のストレージ装置の全体構成図を示す図である。
【図３】ストレージシステム内の制御モジュールのハードウェア構成例を示す図である。
【図４】ＣＰＵが備える機能を示すブロック図である。
【図５】制御モジュールの処理を説明するフローチャートである。
【図６】制御モジュールの処理を説明するフローチャートである。
【図７】ＰｏｓｔＰｈａｓｅ監視処理を説明するフローチャートである。
【図８】ＷＤＴ処理を説明するフローチャートである。
【図９】ＷＤＴ監視処理を説明するフローチャートである。
【図１０】試験結果を説明する図である。
【発明を実施するための形態】
【００１１】
以下、実施の形態の情報処理装置を、図面を参照して詳細に説明する。
＜第１の実施の形態＞
図１は、第１の実施の形態の情報処理装置を示す図である。
【００１２】
第１の実施の形態の情報処理装置（コンピュータ）１は、制御部１ａと、記憶部１ｂと、指示部１ｃと、制御部１ａに伝送路３を介して接続された接続機器２と、制御部１ａおよび接続機器２に電圧を供給する電圧供給回路４とを有している。制御部１ａは、ＣＰＵ（Central Processing Unit）が備える機能により実現することができる。記憶部１ｂは、例えば不揮発性のメモリデバイスが備えるデータ記憶領域により実現することができる。指示部１ｃは、例えばＦＰＧＡ（Field Programmable Gate Array）が備える機能により実現することができる。
【００１３】
接続機器２としては、例えば、ＰＣＩｅ（PCI Express）スイッチや、ＳＡＳ（Serial Attached SCSI）エクスパンダ等のＳＡＳデバイスが挙げられる。
制御部１ａは、試験実行部１ａ１と、判断部１ａ２とを有している。
【００１４】
試験実行部１ａ１は、試験対象である制御部１ａ自身および接続機器２の電圧、クロック周波数を設計値から±１％、±２%・・・と順に変化させながら、試験項目に従って制御部１ａ、接続機器２に負荷をかけるマージン試験を実行する。本実施の形態のマージン試験をより具体的に説明すると、マージン試験では情報処理装置１を一定時間（例えば１時間）連続して運転する。運転中に、最初の試験項目である接続機器２のマージン試験を３０分間行い、その後、２番目の試験項目である制御部１ａのマージン試験を３０分行う。そして、情報処理装置１の運転中に制御部１ａおよび接続機器２に発生した異常の種別に基づいて、情報処理装置１が電源電圧、クロック周波数の変化に対してどこまでマージンを持っているのかを検証する。
【００１５】
記憶部１ｂは、マージン試験の実行状態を示すフラグを記憶するフラグ記憶部１ｂ１と、現在実行されているマージン試験の試験項目を識別する識別情報を記憶する識別情報記憶部１ｂ２を有する。
【００１６】
フラグ記憶部１ｂ１のフラグは、試験実行部１ａ１がマージン試験を実行しているときに１（有効）にセットされ、マージン試験を実行していないときに０（無効）にセットされる。また、最初の試験項目である接続機器２のマージン試験を行っている場合の識別情報は「ＴＰ１」であり、２番目の試験項目である制御部１ａのマージン試験を行っている場合の識別情報は「ＴＰ２」である。
【００１７】
試験実行部１ａ１は、マージン試験を開始する際に、フラグ記憶部１ｂ１のフラグを１に設定する。また、試験実行部１ａ１は、接続機器２のマージン試験を行う際に、識別情報として「ＴＰ１」を識別情報記憶部１ｂ２に設定する。そして、試験実行部１ａ１は、接続機器２のマージン試験の終了に伴い識別情報記憶部１ｂ２に記憶されている「ＴＰ１」を、次に実行する制御部１ａのマージン試験の識別情報である「ＴＰ２」に変更する。
【００１８】
判断部１ａ２は、フラグ記憶部１ｂ１に記憶されているフラグが１であるとき、すなわち、試験実行部１ａ１がマージン試験を実行しているときに識別情報記憶部１ｂ２に記憶されている識別情報を監視し、識別情報が３５分以内に「ＴＰ１」から「ＴＰ２」に変更されたか否かを判断する。なお、３５分は、接続機器２のマージン試験が３０分行われることに基づき、識別情報の変更の判断に用いる時間の一例であり、情報処理装置１の管理者が任意の時間に設定することができる。識別情報が３５分以内に「ＴＰ１」から「ＴＰ２」に変更されなかった場合は、制御部１ａがハングアップし、接続機器２のマージン試験から制御部１ａのマージン試験に移行していないと管理者が判断することができる。
【００１９】
また、判断部１ａ２は、接続機器２のマージン試験の開始に伴い、指示部１ｃが備えるカウンタ１ｃ１のカウンタ値を所定値（以下、第１のカウンタ値と言う）にセットする。なお、カウンタ１ｃ１は、アップカウンタでもよいし、ダウンカウンタでもよいが、本実施の形態ではダウンカウンタであるものとして説明する。
【００２０】
指示部１ｃは、カウンタ１ｃ１が第１のカウンタ値にセットされると、カウンタ１ｃ１のカウントを開始する。指示部１ｃは、カウンタ１ｃ１のカウンタ値が「０」に達すると、判断部１ａ２によるカウンタ１ｃ１へのカウンタ値のセットが停止されたと判断する。なお、「０」は、第２のカウンタ値の一例である。
【００２１】
判断部１ａ２は、接続機器２のマージン試験が開始されてから識別情報が「ＴＰ１」である間は、カウンタ値が「０」に達しないように、カウンタ１ｃ１を第１のカウンタ値にセットする動作を定期的に繰り返し行う。
【００２２】
判断部１ａ２は、識別情報が３５分以内に「ＴＰ１」から「ＴＰ２」に変更されなかったと判断した場合、カウンタ１ｃ１への第１のカウンタ値のセットを停止する。第１のカウンタ値のセットが停止されることにより、カウンタ１ｃ１のカウンタ値が、「０」に達する。
【００２３】
指示部１ｃは、カウンタ１ｃ１のカウンタ値が「０」に達すると、制御部１ａの再起動を電圧供給回路４に指示する。このように、カウンタ１ｃ１を用いて識別情報の変更を確認することにより、指示部１ｃは、制御部１ａの動作状態にかかわらず、制御部１ａのハングアップを認識することができる。
【００２４】
電圧供給回路４は、指示部１ｃから制御部１ａを再起動する指示を受け付けると、制御部１ａを再起動する。すなわち、制御部１ａの電源をＯＮ状態からＯＦＦ状態にし、再度ＯＮ状態にする処理を行う。
【００２５】
情報処理装置１によれば、マージン試験の試験項目を識別する識別情報の変更の有無を判断し、識別情報が所定時間以内に更新されなかった場合、制御部１ａの再起動を行うことにより、ハングアップから復旧する。従って、例えば、制御部１ａが再起動された場合、再起動前の試験項目の次の試験項目でマージン試験を続行するよう設定しておけば、マージン試験を継続して行うことができる。なお、本実施の形態では、試験項目が３５分以内に更新されなかった場合、制御部１ａの再起動を行うようにしたが、制御部１ａの再起動を行う前に制御部１ａをリセットし、リセット後も試験項目が所定時間以内に更新されなかった場合、制御部１ａの再起動を実行するようにしてもよい。
【００２６】
以下、第２の実施の形態において、開示の情報処理装置をストレージ装置に適用した場合について説明する。
＜第２の実施の形態＞
図２は、第２の実施の形態のストレージ装置の全体構成図を示す図である。
【００２７】
図２に示すストレージ装置１００は、複数のＨＤＤを備える。ストレージ装置１００内のＤＥ（Drive Enclosure）２１０、２２０のそれぞれには、ストレージ装置を構成する複数のＨＤＤが格納されている。また、ストレージ装置１００は、ＤＥ２１０、２２０内のＨＤＤに対するアクセスを制御する２つの制御モジュール（CM:Controller Module）１０ａ、１０ｂを備えている。なお、ＤＥ２１０、２２０は、例えば、ストレージ装置１００の外部に設けられていてもよい。また、ストレージ装置としては、ＨＤＤに限らず、例えばＳＳＤ（Solid State Drive）等の他の種類のストレージ装置が使用されてもよい。
【００２８】
ストレージ装置１００には、ホスト装置１１０と管理端末装置１２０とが接続されている。ホスト装置１１０は、ユーザの操作に応じてストレージ装置１００内の制御モジュール１０ａまたは制御モジュール１０ｂに対して、ＤＥ２１０内のＨＤＤまたはＤＥ２２０内のＨＤＤへのアクセスを要求する。なお、ホスト装置１１０と制御モジュール１０ａ、１０ｂとは、例えば、光ファイバを介して接続されている。
【００２９】
管理端末装置１２０は、管理者の操作に応じてストレージ装置１００の動作を管理する。例えば、管理端末装置１２０は、管理者の操作に応じてストレージ装置１００内の制御モジュール１０ａ、１０ｂのそれぞれの電源をＯＮ状態にしたり、ＯＦＦ状態にしたりすることを要求することができる。なお、管理端末装置１２０と制御モジュール１０ａ、１０ｂとは、例えば、ＬＡＮ（Local Area Network）ケーブルを介して接続されている。また、管理端末装置１２０は、ストレージ装置１００に対し後述するマージン試験を行った結果を示すログファイルを管理端末装置１２０が備える図示しない記憶部に記憶する。
【００３０】
制御モジュール１０ａ、１０ｂは、それぞれ、ホスト装置１１０からのアクセス要求に応じてＤＥ２１０、２２０内のＨＤＤへのアクセスを制御する。例えば、制御モジュール１０ａ、１０ｂは、それぞれ、ＨＤＤに記憶されたデータの読み出し要求をホスト装置１１０から受け付けると、読み出しを要求されたデータをＨＤＤから読み出し、ホスト装置１１０に送信する。あるいは、制御モジュール１０ａ、１０ｂは、それぞれ、ＨＤＤへのデータの書き込み要求をホスト装置１１０から受け付けると、書き込みを要求されたデータをＨＤＤに書き込む。
【００３１】
また、制御モジュール１０ａ、１０ｂは、ＤＥ２１０、２２０内のＨＤＤに記憶されたデータをキャッシュする機能を備える。また、制御モジュール１０ａと制御モジュール１０ｂとは互いにデータを送受信でき、制御モジュール１０ａ、１０ｂは、例えば、他方のＣＭが保持するキャッシュデータのバックアップを互いに保持する。また、制御モジュール１０ａ、１０ｂの一方は、制御モジュール１０ａ、１０ｂの他方の電源を制御することも可能になっている。なお、制御モジュール１０ａ、１０ｂは、例えば、ＤＥ２１０、２２０内のＨＤＤに記憶されたデータをＲＡＩＤ（Redundant Arrays of Inexpensive Disks）によって管理してもよい。
【００３２】
図３は、ストレージシステム内の制御モジュールのハードウェア構成例を示す図である。
制御モジュール１０ａ、１０ｂは、マージン試験を行う機能を有している。本実施の形態で実行するマージン試験は、制御モジュール１０ａ、１０ｂに電力やクロック信号を供給するデバイスの個体差や、ストレージ装置１００の使用環境等によって発生する電源電圧、クロック周波数の設計値からのずれを考慮しても、ストレージ装置１００が正常に動作することを確認する試験である。より具体的には、本実施の形態のマージン試験は、ストレージ装置１００の制御モジュール１０ａ、１０ｂおよびＤＥ２１０、２２０内で使用されている各デバイスの電源電圧、クロック周波数を設計値から±１％、±２%・・・と順に変化させながら、試験対象のデバイスに負荷をかける。負荷をかける試験対象のデバイスおよび負荷をかける箇所は、用意された試験項目により予め決定されている。
【００３３】
マージン試験では、ストレージ装置１００を一定時間（例えば４時間）連続して運転する。そして運転中に、ストレージ装置１００が備える各デバイスに発生した異常の種別に基づいてストレージ装置１００が、電源電圧、クロック周波数に対してどこまでマージンを持っているのかを検証する。
【００３４】
制御モジュール１０ａは、制御部１０と、監視部２０と、リセット回路３０と、電源回路４０と、クロック回路５０と、ＭＲＡＭ（Magnetoresistive Random Access Memory）６０とを有している。
【００３５】
制御部１０は、ＣＰＵ１１、ＲＡＭ（Random Access Memory）１２、ＰＣＩｅ（Peripheral Component Interconnect Express）スイッチ１３、ＳＡＳコントローラ１４ａ、１４ｂ、ＳＡＳエクスパンダ１５ａ、１５ｂ、ＰＣＨ（Platform Controller Hub）１６、ＳＳＤ１７、トランシーバ１８を有している。
【００３６】
また、制御モジュール１０ｂは、制御モジュール１０ａと同じハードウェア構成によって実現される。そこで、ここでは基本的に、制御モジュール１０ａのハードウェア構成について説明し、制御モジュール１０ｂのハードウェア構成の説明については省略する。
【００３７】
ＣＰＵ１１は、制御モジュール１０ａ全体を統括的に制御する。ＲＡＭ１２は、制御モジュール１０ａの主記憶装置として使用され、ＣＰＵ１１に実行させるプログラムの少なくとも一部や、このプログラムによる処理に必要な各種データを一時的に記憶する。また、ＲＡＭ１２は、ＤＥ２１０、２２０内のＨＤＤに記憶されたデータのキャッシュ領域としても使用される。ＲＡＭ１２の一例として、ＤＤＲ３  ＳＤＲＡＭ（Double-Data-Rate3 Synchronous Dynamic Random Access Memory）等が挙げられる。
【００３８】
ＰＣＩｅスイッチ１３は、ＣＰＵ１１およびＳＡＳコントローラ１４ａ、１４ｂとの間で、ＰＣＩｅバスを介してデータを送受信する。また、ＰＣＩｅスイッチ１３は、ホスト装置１１０や、制御モジュール１０ｂが備えるＰＣＩスイッチと接続されている。以下、ＰＣＩｅスイッチ１３と制御モジュール１０ｂが備えるＰＣＩｅスイッチとの間の通信経路を「通信経路Ｐ１」と呼ぶ。
【００３９】
ＣＰＵ１１と、制御モジュール１０ｂが備えるＣＰＵとは、通信経路Ｐ１を通じて通信できるようになっている。例えば、ＣＰＵ１１は、制御モジュール１０ｂにおいて発生した異常の内容を示す異常検出情報を、制御モジュール１０ｂが備えるＣＰＵから通信経路Ｐ１を通じて取得することができる。また、例えば、ＣＰＵ１１および制御モジュール１０ｂが備えるＣＰＵは、ＲＡＭ１２、制御モジュール１０ｂが備えるＲＡＭにそれぞれ記憶されたＨＤＤのキャッシュデータを、通信経路Ｐ１を通じて他方の制御モジュールが備えるＣＰＵに送信し、他方の制御モジュール内のＲＡＭにキャッシュデータをバックアップするように依頼することもできる。
【００４０】
ＳＡＳコントローラ１４ａ、１４ｂは、ＳＡＳデバイスであるＤＥ２１０、２２０内のＨＤＤとの間のインタフェース処理を実行する制御回路である。ＳＡＳコントローラ１４ａは、制御モジュール１０ｂのＳＡＳコントローラに接続されている。また、ＳＡＳコントローラ１４ａは、ＳＡＳエクスパンダ１５ａを通じてＤＥ２１０、２２０に接続されている。また、ＳＡＳコントローラ１４ａは、ＳＡＳエクスパンダ１５ａを通じてクロック回路５０および電源回路４０に接続されている。
【００４１】
ＳＡＳコントローラ１４ｂは、制御モジュール１０ｂのＳＡＳコントローラに接続されている。また、ＳＡＳコントローラ１４ｂは、ＳＡＳエクスパンダ１５ｂを通じてＤＥ２１０、２２０に接続されている。また、ＳＡＳコントローラ１４ｂは、制御モジュール１０ｂ内のＳＡＳエクスパンダを通じてＤＥ２１０、２２０と接続されている。このように、ＳＡＳコントローラ１４ｂとＤＥ２１０、２２０とが２つのＳＡＳエクスパンダを通じて接続されることで、ＳＡＳコントローラ１４ｂからＤＥ２１０、２２０へのアクセス経路が冗長化されている。
【００４２】
ＳＡＳエクスパンダ１５ａは、ＳＡＳコントローラ１４ａとＤＥ２１０、２２０との中継デバイスの機能に加え、制御部１０の動作を監視する監視部２０側の機能を備えている。なお、ＳＡＳエクスパンダ１５ａの監視部２０側の機能については後述する。
【００４３】
ＳＡＳエクスパンダ１５ｂは、ＳＡＳコントローラとＳＡＳデバイスとの間でデータを中継する。なお、ＳＡＳエクスパンダ１５ｂは、内部にメモリを備え、制御モジュール１０ａの電源状態を示す情報を内部のメモリに保持する。
【００４４】
ＰＣＨ１６は、ＣＰＵ１１と、ＳＳＤ１７、トランシーバ１８およびＦＰＧＡ２２との間で、データを送受信する。
ＳＳＤ１７は、制御モジュール１０ａの二次記憶装置として使用され、ＣＰＵ１１により実行されるプログラムやその実行に必要な各種のデータ等を記憶する。なお、二次記憶装置としては、例えば、ＨＤＤ等の他の種類の不揮発性記憶装置が使用されてもよい。ＳＳＤ１７には、マージン記憶領域１７１が設けられている。マージン記憶領域１７１には、マージン試験に使用する電圧の初期値（電圧初期値）およびクロックの初期値（クロック初期値）が予め記憶されている。また、マージン記憶領域１７１には、マージン試験に使用する電圧の設定値（電圧マージン設定値）およびクロックの設定値（クロックマージン設定値）が予め複数記憶されている。図３に示す電圧／クロックマージン設定値１、電圧／クロックマージン設定値２、・・・、電圧／クロックマージン設定値Ｘは、それぞれ電圧マージン設定値およびクロックマージン設定値の異なる組み合わせを示している。
【００４５】
また、ＳＳＤ１７には、第１カタログ１７２、第２カタログ１７３、ＯＳ（Operating System）１７４が記憶されている。
第１カタログ１７２および第２カタログ１７３には、マージン試験中にＣＰＵ１１に実行させるプログラムが記憶されている。
【００４６】
ＯＳ１７４には、ＣＰＵ１１に実行させるプログラムが記憶されている。
トランシーバ１８は、ＲＳ−２３２Ｃケーブルや、ＬＡＮケーブルを介して管理端末装置１２０に接続されており、管理端末装置１２０との間でデータを送受信する。
【００４７】
監視部２０は、ＳＡＳエクスパンダ１５ａと、ＦＰＧＡ２２とを備えている。ＳＡＳエクスパンダ１５ａとＦＰＧＡ２２との間はローカルバスで接続されている。
ＳＡＳエクスパンダ１５ａは、監視部２０側の機能としてＰｏｓｔＰｈａｓｅ監視部２１１と、電圧マージン制御部２１２と、クロックマージン制御部２１３とを備えている。
【００４８】
ＰｏｓｔＰｈａｓｅ監視部２１１は、制御部１０への電源投入後に起動するＢＩＯＳの起動中に、ＢＩＯＳの各プログラムの実行結果を識別するＰｏｓｔＰｈａｓｅコードが生成されていることを監視する。ＰｏｓｔＰｈａｓｅ監視部２１１は、ＰｏｓｔＰｈａｓｅコードの生成を監視することで、ＢＩＯＳの起動処理が実行されていることを把握することができる。
【００４９】
電圧マージン制御部２１２は、Ｉ2Ｃバスを介して電源回路４０に接続されている。電圧マージン制御部２１２は、ＭＲＡＭ６０に記憶されている電圧マージン設定値を電源回路４０に設定する。
【００５０】
クロックマージン制御部２１３は、Ｉ２Ｃバスを介してクロック回路５０に接続されている。クロックマージン制御部２１３は、ＭＲＡＭ６０に記憶されているクロックマージン設定値をクロック回路５０に設定する。
【００５１】
ＦＰＧＡ２２は、制御モジュール１０ａ内のハードウェアの状態を監視する機能を備える。ＦＰＧＡ２２は、制御モジュール１０ａ内のハードウェアの異常を検出すると、検出した異常の内容を示す異常検出情報をＣＰＵ１１に通知する。また、ＦＰＧＡ２２は、異常検出情報をＭＲＡＭ６０に保存する。さらに、ＦＰＧＡ２２は、ＣＰＵ１１によってプログラム実行時の異常が検出された場合、検出された異常の内容を示す異常検出情報をＣＰＵ１１から受信し、受信した異常検出情報をＭＲＡＭ６０に保存する。また、ＦＰＧＡ２２は、ＣＰＵ１１からの要求、または制御モジュール１０ｂが備えるＦＰＧＡからの要求に応じて、ＭＲＡＭ６０に保存した異常検出情報を制御モジュール１０ｂが備えるＦＰＧＡに送信することもできる。
【００５２】
また、ＦＰＧＡ２２は、制御モジュール１０ａの電源状態を制御する機能を備える。ＦＰＧＡ２２は、ＣＰＵ１１からの要求、または制御モジュール１０ｂが備えるＦＰＧＡからの要求に応じて電源回路４０を制御し、制御モジュール１０ａの電源をＯＮ状態にしたり、ＯＦＦ状態にしたりする。
【００５３】
さらに、ＦＰＧＡ２２は、制御モジュール１０ｂが備えるＦＰＧＡと通信する機能を備える。以下、ＦＰＧＡ２２と制御モジュール１０ｂが備えるＦＰＧＡとの間の通信経路を、「通信経路Ｐ２」と呼ぶ。ＦＰＧＡ２２は、例えば、ＣＰＵ１１からの要求に応じて、制御モジュール１０ｂの電源を所定の状態に遷移させるように、通信経路Ｐ２を通じて制御モジュール１０ｂが備えるＦＰＧＡに要求する。
【００５４】
なお、ＦＰＧＡ２２が実行する処理は、例えば、マイクロコンピュータ等の他の種類の制御回路によって実行されてもよい。
ＦＰＧＡ２２は、ＷＤＴ監視処理部２２１と、リセット制御部２２２と、電源制御部２２３とを有している。
【００５５】
ＷＤＴ監視処理部２２１は、制御部１０のハングアップを検出し、制御部１０を再起動する機能を有する。このＷＤＴ監視処理部２２１は、ＷＤＴ０カウンタ２２１ａ、ＷＤＴ２カウンタ２２１ｂ、およびＷＤＴ３カウンタ２２１ｃを有する。ＷＤＴ０カウンタ２２１ａ、ＷＤＴ２カウンタ２２１ｂ、およびＷＤＴ３カウンタ２２１ｃは、いずれもダウンカウンタである。ＷＤＴ０カウンタ２２１ａ、ＷＤＴ２カウンタ２２１ｂ、およびＷＤＴ３カウンタ２２１ｃのカウンタ値の更新は、ＣＰＵ１１が行う。
【００５６】
ＣＰＵ１１によってＷＤＴ０カウンタ２２１ａ、ＷＤＴ２カウンタ２２１ｂ、およびＷＤＴ３カウンタ２２１ｃのカウンタ値が更新されるとＷＤＴ監視処理部２２１は、ＷＤＴ０カウンタ２２１ａのダウンカウントを開始する。ＷＤＴ０カウンタ２２１ａのカウンタ値が０になると、ＷＤＴ監視処理部２２１は、ＷＤＴ０カウンタ２２１ａのタイムアウトを制御部１０に通知する。その後、ＷＤＴ監視処理部２２１は、ＷＤＴ２カウンタ２２１ｂのダウンカウントを開始する。
【００５７】
ＷＤＴ２カウンタ２２１ｂのカウンタ値が０になると、ＷＤＴ監視処理部２２１は、リセット制御部２２２に制御部１０のリセットを指示する。その後、ＷＤＴ監視処理部２２１は、ＷＤＴ３カウンタ２２１ｃのダウンカウントを開始する。
【００５８】
ＷＤＴ３カウンタ２２１ｃのカウンタ値が０になり、かつ、後述するマージン試験フラグ記憶領域６７のフラグが１にセットされている場合、ＷＤＴ監視処理部２２１は、制御部１０の再起動を電源制御部２２３に指示する。
【００５９】
リセット制御部２２２は、ＷＤＴ監視処理部２２１の指示に基づきリセット回路３０を制御し、制御部１０をリセットするリセット信号を制御部１０に供給する。
電源制御部２２３は、ＷＤＴ監視処理部２２１の指示に基づき電源回路４０を制御し、制御部１０を再起動する。
【００６０】
リセット回路３０は、リセット制御部２２２の制御の下で、制御モジュール１０ａが備える各デバイスにリセット信号を供給する。
電源回路４０は、電源制御部２２３の制御の下で、制御モジュール１０ａの電源をＯＮ状態にしたり、ＯＦＦ状態にしたりする。また、電源回路４０は、電圧マージン制御部２１２の制御により、制御部１０に供給する電圧を変更する。
【００６１】
クロック回路５０は、クロック信号を生成し、ストレージ装置１００が備える各デバイスに供給する。また、クロック回路５０は、クロックマージン制御部２１３の制御により、制御部１０に供給するクロック周波数を変更する。
【００６２】
ＭＲＡＭ６０は、ＦＰＧＡ２２での処理に用いる各種のデータや、制御モジュール１０ａにおいて検出された異常の内容を示す異常検出情報を記憶する不揮発性メモリである。  このＭＲＡＭ６０は、リセットフラグ記憶領域６１、ＰｏｓｔＰｈａｓｅフラグ記憶領域６２、ＰｏｓｔＰｈａｓｅカウンタ６３、第１起動カウンタ６４、第２起動カウンタ６５、実行状態チェックフラグ記憶領域６６、マージン試験フラグ記憶領域６７、ＴＰ種別記憶領域６８、電圧マージン設定値記憶領域６９、クロックマージン設定値記憶領域７０、およびＰｏｓｔＰｈａｓｅコード記憶領域７１を有している。
【００６３】
リセットフラグ記憶領域６１は、監視部２０の指示により制御部１０の再起動が実行されたか否かを示すフラグを記憶する領域である。
ＰｏｓｔＰｈａｓｅフラグ記憶領域６２は、ＰｏｓｔＰｈａｓｅ監視部２１１にＰｏｓｔＰｈａｓｅコードの生成を監視させるか否かを示すフラグを記憶する領域である。本実施の形態の当該フラグは、ＰｏｓｔＰｈａｓｅ監視部２１１にＰｏｓｔＰｈａｓｅコードの生成を監視させることを示す１にセットされている。
【００６４】
ＰｏｓｔＰｈａｓｅカウンタ６３は、ＰｏｓｔＰｈａｓｅコードの生成を判断するのに用いるカウンタ値を記憶するダウンカウンタである。ＰｏｓｔＰｈａｓｅカウンタ６３のカウンタ値は、制御部１０により定期的に所定の値にセットされる。このカウンタ値が０になっても、新たなＰｏｓｔＰｈａｓｅコードが生成されない場合、ＰｏｓｔＰｈａｓｅ監視部２１１は、ＰｏｓｔＰｈａｓｅコードが生成されていないと判断する。
【００６５】
第１起動カウンタ６４は、ある電圧／クロックマージン設定値を用いて試験を実行した後に、電圧／クロックマージン設定値を変えて次の試験に遷移させるか否かを判断するのに用いるカウンタ値を記憶するカウンタである。
【００６６】
第２起動カウンタ６５は、マージン試験において変更する電圧／クロックマージン設定値の残数を示すカウンタ値を記憶するカウンタである。
実行状態チェックフラグ記憶領域６６は、ある試験項目の試験の実行中であることを示すフラグを記憶する領域である。
【００６７】
マージン試験フラグ記憶領域６７は、マージン試験の実行中であることを示すフラグを記憶する領域である。マージン試験フラグ記憶領域６７のフラグが１にセットされており、かつ、ＷＤＴ３カウンタ２２１ｃのカウントが満了した場合は、監視部２０より制御部１０の再起動が実行される。マージン試験フラグ記憶領域６７のフラグは、電圧マージンおよびクロックマージンを設定する直前にＣＰＵ１１によって１にセットされる。
【００６８】
ＴＰ種別記憶領域６８は、試験項目を示す情報を記憶する領域である。試験項目を示す情報としては、例えば、ＳＡＳコントローラ１４ａ、１４ｂおよびＳＡＳエクスパンダ１５ａ、１５ｂに対する負荷試験項目を示す「ＴＰａ」や、ＣＰＵ１１の負荷試験項目を示す「ＴＰｂ」等が挙げられる。
【００６９】
電圧マージン設定値記憶領域６９には、マージン試験に用いる電圧マージン設定値が記憶される。
クロックマージン設定値記憶領域７０には、マージン試験に用いるクロックマージン設定値が記憶される。
【００７０】
ＰｏｓｔＰｈａｓｅコード記憶領域７１には、ＢＩＯＳの各プログラムの実行結果を識別するＰｏｓｔＰｈａｓｅコードが記憶される。ＢＩＯＳの起動が停止した場合、管理者は、ＰｏｓｔＰｈａｓｅコード記憶領域７１に記憶されているＰｏｓｔＰｈａｓｅコードを参照することで、ＢＩＯＳのプログラムがどこまで実行されたのかを知ることができる。
【００７１】
次に、ＣＰＵ１１が備える機能を説明する。
図４は、ＣＰＵが備える機能を示すブロック図である。
ＣＰＵ１１は、ＷＤＴ処理部１１１と、フラグ制御部１１２と、マージン試験部１１３と、マージン設定部１１４とを有している。
【００７２】
ＷＤＴ処理部１１１は、実行状態チェックフラグ記憶領域６６のフラグが０にセットされている場合、ＷＤＴ０カウンタ２２１ａ、ＷＤＴ２カウンタ２２１ｂおよびＷＤＴ３カウンタ２２１ｃのカウンタ値を４秒で０になるカウンタ値に定期的（例えば４秒以内）に設定する。
【００７３】
ＷＤＴ処理部１１１は、実行状態チェックフラグ記憶領域６６のフラグが１にセットされている場合、ＷＤＴ０カウンタ２２１ａ、ＷＤＴ２カウンタ２２１ｂおよびＷＤＴ３カウンタ２２１ｃの設定に加えて、ＴＰ種別記憶領域６８のＴＰ種別が３５分以内に更新されたかどうかをチェックする。ＷＤＴ処理部１１１は、３５分以内にＴＰ種別の更新がなかった場合は、マージン試験により制御部１０がハングアップしたと判断し、ＷＤＴ処理を停止する。ＷＤＴ処理が停止すると、ＷＤＴ監視処理部２２１が、ＷＤＴ３カウンタ２２１ｃのカウント満了（カウンタ値０）を検出し、マージン試験フラグ記憶領域６７のフラグが１の場合は監視部２０より制御部１０が再起動される。制御部１０の再起動により、制御部１０は、ハングアップ状態から復旧する。
【００７４】
フラグ制御部１１２は、ＭＲＡＭ６０に設定されている各種フラグを所定の条件下で１または０にセットする。
マージン試験部１１３は、前述したマージン試験を実行する。マージン試験対象のデバイスは、例えばＣＰＵ１１自身、制御モジュール１０ａ、１０ｂ間の通信を行うＰＣＩｅスイッチ１３並びに、制御モジュール１０ａ、１０ｂとＤＥ２１０、２２０とを接続するＳＡＳコントローラ１４ａ、１４ｂおよびＳＡＳエクスパンダ１５ａ、１５ｂである。
【００７５】
マージン設定部１１４は、ＳＳＤ１７のマージン記憶領域１７１に記憶されている各種設定値をＭＲＡＭ６０の電圧マージン設定値記憶領域６９およびクロックマージン設定値記憶領域７０に記憶する。
【００７６】
次に、制御モジュール１０ａの処理を説明する。
図５および図６は、制御モジュールの処理を説明するフローチャートである。
［ステップＳ１］  制御モジュール１０ａの電源がＯＮ状態になると、監視部２０が起動する。なお、制御部１０の電源はＯＦＦ状態のままである。監視部２０が起動すると、ステップＳ２に遷移する。
【００７７】
［ステップＳ２］  ＦＰＧＡ２２は、第２起動カウンタ６５のカウンタ値に、マージン記憶領域１７１に記憶されている電圧／クロックマージン設定値の個数Ｘを代入する。その後、ステップＳ３に遷移する。
【００７８】
［ステップＳ３］  電圧マージン制御部２１２は、ＭＲＡＭ６０の電圧マージン設定値記憶領域６９に記憶されている電圧マージン設定値を電源回路４０に設定する。その後、ステップＳ４に遷移する。
【００７９】
［ステップＳ４］  電源制御部２２３は、電源回路４０を制御して制御部１０の電源をＯＮ状態にする。電源がＯＮ状態になることにより、制御部１０には、電圧マージン設定値の電圧が供給される。その後、ステップＳ５に遷移する。
【００８０】
［ステップＳ５］  クロックマージン制御部２１３は、ＭＲＡＭ６０のクロックマージン設定値記憶領域７０に記憶されているクロックマージン設定値をクロック回路５０に設定する。その後、ステップＳ６に遷移する。
【００８１】
［ステップＳ６］  リセット制御部２２２は、制御部１０のリセット信号を解除する。その後、ステップＳ７に遷移する。
［ステップＳ７］  リセット制御部２２２は、リセットフラグ記憶領域６１のフラグ（図５ではリセットフラグと表記。以下同じ）を０に設定する。その後、ステップＳ８に遷移する。
【００８２】
［ステップＳ８］  ＣＰＵ１１は、ＢＩＯＳの起動を開始する。その後、ステップＳ９に遷移する。ＢＩＯＳは、ＰｏｓｔＰｈａｓｅカウンタ６３に所定のカウンタ値を設定し、設定したカウンタ値が０になる前にＰｏｓｔＰｈａｓｅコードを生成する。ＰｏｓｔＰｈａｓｅ監視部２１１は、ＰｏｓｔＰｈａｓｅの監視処理を開始する。なお、ＰｏｓｔＰｈａｓｅ監視処理については、後に詳述する。
【００８３】
［ステップＳ９］  フラグ制御部１１２は、リセットフラグ記憶領域６１のフラグが０か否かを判断する。フラグが１である場合（ステップＳ９のＮｏ）、ステップＳ１０に遷移する。フラグが０である場合（ステップＳ９のＹｅｓ）、ステップＳ１２に遷移する。
【００８４】
［ステップＳ１０］  ＣＰＵ１１は、ＢＩＯＳの起動を停止する。ＢＩＯＳの起動が停止することにより、ＰｏｓｔＰｈａｓｅコードの生成も停止する。その後、ステップＳ１１に遷移する。
【００８５】
［ステップＳ１１］  ＰｏｓｔＰｈａｓｅ監視部２１１は、制御部１０の再起動を電源制御部２２３に指示する。その後、制御部１０が再起動されると、処理がステップＳ６に遷移する。
【００８６】
［ステップＳ１２］  フラグ制御部１１２は、リセットフラグ記憶領域６１のフラグを１に設定する。その後、ステップＳ１３に遷移する。
［ステップＳ１３］  監視部２０は、ＢＩＯＳの起動の完了を確認するとＰｏｓｔＰｈａｓｅの監視を終了する。また、ＣＰＵ１１によるＢＩＯＳの起動が完了すると、ＯＳ１７４が起動する。その後、ステップＳ１４に遷移する。
【００８７】
［ステップＳ１４］  マージン設定部１１４は、電圧マージン設定値記憶領域６９の電圧マージン設定値をマージン記憶領域１７１に記憶されている電圧初期値に書き換える。また、マージン設定部１１４は、クロックマージン設定値記憶領域７０のクロックマージン設定値をマージン記憶領域１７１に記憶されているクロック初期値に書き換える。その後、ステップＳ１５に遷移する。
【００８８】
［ステップＳ１５］  マージン試験部１１３は、監視部２０によるＷＤＴ監視の設定を有効にする。この処理により、ＷＤＴ監視処理部２２１がＷＤＴ監視処理を開始する。また、ＷＤＴ処理部１１１は、ＷＤＴ処理を開始する。その後、ステップＳ１６に遷移する。なお、ＷＤＴ監視処理およびＷＤＴ処理は、後に詳述する。
【００８９】
［ステップＳ１６］  マージン試験部１１３は、第１起動カウンタ６４のカウンタ値をインクリメントする。その後、ステップＳ１７に遷移する。
［ステップＳ１７］  マージン試験部１１３は、第１起動カウンタ６４のカウンタ値が１であるか否かを判断する。第１起動カウンタ６４のカウンタ値が１である場合（ステップＳ１７のＹｅｓ）、ステップＳ１８に遷移する。第１起動カウンタ６４のカウンタ値が１以外の値である場合（ステップＳ１７のＮｏ）、ステップＳ２８に遷移する。
【００９０】
［ステップＳ１８］  制御部１０は、ＯＳ１７４の起動完了時に自動で第２カタログ１７３が実行される設定を有効にする。その後、ステップＳ１９に遷移する。
［ステップＳ１９］  制御部１０は、第２起動カウンタ６５のカウンタ値をデクリメントする。その後、ステップＳ２０に遷移する。
【００９１】
［ステップＳ２０］  ＣＰＵ１１は、ＯＳ１７４の起動が完了するとステップＳ２１に遷移する。
［ステップＳ２１］  フラグ制御部１１２は、実行状態チェックフラグ記憶領域６６のフラグ（図５では実行状態チェックフラグと表記。以下同じ）を１に設定する。その後、ステップＳ２２に遷移する。
【００９２】
［ステップＳ２２］  フラグ制御部１１２は、ＴＰ種別記憶領域６８のＴＰ種別をＴＰａに設定する。その後、ステップＳ２３に遷移する。
［ステップＳ２３］  マージン試験部１１３は、ステップＳ３にて設定された電圧マージン設定値およびステップＳ５にて設定されたクロックマージン設定値を用いてＳＡＳコントローラ１４ａ、１４ｂおよびＳＡＳエクスパンダ１５ａ、１５ｂの負荷試験を実行する。ＳＡＳコントローラ１４ａ、１４ｂおよびＳＡＳエクスパンダ１５ａ、１５ｂの負荷試験が終了すると、ステップＳ２４に遷移する。なお、マージン試験部１１３は、高速伝送路の負荷試験中に何らかのエラーが発生すると、エラーが発生したことを示すメッセージ（以下、「第１のメッセージ」と言う）を作成し、ＣＰＵ１１内のキャッシュに一時記憶する。
【００９３】
［ステップＳ２４］  マージン試験部１１３は、ＴＰ種別記憶領域６８のＴＰ種別をＴＰｂに設定する。その後、ステップＳ２５に遷移する。
［ステップＳ２５］  マージン試験部１１３は、ＣＰＵ１１の負荷試験を実行する。マージン試験部１１３は、ＣＰＵ１１の負荷試験中に何らかのエラーが発生すると、第１のメッセージを作成し、ＣＰＵ１１内のキャッシュに一時記憶する。ＣＰＵ負荷試験が終了すると、マージン試験部１１３は、マージン試験の結果を示すログファイルを作成する。ログファイルの作成の際、マージン試験部１１３は、ＣＰＵ１１内のキャッシュを参照し、第１のメッセージが作成されているか否かを確認する。第１のメッセージが作成されていれば、マージン試験部１１３は、第１のメッセージを含むログファイルを作成する。第１のメッセージが作成されていなければ、マージン試験部１１３は、マージン試験中にエラーが発生しなかったことを示すメッセージ（以下、「第２のメッセージ」と言う）を含むログファイルを作成する。そして、マージン試験部１１３は、作成したログファイルを管理端末装置１２０に転送する。その後、ステップＳ２６に遷移する。
【００９４】
［ステップＳ２６］  フラグ制御部１１２は、実行状態チェックフラグ記憶領域６６のフラグを０に設定する。その後、ステップＳ２７に遷移する。
［ステップＳ２７］  ＣＰＵ１１は、制御部１０の再起動指示をＦＰＧＡ２２に送る。これにより、電源制御部２２３が電源回路４０を制御して制御部１０を再起動する。ＣＰＵ１１が再起動されると、ステップＳ５以降の処理が引き続き実行される。
【００９５】
［ステップＳ２８］  ＣＰＵ１１は、ＯＳ１７４起動完了時に自動で第１カタログ１７２が実行される設定を有効にする。その後、ステップＳ２９に遷移する。
［ステップＳ２９］  ＣＰＵ１１は、ＯＳ１７４の起動が完了するとステップＳ３０に遷移する。
【００９６】
［ステップＳ３０］  フラグ制御部１１２は、実行状態チェックフラグ記憶領域６６のフラグを１に設定し、マージン試験フラグ記憶領域６７のフラグを１に設定し、ＴＰ種別記憶領域６８の値を０に設定し、第１起動カウンタ６４のカウンタ値を０に設定する。その後、ステップＳ３１に遷移する。
【００９７】
［ステップＳ３１］  ＣＰＵ１１は、第２起動カウンタ６５のカウンタ値を確認する。具体的には、第２起動カウンタ６５のカウンタ値がＸか否かを判断する。第２起動カウンタ６５のカウンタ値がＸではなければ第２起動カウンタ６５のカウンタ値がＸ−１か否かを判断する。このように、第２起動カウンタ６５のカウンタ値と対比する値をデクリメントして、第２起動カウンタ６５のカウンタ値と一致する値を確認する。そして、値が一致すれば、ステップＳ３２に遷移する。以下、一致した値をｎとする。また、一致した値が０であればステップＳ３４に遷移する。
【００９８】
［ステップＳ３２］  マージン設定部１１４は、次回起動時の電圧マージン設定値およびクロックマージン設定値をマージン記憶領域１７１から読み出し、電圧マージン設定値記憶領域６９およびクロックマージン設定値記憶領域７０に設定する。例えば、ｎ＝２であれば、電圧／クロックマージン設定値２に設定されている電圧マージン設定値およびクロックマージン設定値を読み出す。その後、ステップＳ３３に遷移する。
【００９９】
［ステップＳ３３］  ＣＰＵ１１は、制御部１０の再起動をＦＰＧＡ２２に指示する。この処理により、電源制御部２２３は、電源回路４０を制御して制御部１０を再起動する。制御部１０が再起動すると、ＣＰＵ１１は、ステップＳ４以降の処理を実行する。
【０１００】
［ステップＳ３４］  ＣＰＵ１１は、制御部１０の電源をＯＦＦ状態にする指示をＦＰＧＡ２２に送る。この指示により、電源制御部２２３は、電源回路４０を制御して制御部１０の電源をＯＦＦ状態にする。これにより、図５および図６の処理が終了する。
【０１０１】
次に、図５のステップＳ８にてＰｏｓｔＰｈａｓｅ監視部２１１が開始するＰｏｓｔＰｈａｓｅ監視処理を説明する。
図７は、ＰｏｓｔＰｈａｓｅ監視処理を説明するフローチャートである。
【０１０２】
［ステップＳ４１］  ＰｏｓｔＰｈａｓｅ監視部２１１は、ＰｏｓｔＰｈａｓｅカウンタ６３のカウント値が０になる前にＢＩＯＳがＰｏｓｔＰｈａｓｅコードを生成したか否かを判断する。ＰｏｓｔＰｈａｓｅカウンタが０になる前にＢＩＯＳがＰｏｓｔＰｈａｓｅコードを生成した場合（ステップＳ４１のＹｅｓ）、ステップＳ４２に遷移する。ＰｏｓｔＰｈａｓｅカウンタが０になる前にＢＩＯＳがＰｏｓｔＰｈａｓｅコードを生成しなかった場合（ステップＳ４１のＮｏ）、ステップＳ４３に遷移する。
【０１０３】
［ステップＳ４２］  ＰｏｓｔＰｈａｓｅ監視部２１１は、例えばＯＳ１７４の起動を検出することで、ＣＰＵ１１がＢＩＯＳの起動を完了したか否かを判断する。ＢＩＯＳの起動が完了した場合（ステップＳ４２のＹｅｓ）、図７の処理を終了する。ＢＩＯＳの起動が完了していない場合（ステップＳ４２のＮｏ）、ステップＳ４１に遷移する。
【０１０４】
［ステップＳ４３］  ＰｏｓｔＰｈａｓｅ監視部２１１は、マージン試験フラグ記憶領域６７のフラグが１か否かを判断する。フラグが１ではない場合、すなわち、フラグが０である場合（ステップＳ４３のＮｏ）、フラグが１になるまで待機する。フラグが１である場合（ステップＳ４３のＹｅｓ）、ステップＳ４４に遷移する。
【０１０５】
［ステップＳ４４］  ＰｏｓｔＰｈａｓｅ監視部２１１は、制御部１０の再起動を電源制御部２２３に指示する。その後、図７の処理を終了する。
次に、図５のステップＳ１５にてＷＤＴ処理部１１１が開始するＷＤＴ処理を説明する。
【０１０６】
図８は、ＷＤＴ処理を説明するフローチャートである。
［ステップＳ５１］  ＷＤＴ処理部１１１は、ＴＰ種別記憶領域６８のＴＰ種別を変数Ａに格納する。その後、ステップＳ５２に遷移する。
【０１０７】
［ステップＳ５２］  ＷＤＴ処理部１１１は、現在時刻を変数Ｔ１に設定する。その後、ステップＳ５３に遷移する。
［ステップＳ５３］  ＷＤＴ処理部１１１は、ＷＤＴ０カウンタ２２１ａ、ＷＤＴ２カウンタ２２１ｂ、ＷＤＴ３カウンタ２２１ｃそれぞれのカウンタ値を４秒に更新する。その後、ステップＳ５４に遷移する。
【０１０８】
［ステップＳ５４］  ＷＤＴ処理部１１１は、実行状態チェックフラグ記憶領域６６のフラグが１か否かを判断する。フラグが１である場合（ステップＳ５４のＹｅｓ）、ステップＳ５５に遷移する。フラグが１ではない場合、すなわち、フラグが０である場合（ステップＳ５４のＮｏ）、ステップＳ５３に遷移する。
【０１０９】
［ステップＳ５５］  ＷＤＴ処理部１１１は、ＴＰ種別記憶領域６８のＴＰ種別が変数Ａに等しいか否かを判断する。ＴＰ種別が変数Ａに等しい場合（ステップＳ５５のＹｅｓ）、ステップＳ５６に遷移する。ＴＰ種別が変数Ａに等しくない場合（ステップＳ５５のＮｏ）、ステップＳ５７に遷移する。
【０１１０】
［ステップＳ５６］  ＷＤＴ処理部１１１は、現在時刻を変数Ｔ２に設定する。その後、ステップＳ５８に遷移する。
［ステップＳ５７］  ＷＤＴ処理部１１１は、現在時刻を変数Ｔ１に設定する。その後、ステップＳ５８に遷移する。
【０１１１】
［ステップＳ５８］  ＷＤＴ処理部１１１は、変数Ｔ２から変数Ｔ１を引いた時間が３５分以上か否かを判断する。変数Ｔ２から変数Ｔ１を引いた時間が３５分以上である場合（ステップＳ５８のＹｅｓ）、図８の処理を終了する。図８の処理が終了すると、ＷＤＴ０カウンタ２２１ａ、ＷＤＴ２カウンタ２２１ｂ、ＷＤＴ３カウンタ２２１ｃそれぞれのカウンタ値の更新が停止する。一方、変数Ｔ２から変数Ｔ１を引いた時間が３５分未満である場合（ステップＳ５８のＮｏ）、ステップＳ５３に遷移する。
【０１１２】
以上で図８の処理の説明を終了する。なお、ステップＳ５８にて判断基準とした３５分は、一例であり、判断基準とする時間は、試験項目に合わせて任意の時間に設定することができる。
【０１１３】
次に、図５のステップＳ１５にてＷＤＴ監視処理部２２１が開始するＷＤＴ監視処理を説明する。
図９は、ＷＤＴ監視処理を説明するフローチャートである。
【０１１４】
［ステップＳ６１］  ＷＤＴ監視処理部２２１は、ＷＤＴ０カウンタ２２１ａのカウント満了前にＷＤＴ０カウンタ２２１ａのカウンタ値の更新があったか否かを判断する。ＷＤＴ０カウンタ２２１ａのカウント満了前にＷＤＴ０カウンタ２２１ａのカウンタ値の更新があった場合（ステップＳ６１のＹｅｓ）、ＷＤＴ監視処理部２２１は、再度、ステップＳ６１以降の処理を行う。ＷＤＴ０カウンタ２２１ａのカウント満了前にＷＤＴ０カウンタ２２１ａのカウンタ値の更新がなかった場合（ステップＳ６１のＮｏ）、ステップＳ６２に遷移する。
【０１１５】
［ステップＳ６２］  ＷＤＴ監視処理部２２１は、ＷＤＴ０カウンタ２２１ａのカウント満了によるタイムアウトをＣＰＵ１１に通知する。ＣＰＵ１１は、タイムアウトの通知を受け取ると、ＷＤＴ０カウンタ２２１ａのタイムアウトがあった旨のログファイルを作成し、管理端末装置１２０に転送する。その後、ステップＳ６３に遷移する。
【０１１６】
［ステップＳ６３］  ＷＤＴ監視処理部２２１は、ＷＤＴ２カウンタ２２１ｂのカウント満了前にＷＤＴ２カウンタ２２１ｂのカウンタ値の更新があったか否かを判断する。ＷＤＴ２カウンタ２２１ｂのカウント満了前にＷＤＴ２カウンタ２２１ｂのカウンタ値の更新があった場合（ステップＳ６３のＹｅｓ）、ＷＤＴ監視処理部２２１は、再度、ステップＳ６１以降の処理を行う。ＷＤＴ０カウンタ２２１ａのカウント満了前にＷＤＴ０カウンタ２２１ａのカウンタ値の更新がなかった場合（ステップＳ６３のＮｏ）、ステップＳ６４に遷移する。
【０１１７】
［ステップＳ６４］  ＷＤＴ監視処理部２２１は、制御部１０のリセットをリセット制御部２２２に指示する。その後、ステップＳ６５に遷移する。
［ステップＳ６５］  ＷＤＴ監視処理部２２１は、ＷＤＴ３カウンタ２２１ｃのカウント満了前にＷＤＴ３カウンタ２２１ｃのカウンタ値の更新があったか否かを判断する。なお、ＷＤＴ３カウンタ２２１ｃのカウント満了は、第２のカウンタ値になることの一例を示している。また、ＷＤＴ３カウンタ２２１ｃのカウンタ値の更新は、第１のカウンタ値に設定されることの一例を示している。ＷＤＴ３カウンタ２２１ｃのカウント満了前にＷＤＴ３カウンタ２２１ｃのカウンタ値の更新があった場合（ステップＳ６５のＹｅｓ）、ＷＤＴ監視処理部２２１は、再度、ステップＳ６１以降の処理を行う。ＷＤＴ３カウンタ２２１ｃのカウント満了前にＷＤＴ３カウンタ２２１ｃのカウンタ値の更新がなかった場合（ステップＳ６５のＮｏ）、ステップＳ６６に遷移する。
【０１１８】
［ステップＳ６６］  ＷＤＴ監視処理部２２１は、マージン試験フラグ記憶領域６７のフラグが１にセットされているか否かを判断する。フラグが１にセットされている場合（ステップＳ６６のＹｅｓ）、ステップＳ６７に遷移する。フラグが１にセットされていない場合（ステップＳ６６のＮｏ）、フラグが１にセットされるまで待機する。
【０１１９】
［ステップＳ６７］  ＷＤＴ監視処理部２２１は、制御部１０の再起動を電源制御部２２３に指示する。その後、図９の処理を終了する。
図１０は、試験結果を説明する図である。
【０１２０】
図１０に示す画面１２１は、管理端末装置１２０に接続されたモニタ１２０ａに表示された画面を示している。
マージン記憶領域１７１に記憶されている全ての電圧／クロックマージン設定値についてのログファイルが生成されていれば、管理者は、全ての電圧／クロックマージン設定値についてマージン試験が終了したと判断することができる。
【０１２１】
画面１２１には、各マージン設定値についてマージン試験を行った結果得られたログファイル１２１ａ〜１２１ｆが表示されている。例えば、ログファイル１２１ａのファイル名「2011-1-27＿043828-V0-C0-CM1-1.txt」は、先頭から２０１１年１月２７日の４時３８分２８秒に試験を開始し、電圧マージンをＶ０に設定し、クロックマージンをＣ０に設定し、制御モジュール１０ｂでマージン試験を行ったことを示している。
【０１２２】
管理者は、マージン試験が正常に終了したか否かを例えば以下の方法により確認することができる。
ログファイル１２１ａ〜１２１ｆのうち、第１のメッセージを示す「ERROR MESSAGE」の文言が含まれているログファイルが存在すれば、そのログファイルが作成されたマージン試験中に何らかのエラーが発生していることが分かる。よって、管理者は、第１のメッセージを含むログファイルを用いてエラー解析を実施することができる。
【０１２３】
また、ログファイル１２１ａ〜１２１ｆのうち、第１のメッセージが含まれておらず、第２のメッセージが含まれているログファイルについては、管理者は、マージン試験中にエラーが発生しなかったと判断することができる。第２のメッセージの一例としては、第２カタログ１７３の試験項目が、２０１１年１月２７日の０時５１分１８秒に正常に完了したことを示す「catalog [catalog2＿1.cat](TID:0x81d267c) normal end 2011.01.27 00:51:18」等が挙げられる。
【０１２４】
また、ログファイル１２１ａ〜１２１ｆ内に第２のメッセージが含まれていないログファイルが存在すれば、管理者は、そのログファイルが作成されたマージン試験中にエラーが発生し、制御部１０がハングアップまたは制御部１０の異常リセット等が発生し、制御部１０が再起動されたと判断することができる。
【０１２５】
以上述べたように、ストレージ装置１００によれば、ＣＰＵ１１および監視部２０のどちらからもアクセスできるＭＲＡＭ６０にＴＰ種別記憶領域６８を用意した。そして、ＷＤＴ監視処理部２２１は、マージン試験の実行中にＴＰ種別記憶領域６８のＴＰ種別を定期的にチェックし、３５分以内にＴＰ種別が更新されなければ、制御部１０がハングアップしたと判断し、制御部１０を再起動するようにした。これによってストレージ装置１００は、ハングアップ状態から復旧され、次のマージン設定での連続運転が実施される。
【０１２６】
また、ＭＲＡＭ６０にリセットフラグ記憶領域６１を用意し、リセット制御部２２２は、ＣＰＵ１１のリセット信号を解除する前にこのリセットフラグ記憶領域６１のフラグを０に設定する（ステップＳ９の処理）。またＣＰＵ１１はＢＩＯＳの起動が完了したときにリセットフラグを１に設定する（ステップＳ１４の処理）。さらにＣＰＵ１１はＢＩＯＳ起動直後にリセットフラグが１であった場合ＢＩＯＳの起動を停止する（ステップＳ１５の処理）。また、ＢＩＯＳの起動中にＰｏｓｔＰｈａｓｅ監視部２１１が定期的にＰｏｓｔＰｈａｓｅフラグ記憶領域６２のフラグを更新し、ＰｏｓｔＰｈａｓｅ監視部２１１は、ＰｏｓｔＰｈａｓｅコードが指定時間内に生成されなければ制御部１０を再起動する。これにより、ＰｏｓｔＰｈａｓｅ監視部２１１からのＣＰＵ１１のリセット解除以外の、異常なＣＰＵ１１のリセットによってＢＩＯＳが起動された場合は、ＣＰＵ１１が再起動する。従って、マージン試験中に何らかの異常が発生し、ＣＰＵ１１に対し予期せぬリセットがかかった場合においてもマージン試験を継続して行うことができる。
【０１２７】
以上、本発明の情報処理装置および情報処理装置の試験方法を、図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置換することができる。また、本発明に、他の任意の構成物や工程が付加されていてもよい。
【０１２８】
また、本発明は、前述した各実施の形態のうちの、任意の２以上の構成（特徴）を組み合わせたものであってもよい。
なお、本実施の形態では、マージン試験を行う場合を例に制御モジュール１０ａの処理を説明したが、制御モジュール１０ａを用いて実行できる試験の種類はマージン試験に限定されない。
【０１２９】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、情報処理装置１および制御モジュール１０ａ、１０ｂが有する機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリ等が挙げられる。磁気記憶装置には、ハードディスクドライブ、フレキシブルディスク（ＦＤ）、磁気テープ等が挙げられる。光ディスクには、ＤＶＤ、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）／ＲＷ等が挙げられる。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）等が挙げられる。
【０１３０】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１３１】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１３２】
また、上記の処理機能の少なくとも一部を、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）等の電子回路で実現することもできる。
【符号の説明】
【０１３３】
１  情報処理装置
１ａ、１０  制御部
１ａ１  試験実行部
１ａ２  判断部
１ｂ  記憶部
１ｂ１  フラグ記憶部
１ｂ２  識別情報記憶部
１ｃ  指示部
１ｃ１  カウンタ
２  接続機器
３  伝送路
４  電圧供給回路
１０ａ、１０ｂ  制御モジュール
１１  ＣＰＵ
１１１  ＷＤＴ処理部
１１２  フラグ制御部
１１３  マージン試験部
１１４  マージン設定部
２０  監視部
２２  ＦＰＧＡ
２２１ａ  ＷＤＴ０カウンタ
２２１ｂ  ＷＤＴ２カウンタ
２２１ｃ  ＷＤＴ３カウンタ
２２１  ＷＤＴ監視処理部
２２２  リセット制御部
２２３  電源制御部
３０  リセット回路
４０  電源回路
５０  クロック回路
６０  ＭＲＡＭ
１００  ストレージ装置
２１１  ＰｏｓｔＰｈａｓｅ監視部
２１２  電圧マージン制御部
２１３  クロックマージン制御部
【図１】
0005909948.tif 000002
【図２】
0005909948.tif 000003
【図３】
0005909948.tif 000004
【図４】
0005909948.tif 000005
【図５】
0005909948.tif 000006
【図６】
0005909948.tif 000007
【図７】
0005909948.tif 000008
【図８】
0005909948.tif 000009
【図９】
0005909948.tif 000010
【図１０】
0005909948.tif 000011