"同一構成のコントローラを少なくとも1ペア含むストレージ装置であって、前記コントローラは、制御部と、ハードウェアとの入出力を制御するプログラムデータを記憶するデータ記憶部と、前記データ記憶部に記憶するプログラムデータを用いた起動時の処理を管理する管理部と、前記管理部から他の前記コントローラ内の管理部へ所定のアクセスがあった場合のみ当該他のコントローラ内のデータ記憶部との通信を許可する通信部と、を備え、前記制御部は、前記管理部が起動時の処理失敗を確認した場合、前記管理部から他の前記コントローラ内の管理部へのアクセスし、前記通信部を介して前記他のコントローラ内のデータ記憶部からプログラムデータを読み出すデータ読み出し手段と、前記データ読み出し手段で読み出したプログラムデータと、前記起動時に用いたプログラムデータとが一致するか否かを判定する判定手段と、前記判定手段で両プログラムデータが一致しないと判定した場合、前記データ読み出し手段で読み出したプログラムデータを前記データ記憶部に上書きする上書き手段と、前記上書き手段で前記データ記憶部に上書きしたプログラムデータを用いて再起動を行なう再起動手段と、を有することを特徴とするストレージ装置。前記コントローラは、前記再起動を行なった回数を示すカウント値を記憶するカウンタを備え、前記管理部は、前記起動時の処理失敗を確認した場合、前記カウント値が所定値を超えているか否かを判定するカウント値判定手段を備え、前記カウント値判定手段で前記カウント値が所定値を超えていると判定した場合、前記制御部は、当該コントローラの交換を要求するために必要な情報を前記管理部に記憶し、前記カウント値判定手段で前記カウント値が所定値を超えていないと判定した場合、前データ読み出し手段、前記判定手段、前記上書き手段、前記再起動手段が動作することを特徴とする請求項1記載のストレージ装置。前記ハードウェアは、複数の不揮発性記憶装置を含むディスクエンクロージャであることを特徴とする請求項1又は2記載のストレージ装置。前記プログラムデータは、BIOSBasicInputOutputSystemデータであることを特徴とする請求項1乃至3のいずれか一項に記載のストレージ装置。同一構成のコントローラを少なくとも1ペア含むストレージ装置のプログラムデータ復旧方法であって、前記コントローラは、制御部と、ハードウェアとの入出力を制御するプログラムデータを記憶するデータ記憶部と、前記データ記憶部に記憶するプログラムデータを用いた起動時の処理を管理する管理部と、前記管理部から他の前記コントローラ内の管理部へ所定のアクセスがあった場合のみ当該他のコントローラ内のデータ記憶部との通信を許可する通信部と、を備え、前記制御部は、前記管理部が起動時の処理失敗を確認した場合、前記管理部から他の前記コントローラ内の管理部へのアクセスし、前記通信部を介して前記他のコントローラ内のデータ記憶部からプログラムデータを読み出すステップと、前記読み出したプログラムデータと、前記起動時に用いたプログラムデータとが一致するか否かを判定するステップと、両プログラムデータが一致しないと判定した場合、前記読み出したプログラムデータを前記データ記憶部に上書きするステップと、前記上書き手段で前記データ記憶部に上書きしたプログラムデータを用いて再起動を行なうステップと、を有することを特徴とするストレージ装置のプログラムデータ復旧方法。上記のBIOSを冗長化する技術のうち、先の2つの技術については、同一コントローラ内に複数のBIOSフラッシュROMを設ける必要があり、又は、大容量のBIOSROMを設ける必要があるためコストアップになるというデメリットがあった。また、最後の技術については、データを安全に復旧することは可能になるが、メインブロック内のBIOSデータが破損した場合は、ブートブロックのみで起動し、その際手作業で外部メディアからメインブロックのデータを復旧する作業が必要になるなど特別な手間が必要であり、コストアップに繋がる。したがって、上記技術のいずれの場合でも、BIOSROM内のデータが破損した場合に自動で復旧を行うためには、何らかの方法でコントローラが起動できないことを検出し、当該検出結果に基づいて、BIOSROMを切り替えや領域の切り替え、又はメインブロックのデータの復旧を行う仕組みが必要であった。本発明は、上記事情に鑑みてなされたものであり、その目的は、プログラムデータの冗長化を安価に行なうと共に、自動的かつ安全に破損したプログラムデータを復旧することができるストレージ装置及びストレージ装置のプログラムデータ復旧方法を提供することにある。本発明は、同一構成のコントローラを少なくとも1ペア含むストレージ装置であって、前記コントローラは、制御部と、ハードウェアとの入出力を制御するプログラムデータを記憶するデータ記憶部と、前記データ記憶部に記憶するプログラムデータを用いた起動時の処理を管理する管理部と、前記管理部から他の前記コントローラ内の管理部へ所定のアクセスがあった場合のみ当該他のコントローラ内のデータ記憶部との通信を許可する通信部と、を備え、前記制御部は、前記管理部が起動時の処理失敗を確認した場合、前記管理部から他の前記コントローラ内の管理部へのアクセスし、前記通信部を介して前記他のコントローラ内のデータ記憶部からプログラムデータを読み出すデータ読み出し手段と、前記データ読み出し手段で読み出したプログラムデータと、前記起動時に用いたプログラムデータとが一致するか否かを判定する判定手段と、前記判定手段で両プログラムデータが一致しないと判定した場合、前記データ読み出し手段で読み出したプログラムデータを前記データ記憶部に上書きする上書き手段と、前記上書き手段で前記データ記憶部に上書きしたプログラムデータを用いて再起動を行なう再起動手段と、を有することを特徴とする。他の本発明は、同一構成のコントローラを少なくとも1ペア含むストレージ装置のプログラムデータ復旧方法であって、前記コントローラは、制御部と、ハードウェアとの入出力を制御するプログラムデータを記憶するデータ記憶部と、前記データ記憶部に記憶するプログラムデータを用いた起動時の処理を管理する管理部と、前記管理部から他の前記コントローラ内の管理部へ所定のアクセスがあった場合のみ当該他のコントローラ内のデータ記憶部との通信を許可する通信部と、を備え、前記制御部は、前記管理部が起動時の処理失敗を確認した場合、前記管理部から他の前記コントローラ内の管理部へのアクセスし、前記通信部を介して前記他のコントローラ内のデータ記憶部からプログラムデータを読み出すステップと、前記読み出したプログラムデータと、前記起動時に用いたプログラムデータとが一致するか否かを判定するステップと、両プログラムデータが一致しないと判定した場合、前記読み出したプログラムデータを前記データ記憶部に上書きするステップと、前記上書き手段で前記データ記憶部に上書きしたプログラムデータを用いて再起動を行なうステップと、を有することを特徴とする。本発明によると、プログラムデータの冗長化を安価に行なうと共に、自動的かつ安全に破損したプログラムデータを復旧することができるストレージ装置及びストレージ装置のプログラムデータ復旧方法を提供できる。以下、本発明の実施の形態について図面を参照して説明する。図1は、ストレージ装置であるストレージサブシステム3の構成を示す図である。同図に示すように、ストレージサブシステム3は、コントローラ10、コントローラ20、及びディスクエンクロージャ30を有している。また、コントローラ10は、ホスト1及びホスト2と通信可能に接続されており、コントローラ20はホスト1及びホスト2と通信可能に接続されている。コントローラ10は、ストレージサブシステム3の各種制御を行うコントローラであり、制御部であるCPU11、チップセット12、メモリ13、ホストI/FInterface14、ディスクI/FInterface15、データ記憶部であるBIOSROM16、管理部17、セレクタ18及びセレクタ19を有している。また、コントローラ20は、コントローラ10と同様に、ストレージサブシステム3の各種制御を行うコントローラであり、CPU21、チップセット22、メモリ23、ホストI/F24、ディスクI/F25、BIOSROM26、管理部27、セレクタ28及びセレクタ29を有している。更に、コントローラ10及び20間においては、セレクタ18とセレクタ29とが接続可能に構成され、セレクタ19とセレクタ28とが接続可能に構成されている。これらセレクタ18とセレクタ29,セレクタ19とセレクタ28とがどのような場合に接続されるかについては後述する。また、管理部17と管理部27とが通信可能に接続されている。このように、ストレージサブシステム3は、コントローラ10及び20間で通信可能となるように構成されている。次に、ストレージサブシステム3に含まれるコントローラ10,20及びディスクエンクロージャ30について詳細に説明する。なお、コントローラ20は、コントローラ10と同一な構成をしているため、以下では、コントローラ10の構成について詳細に説明し、コントローラ20の構成についての詳細な説明は省略する。CPU11は、中央制御装置であり、復旧プログラム11aを有している。この復旧プログラム11aは、BIOSの復旧処理を行うためのプログラムであり、CPU11は復旧プログラム11aを実行することにより、BIOSROM16に保存されたBIOSデータの復旧を行なうことが可能になっている。このBIOSデータの復旧処理については後述する。また、CPU11はチップセット12を介して、制御信号S00を用いてセレクタ18の制御を行う。さらに、CPU11はチップセット12及び管理部17を介してコントローラ20の管理部27に対して制御信号T10を送信し、間接的にセレクタ29の制御を行うことが可能になっている。チップセット12は、CPU11と組み合わせてI/O機能等を提供する。チップセット12はCPU11とDMIDirectMediaInterface又はESIEnterpriseSouthbridgeInterface等の専用インターフェースで接続され、管理部17とLPCLowPinCountインターフェースで接続される。チップセット12は、更に、制御信号S00によりセレクタ18を制御する。メモリ13は、DRAMDynamicRandomAccessMemory等のメモリデバイスで構成され、CPU11とDDRSDRAMDoubleDataRateSynchronousDynamicRandomAccessMemory、DDR2SDRAM、DDR3SDRAM等のメモリインターフェース規格で接続される。メモリ13は、ホスト1,2又はディスクエンクロージャ30からのデータの授受を行なう際のキャッシュメモリとして使用されると共に後述するBIOSデータの復旧処理を行なう場合には、BIOSデータの保存場所としても使用される。ホストI/F14は、CPU11とPCIExpress等のインターフェースで接続され、また、ホスト1,2とファイバチャネルやiSCSIInternetSmallComputerSystemInterface等のインターフェースで接続される。ホストI/F14は、ホスト1,2とCPU11との間でのデータの授受等に使用される。ディスクI/F15は、CPU11とPCIExpress等のインターフェースで接続され、また、ディスクエンクロージャ30とSASSerialAttachedSCSI又はSATASerialAdvancedTechnologyAttachment等のインターフェースで接続される。ディスクI/F15は、CPU11とディスクエンクロージャ30との間でのデータの授受等に使用される。BIOSROM16は、ハードウェアとの入出力を制御するプログラムデータを記憶するROMであり、より詳細には、コントローラ10の起動に必要なBIOSデータが格納されている書き換え可能な不揮発性メモリデバイスである。BIOSROM16は、経路Z00、セレクタ19、経路Y00、セレクタ18及び経路X00を経由して、チップセット12とSPISerialPeripheralInterface等のインターフェースで接続される。なお、BIOSROM16内のBIOSデータがなんらかの理由で破損した場合、コントローラ10は起動できなくなる。セレクタ18は、コントローラ20内のBIOSROM26との間の経路の切り替えを行う。より詳細には、セレクタ18はチップセット12とSPI等の経路X00で接続され、セレクタ19とSPI等の経路Y00で接続され、コントローラ20内のセレクタ29とSPI等の経路Y01で接続される。また、セレクタ18は、チップセット12から送信される制御信号S00に基づいて、経路を経路Y00及び経路Y01のいずれかに切り替えるようになっている。セレクタ19は、セレクタ18とSPI等の経路Y00で接続され、BIOSROM16とSPI等の経路Z00で接続され、コントローラ20内のセレクタ28とSPI等の経路Y11で接続されている。また、セレクタ19は、管理部17から送信される制御信号T00に基づいて、経路を経路Z00及び経路Y11のいずれかに切り替えるようになっている。なお、既述の制御信号S00、制御信号T00コントローラ20では、制御信号S10、制御信号T10に相当する。は、TrueとFalseのいずれかの論理状態をとるように構成されている。制御信号S00,T00制御信号S10,T10はいずれもコントローラ10コントローラ20の起動後の初期状態はFalseの状態をとるように構成されている。管理部17は、チップセット12とLPCインターフェース等で接続され、コントローラ20の管理部27とI2CInterIntegratedCircuitインターフェース等で接続される。また、管理部17は、ントローラ20内の管理部27から管理部17から送信される送制御信号T00をセレクタ19へ送信できるようになっている。管理部17は、コントローラ10内の他の制御部又は回路とは独立して動作し、BIOSROM16に保存するBIOSデータを用いた起動時の処理等を管理する。より詳細には、管理部17は、コントローラ10の起動指示、起動失敗等の故障管理、発生したイベント及び各種エラーに関する情報の登録、並びに制御信号T00を用いたセレクタ19の切替制御を行う。例えば、管理部は、BMCである。また、管理部17は、カウンタ17aを有している。カウンタ17aは、コントローラ10が再起動を行なった回数を示すカウント値を記憶する。上述のコントローラ10とコントローラ20とは、ペア冗長構成となっており、一方が故障もしくは取り外された状態でも、他方のコントローラでストレージサブシステム3の制御を続行することができるようになっている。ディスクエンクロージャ30は、複数のHDDHardDiskDrive又はSSDSolidStateDrive等の不揮発性記憶デバイスを搭載し、これら不揮発性記憶デバイスを制御する。本実施の形態においては、図1に示すように、HDD31a,HDD31b,,HDD31nがディスクエンクロージャ30内に搭載されている。次に、セレクタ18,19,28及び29の経路切替条件について図2から図5を参照して説明する。図2に示すように、セレクタ18は、制御信号S00がFalseの場合、経路X00と経路Y00とを接続し、制御信号S00がTrueの場合、経路X00と経路Y01と接続するように経路を切り替える。また、図3に示すように、セレクタ19は、制御信号T00がFalseの場合、経路Y00と経路Z00とを接続し、制御信号T00がTrueの場合、経路Y11と経路Z00とを接続するように経路を切り替える。更に、図4に示すように、セレクタ28は、制御信号S10がFalseの場合、経路X10と経路Y10とを接続し、制御信号S10がTrueの場合、経路X10と経路Y11とを接続するように経路を切り替える。更にまた、図5に示すように、セレクタ29は、制御信号T10がFalseの場合、経路Y10と経路Z10とを接続し、制御信号T10がTrueの場合、経路Y01と経路Z10とを接続するように経路を切り替える。次に、何らかの理由によりコントローラ10のBIOSROM16内に保存しているBIOSデータが破損した場合に、コントローラ10が起動処理を行なったときに、当該破損したBIOSデータを復旧し、復旧したBIOSデータに基づいてコントローラ10が再起動する処理について図6から図10を参照して説明する。管理部17は、BIOSデータが破損しているため、コントローラ10の起動失敗を検出するS101。起動失敗の検出方法は、例えば、管理部17内にウォッチドッグタイマーWatchDogTimerを設け、管理部17が起動前にこのウォッチドッグタイマーを0からスタートさせ、起動成功時にCPU11がこのウォッチドッグタイマーをクリアするという仕組みを予め用意し、このウォッチドッグタイマーが規定時間を超えタイムアウトした場合に起動失敗と判断する方法等によって容易に実現できる。管理部17は、コントローラ10の起動失敗を検出した後、カウンタ17aのカウント値が所定値規定回数を超えているか否かを判定するS102:カウンタ値判定手段。所定値は、例えば、ストレージサブシステム3の保守者等が予め任意の値を設定しておけば良い。所定値を超えていると判定した場合S102:YES、管理部17は、後述するコントローラ10の交換を要求する処理図10参照を実行する。一方、規定回数を超えていないと判定した場合S102:NO、管理部17は、コントローラ20の管理部27へ起動失敗を通知しS103、CPU11へBIOSデータ復旧処理の開始を指示するS104。当該指示を受け付けると、CPU11は、BIOSROM16内のBIOSデータを読み出し、メモリ13へ保存しS105、制御信号S00の状態を初期状態のFalseからTrueへ変更しS106、管理部17を介してコントローラ20の管理部他の管理部27へ制御信号T10をFalseからTrueへ変更するための指示を送信するS107。これにより、CPU11がチップセット12、セレクタ18、コントローラ20内のセレクタ29を介してコントローラ20内のBIOSROM26からBIOSデータを読み出せるようになる。このように、ストレージサブシステム3は、管理部17から他のコントローラ20内の管理部27へ所定のアクセスがあった場合のみ、CPU11は、当該他のコントローラ20内のBIOSROM26との通信が許可され、BIOSROM26からBIOSデータを読み出せるようになっている。このようなセレクタ18,29の動作等により通信部が構成される。次に、CPU11は、コントローラ20内のBIOSROM26からBIOSデータを読み出し、メモリ13に保存しS108:読み出し手段、当該メモリ13に保存したBIOSデータと、既述のステップS105においてメモリ13に保存したBIOSデータとが一致するか否かを判定するS109:判定手段。両BIOSデータが一致していると判定した場合S109:YES、コントローラ10の起動失敗の原因はBIOSデータの破損ではないことを意味するため、CPU11は、当該判定結果に応じて後述する処理図8参照を実行する。一方、両BIOSデータが一致していないと判定した場合S109:NO、CPU11はBIOSROM16内のBIOSデータが破損していることを示す情報を管理部17に登録するS110。次に、CPU11は、既述のステップS105においてメモリ13に保存したコントローラ20のBIOSROM26から読み出したBIOSデータをBIOSROM16上書きするS111:上書き手段。次に、CPU11は、BIOSROM16からBIOSデータを読み出しS112、当該読み出したBIOSデータと、既述のステップS105においてメモリ13に保存したコントローラ20のBIOSROM26から読み出したBIOSデータとが一致するか否かを判定するS113。これにより、BIOSROM16に上書きしたBIOSデータのベリファイを行なうことができる。両BIOSデータが一致していないと判定した場合S113:NO、BIOSデータの復旧ができないことを示すため、CPU11は、後述するコントローラ10の交換を要求する処理図9参照を実行する。一方、両BIOSデータが一致していると判定した場合S113:YES、CPU11は、BIOSROM16内のBIOSデータが正常に復旧したことを示す情報を管理部17に登録するS114。次に、CPU11は、管理部17を介してコントローラ20の管理部27へ、制御信号T10をTrueからFalseへ変更する指示を送信しS115、制御信号S00をTrueからFalseへ変更しS116、メモリ13に保存しているBIOSROM26から読み出したBIOSデータを消去するS117。次に、CPU11は、BIOSデータの復旧が完了したことを管理部17へ通知するS118。このCPU11からの通知を受けて管理部17は、BIOSデータの復旧が完了したことをコントローラ20の管理部27へ通知するS119。次に、管理部17は、カウンタ17aをインクリメントしS120、コントローラ10の再起動を行ないS121:再起動手段、コントローラ10の再起動が実行でき、正常起動できたか否かを判定するS122。再起動が正常にできなかったと判定した場合S122:NO、処理は既述したステップS101へ進み、当該ステップS101からの処理が繰り返される。一方、正常起動できたと判定した場合S122:YES、CPU11は、管理部17へカウンタ17aをクリアする指示を送信しS123、処理が終了する。このようにBIOSROM16のBIOSデータの復旧が行なわれ、コントローラ10の再起動が行なわれる。次に、既述のステップS109において、両BIOSデータが一致していると判定した場合S109:YESの処理について図8を参照しながら説明する。図8に示すように、CPU11は、BIOSROM16のBIOSデータは正常であることを示す情報を管理部17に登録するS301。次に、CPU11は、管理部17を介してコントローラ20の管理部27へ制御信号T10をTrueからFalseへ変更する指示を送信しS302、制御信号S00をTrueからFalseへ変更するS303。次に、CPU11は、メモリ13に保存しているコントローラ20内のBIOSROMか26ら読み出したBIOSデータを消去するS304。次に、CPU11は、コントローラ10が起動しない場合に、他の復旧手段が設けられている場合、当該復旧手段を実行しS305、処理を終了する。なお、他の復旧手段が予めストレージサブシステム3に設けられていない場合、ステップS305の処理は行なわずにこの処理が終了する。次に、既述のステップS113において、両BIOSデータが一致していないと判定した場合S113:NOの処理について図9を参照しながら説明する。図9に示すように、CPU11は、BIOSROM16のBIOSデータの復旧が失敗したことを示す情報を管理部17に登録するS401。次に、CPU11は、管理部17を介してコントローラ20の管理部27へ制御信号T10をTrueからFalseへ変更する指示を送信しS402、制御信号S00をTrueからFalseへ変更するS403。次に、CPU11は、メモリ13に保存しているコントローラ20のBIOSROM26から読み出したBIOSデータを消去するS404。上記ステップS401において、BIOSデータの復旧が失敗したことを示す情報が管理部17に登録された場合、この登録情報が、例えば管理ネットワークに接続された保守端末装置図示を省略する。を介して保守員によって確認され、当該保守員によってコントローラ10、は正常動作する新たなコントローラに交換される。このようにコントローラが交換された後、当該交換されたコントローラによって起動処理が行なわれる。これにより、処理が終了する。次に、既述のステップS102において、所定値を超えていると判定した場合S102:YESの処理について図10を参照しながら説明する。図10に示すように、CPU11は、BIOSROM16のBIOSデータの復旧回数が所定値を超えたことを示す情報を管理部17に登録するS501。上記ステップS501において、BIOSROM16のBIOSデータの復旧回数が所定値を超えたことを示す情報が管理部17に登録された場合、この登録情報が、図9を参照して説明した場合と同様に、例えば管理ネットワークに接続された保守端末装置図示を省略する。を介して保守員によって確認され、当該保守員によってコントローラ10は正常動作する新たなコントローラに交換される。このようにコントローラが交換された後、当該交換されたコントローラによって起動処理が行なわれる。これにより、処理が終了する。以上のように構成されたストレージサブシステム3は、管理部17でBIOSROM16のBIOSデータの破損を検出した場合、CPU11が復旧プログラム11aを実行することにより、自動的にBIOSデータの復旧をすることができる。また、ストレージサブシステム3において、コントローラ10は、コントローラ20内のBIOSROM26に保存されるBIOSデータへアクセスする回路を備えているため、同一コントローラ内に複数のBIOSROM及びBIOSデータを持たなくてもBIOSを冗長化することができる。更に、ストレージサブシステム3は、BIOSデータの復旧開始の指示を故障したコントローラ10の管理部17が行ない、CPU11がセレクタ18,管理部27を介したセレクタ29の制御を行なうことにより、コントローラ20内のBIOSROM26とのアクセスを許可し、BIOSROM16のBIOSデータを復旧する構成になっている。このため、CPU11がアクセスを許可する処理をしない限り、BIOSROM16のBIOSデータが上書きされない。言い換えれば、コントローラ10以外の他のコントローラコントローラ20を含むから勝手にBIOSROM16のBIOSデータを上書きすることができない。したがって、ストレージサブシステム3は、故障したBIOSデータの復旧を安全に行なうことができる。なお、上記実施の形態では、コントローラ10のBIOSROM16内のBIOSデータが破損した場合の復旧処理について説明したが、コントローラ20のBIOSROM26内のBIOSデータが破損した場合の復旧処理も、実質的に同様な処理で行なうことができる。変形例次に、図11から図13を参照して、ストレージサブシステム3内のコントローラ10,20間を接続するセレクタの構成の変形例を説明する。このセレクタの構成を変形したストレージサブシステム4は、上述したストレージサブシステム3とは、セレクタに係る構成が異なるのみで、他の構成については同様であるため、同一な構成には同一の符号を付し、詳細な説明は省略する。図11に示すように、ストレージサブシステム4においては、既述の図1に示すストレージサブシステム3のセレクタ18,19,28及び29、並びに経路X00,経路X10,経路Y00,経路Y01,経路Y10,経路Y11,経路Z00及び経路Z10に代えて、セレクタ51及び52、並びに経路W,経路X02,経路X12,経路Z02及び経路Z12に置き換える構成となっている。次に、セレクタ51,52の切替制御条件について図12及び図13を参照して説明する。先ず、セレクタ51の経路の切替制御条件61について説明する。セレクタ51は、制御信号S01,T01,EN1に基づいて経路X02,経路Z02及び経路Wの切り替えを以下のように行う。図12に示すように、制御信号S01がFalse、かつ制御信号T01がFalseの場合、セレクタ51は、制御信号EN1の状態によらず経路X02と経路Z02とを接続する。また、経路WがHi―Zハイインピーダンス状態に設定され、制御信号EN0がFalseに設定される。制御信号S01がTrue、かつ制御信号T01がFalse、かつ制御信号EN1がFalseの場合、セレクタ51は、経路X02と経路Wとを接続する。また、経路Z02がHi―Z状態に設定され、制御信号EN0がTrueに設定される。制御信号S01がFalse、かつ制御信号T01がTrue、かつ制御信号EN1がTrueの場合、セレクタ51は経路Wと経路Z02とを接続する。また、経路X02がHi―Z状態に設定され、制御信号EN0がFalseに設定される。制御信号S01、制御信号T01及び制御信号EN1の状態の組み合わせが既述した組み合わせ以外の場合は不正な状態であるため、経路X02,経路Z02,経路Wの全てがHi―Z状態に設定され、制御信号EN0がFalseに設定される。次に、セレクタ52の経路の切替制御条件62について説明する。セレクタ52は制御信号S11,T11,EN0に基づいて経路X12,経路Z12及び経路Wの切り替えを以下のように行う。制御信号S11がFalse、かつ制御信号T11がFalseの場合、セレクタ52は、制御信号EN0の状態によらず経路X12と経路Z12とを接続する。また、経路WがHi―Z状態に設定され、制御信号EN1がFalseに設定される。制御信号S11がTrue、かつ制御信号T11がFalse、かつ制御信号EN0がFalseの場合、セレクタ52は、経路X12と経路Wとを接続する。また、経路Z12がHi―Z状態に設定され、制御信号EN1がTrueに設定される。制御信号S11がFalse、かつ制御信号T11がTrue、かつ制御信号EN0がTrueの場合、セレクタ52は経路Wと経路Z12とを接続する。また、経路X12がHi―Z状態に設定され、制御信号EN1がFalseに設定される。制御信号S11,制御信号T11及び制御信号EN0の状態の組み合わせが既述した組み合わせ以外の場合は不正な状態であるため、経路X12,経路Z12,経路Wの全てがHi―Z状態に設定され、制御信号EN1がFalseに設定される。なお、経路W,経路X02,経路X12,経路Z02,経路Z12は電気的にフローティング中間電位状態にならないように、電位を確定させるための弱いプルアップ処理又は弱いプルダウン処理がなされている。以上説明したストレージサブシステム4のようにストレージサブシステム3からセレクタに係る構成を変形した場合でも、ストレージサブシステム4は、ストレージサブシステム3の奏する効果と同様な効果を奏することができる。なお、上記実施の形態は、同一構成のコントローラ10,20を1ペア有するストレージサブシステム3又は4について説明したが、このように1ペアのコントローラ10,20を有する場合に限らず、ストレージサブシステムが同一構成のコントローラを複数ペア有する場合にも本発明を適用することができる。更に、上記実施の形態は、本発明のストレージ装置をストレージサブシステム3又は4に適用した場合で説明したが、ストレージサブシステムに適用される場合に限らず、記憶装置等のハードウェアを制御する同一構成のコントローラを1又は複数ペア有する情報処理装置にも適用することができる。また、プログラムデータの一例として、BIOSデータについて説明したが、他のプログラムデータにも適用可能である。なお、本発明は上述の実施の形態に限定されるものではなく、その実施に際して様々な変形が可能である。上記実施の形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。付記1同一構成のコントローラを少なくとも1ペア含むストレージ装置であって、前記コントローラは、制御部と、ハードウェアとの入出力を制御するプログラムデータを記憶するデータ記憶部と、前記データ記憶部に記憶するプログラムデータを用いた起動時の処理を管理する管理部と、前記管理部から他の前記コントローラ内の管理部へ所定のアクセスがあった場合のみ当該他のコントローラ内のデータ記憶部との通信を許可する通信部と、を備え、前記制御部は、前記管理部が起動時の処理失敗を確認した場合、前記管理部から他の前記コントローラ内の管理部へのアクセスし、前記通信部を介して前記他のコントローラ内のデータ記憶部からプログラムデータを読み出すデータ読み出し手段と、前記データ読み出し手段で読み出したプログラムデータと、前記起動時に用いたプログラムデータとが一致するか否かを判定する判定手段と、前記判定手段で両プログラムデータが一致しないと判定した場合、前記データ読み出し手段で読み出したプログラムデータを前記データ記憶部に上書きする上書き手段と、前記上書き手段で前記データ記憶部に上書きしたプログラムデータを用いて再起動を行なう再起動手段と、を有することを特徴とするストレージ装置。付記2前記コントローラは、前記再起動を行なった回数を示すカウント値を記憶するカウンタを備え、前記管理部は、前記起動時の処理失敗を確認した場合、前記カウント値が所定値を超えているか否かを判定するカウント値判定手段を備え、前記カウント値判定手段で前記カウント値が所定値を超えていると判定した場合、前記制御部は、当該コントローラの交換を要求するために必要な情報を前記管理部に記憶し、前記カウント値判定手段で前記カウント値が所定値を超えていないと判定した場合、前データ読み出し手段、前記判定手段、前記上書き手段、前記再起動手段が動作することを特徴とする付記1記載のストレージ装置。付記3前記ハードウェアは、複数の不揮発性記憶装置を含むディスクエンクロージャであることを特徴とする付記1又は2記載のストレージ装置。付記4前記プログラムデータは、BIOSBasicInputOutputSystemデータであることを特徴とする付記1乃至3のいずれか一項に記載のストレージ装置。付記5同一構成のコントローラを少なくとも1ペア含むストレージ装置のプログラムデータ復旧方法であって、前記コントローラは、制御部と、ハードウェアとの入出力を制御するプログラムデータを記憶するデータ記憶部と、前記データ記憶部に記憶するプログラムデータを用いた起動時の処理を管理する管理部と、前記管理部から他の前記コントローラ内の管理部へ所定のアクセスがあった場合のみ当該他のコントローラ内のデータ記憶部との通信を許可する通信部と、を備え、前記制御部は、前記管理部が起動時の処理失敗を確認した場合、前記管理部から他の前記コントローラ内の管理部へのアクセスし、前記通信部を介して前記他のコントローラ内のデータ記憶部からプログラムデータを読み出すステップと、前記読み出したプログラムデータと、前記起動時に用いたプログラムデータとが一致するか否かを判定するステップと、両プログラムデータが一致しないと判定した場合、前記読み出したプログラムデータを前記データ記憶部に上書きするステップと、前記上書き手段で前記データ記憶部に上書きしたプログラムデータを用いて再起動を行なうステップと、を有することを特徴とするストレージ装置のプログラムデータ復旧方法。"