(57)【特許請求の範囲】
【請求項１】
電子回路と、
前記電子回路を制御するための制御信号をバスを通じて受信し、受信した制御信号に応じた信号を前記電子回路に出力するバスインタフェースと、
前記バスインタフェースから前記電子回路へ出力される信号の値を維持する信号維持回路と、
前記信号維持回路に前記電子回路への出力信号の値を維持させた後、前記バスインタフェースをリセットするリセット制御回路と、
前記バスを通じて制御信号を出力することで前記電子回路を制御する制御装置と、
を有することを特徴とする制御システム。
【請求項２】
前記制御装置は、
第１の制御装置と、
前記第１の制御装置の動作が停止したことを検知すると、リセット信号線を通じてリセット指示を出力した後、前記第１の制御装置に代わって前記電子回路を制御する第２の制御装置と、
を有し、
前記リセット制御回路は、前記リセット信号線を通じて前記リセット指示を受けると、前記信号維持回路に前記電子回路への出力信号の値を維持させた後、前記バスインタフェースをリセットする、
ことを特徴とする請求項１記載の制御システム。
【請求項３】
前記バスインタフェースは、前記リセット制御回路によってリセットされた後、前記バスを通じた前記第２の制御装置からの指示に応じて、前記信号維持回路から前記電子回路へ出力されている信号の値を前記信号維持回路に再度出力することを特徴とする請求項２記載の制御システム。
【請求項４】
前記バスインタフェースは、前記信号維持回路から前記電子回路へ出力されている信号の値を取り込んで前記信号維持回路に出力することで、前記信号維持回路から前記電子回路へ出力されている信号の値を前記信号維持回路に再度出力することを特徴とする請求項３記載の制御システム。
【請求項５】
前記バスインタフェースが、前記信号維持回路から前記電子回路へ出力されている信号の値を前記信号維持回路に再度出力した後、前記リセット制御回路は、前記信号維持回路に前記電子回路への出力信号の値を維持する状態を解除させることを特徴とする請求項３または４記載の制御システム。
【請求項６】
前記第２の制御装置は、前記信号維持回路から前記電子回路へ出力されている信号の値を前記信号維持回路に再度出力するように、前記バスを通じて前記バスインタフェースに指示した後、前記信号維持回路が出力信号の値を維持する状態を解除するように指示する解除指示を、前記バスを通じて前記バスインタフェースに送信し、
前記リセット制御回路は、前記バスインタフェースが前記解除指示を受信したことに応じて、前記信号維持回路に前記電子回路への出力信号の値を維持する状態を解除させる、
ことを特徴とする請求項５記載の制御システム。
【請求項７】
前記信号維持回路は、前記バスインタフェースから前記電子回路へ出力される信号として、前記電子回路にリセットを指示するための信号の値を維持することを特徴とする請求項１〜６のいずれか１項に記載の制御システム。
【請求項８】
前記信号維持回路は、前記バスインタフェースから前記電子回路へ出力される信号として、前記電子回路に対する電源供給のオン／オフを指示するための信号の値を維持することを特徴とする請求項１〜７のいずれか１項に記載の制御システム。
【請求項９】
複数の情報処理装置間で送受信される信号を中継する中継回路と、
前記中継回路を制御するための制御信号をバスを通じて受信し、受信した制御信号に応じた信号を前記中継回路に出力するバスインタフェースと、
前記バスインタフェースから前記中継回路へ出力される信号の値を維持する信号維持回路と、
前記信号維持回路に前記中継回路への出力信号の値を維持させた後、前記バスインタフェースをリセットするリセット制御回路と、
を有することを特徴とする中継装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御システムおよび中継装置に関する。
【背景技術】
【０００２】
複数の電子回路間においてシリアル通信を行うためのバスとして、Ｉ2Ｃ（Inter Integrated Circuit）バスがある。Ｉ2Ｃバスは、例えば、メモリへのアクセス、温度センサなどの各種センサからの検出値の読み取り、電子回路の動作の監視や制御などに利用されている。
【０００３】
Ｉ2Ｃバスのようなシリアルバスに接続された複数の電子回路のうちの１つが異常停止した場合、他の電子回路がシリアルバスを通じた通信ができなくなる場合がある。このような状態からシリアルバスでの通信を復旧させるための技術として、シリアルバスに接続された電子回路を、シリアルバスとは別のリセット信号線を通じてリセットするものがある。また、電子回路とシリアルバスとの間にハングアップ検出回路を設け、ハングアップ検出回路が、電子回路がハングアップしたことを検知すると、その電子回路をシリアルバスから切り離すようにしたシステムもある。
【０００４】
さらに、シリアルバス上に複数のスイッチを配置しておき、シリアルバスでの通信が不可能になったときに、全スイッチをオフ状態にした後、スイッチを上流側から順次オンにすることで、障害発生箇所を特定できるようにしたシステムもある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００２−６３０８０号公報
【特許文献２】特開２０１０−５５４７４号公報
【特許文献３】特表２００４−５２８６２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、制御装置がバスを通じて電子回路の動作を制御するシステムでは、例えば、電子回路側のバスインタフェースは、バスを通じて制御装置からの制御信号を受信し、受信した制御信号に応じた信号を電子回路に出力する。このようなシステムにおいてバスが使用不可能になった場合、電子回路側のバスインタフェースがリセットされることで、バスを復旧させることができる。
【０００７】
しかしながら、電子回路側のバスインタフェースがリセットされると、バスインタフェースから電子回路への出力信号が途絶えてしまう。このため、電子回路は、自分自身に異常が発生していなくても、それ以前の動作を継続できなくなるという問題がある。例えば、バスインタフェースのリセットに伴って電子回路もリセットされてしまう。
【０００８】
１つの側面では、本発明は、バスの復旧処理時に制御対象の電子回路が動作を継続できるようにした制御システムおよび中継装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するために、電子回路、バスインタフェース、信号維持回路、リセット制御回路および制御装置を有する制御システムが提供される。この制御システムにおいて、バスインタフェースは、電子回路を制御するための制御信号をバスを通じて受信し、受信した制御信号に応じた信号を電子回路に出力する。信号維持回路は、バスインタフェースから電子回路へ出力される信号の値を維持する。リセット制御回路は、信号維持回路に電子回路への出力信号の値を維持させた後、バスインタフェースをリセットする。制御装置は、バスを通じて制御信号を出力することで電子回路を制御する。
【００１０】
また、上記目的を達成するために、中継回路、バスインタフェース、信号維持回路およびリセット制御回路を有する中継装置が提供される。この中継装置において、中継回路は、複数の情報処理装置間で送受信される信号を中継する。バスインタフェースは、中継回路を制御するための制御信号をバスを通じて受信し、受信した制御信号に応じた信号を中継回路に出力する。信号維持回路は、バスインタフェースから中継回路へ出力される信号の値を維持する。リセット制御回路は、信号維持回路に中継回路への出力信号の値を維持させた後、バスインタフェースをリセットする。
【発明の効果】
【００１１】
１態様によれば、バスの復旧処理時に制御対象の電子回路が動作を継続できる。
【図面の簡単な説明】
【００１２】
【図１】第１の実施の形態に係る制御システムの構成例とその動作例を示す図である。
【図２】第２の実施の形態に係るストレージシステムの全体構成例を示す図である。
【図３】ＳＶＣのハードウェア構成例を示す図である。
【図４】ＦＲＴのハードウェア構成例を示す図である。
【図５】ＦＲＴの参考例を示す図である。
【図６】ＦＲＴの内部において伝送される信号の例を示す図である。
【図７】信号維持回路の内部構成例を示す図である。
【図８】リセット制御回路の内部構成例を示す図である。
【図９】ＣＥの電源が投入されたときの処理例を示すシーケンス図である。
【図１０】ＣＥの電源が投入されたときの信号の値の遷移例を示すタイミングチャートである。
【図１１】運用系のＳＶＣが異常停止したときの処理例を示すシーケンス図である。
【図１２】運用系のＳＶＣが異常停止したときの信号の値の遷移例を示すタイミングチャートである。
【発明を実施するための形態】
【００１３】
以下、実施の形態について図面を参照して詳細に説明する。
〔第１の実施の形態〕
図１は、第１の実施の形態に係る制御システムの構成例とその動作例を示す図である。図１の制御システム１は、電子回路１１、バスインタフェース１２、信号維持回路１３、リセット制御回路１４および制御回路を有する。図１の制御システム１は、例として、２つの制御装置２１，２２を有している。
【００１４】
電子回路１１は、制御装置２１，２２からの制御対象の回路である。制御装置２１，２２は、バス３１を通じて制御信号を送信することにより、電子回路１１を制御する。なお、本実施の形態では例として、制御装置２１，２２の一方は運用系として動作し、他方は待機系として動作する。
【００１５】
バス３１は、例えば、Ｉ2Ｃバスなどのシリアルバスである。バス３１は、バスインタフェース１２に接続されている。バスインタフェース１２は、運用系の制御装置からバス３１を通じて送信された制御信号を受信し、受信した制御信号に応じた信号を電子回路１１に出力する。
【００１６】
信号維持回路１３は、バスインタフェース１２から電子回路１１に出力される信号の伝送路上に設けられている。信号維持回路１３は、リセット制御回路１４からの指示に応じて、バスインタフェース１２から電子回路１１に出力される信号の値を、リセット制御回路１４から指示を受けた時点での値に維持する。
【００１７】
リセット制御回路１４は、バス３１が使用不可能になったとき、信号維持回路１３に電子回路１１への出力信号の値を維持させ、その後に、バスインタフェース１２をリセットする。バスインタフェース１２がリセットされることで、バス３１は復旧し、使用可能な状態になる。また、リセット制御回路１４による上記処理により、バスインタフェース１２のリセットによってバスインタフェース１２から電子回路１１に出力される信号が途絶える事態が回避される。従って、バス３１が復旧するまでの間、電子回路１１が動作を継続できるようになる。
【００１８】
以下、運用系の制御装置が異常発生によって停止することによりバス３１が使用不可能になる場合を想定して、制御システム１における処理を、順を追って説明する。
なお、以下の説明では例として、初期状態では、制御装置２１が運用系として動作し、制御装置２２が待機系として動作するものとする。待機系として動作する制御装置２１は、制御装置２１の動作が停止すると、運用系に遷移し、制御装置２１に代わって電子回路１１の制御を担う。さらに、制御装置２２とリセット制御回路１４とは、バスインタフェース１２のリセットを指示するためのリセット信号線３２によって接続されているものとする。
【００１９】
運用系として動作している制御装置２１とバスインタフェース１２とが、バス３１を通じて通信している状態で、制御装置２１が異常の発生などによって停止すると、バス３１が解放されなくなる。この状態では、制御装置２２は、バス３１を通じて通信することができず、電子回路１１の制御を引き継ぐことができない。
【００２０】
制御装置２２は、制御装置２１が停止したことを検知すると（ステップＳ１）、リセット信号線３２を通じてリセット指示を出力する（ステップＳ２）。リセット制御回路１４は、リセット指示を受け付けると、信号維持回路１３に、電子回路１１への出力信号の値を維持するように指示する（ステップＳ３）。信号維持回路１３は、リセット制御回路１４から指示を受けた時点でバスインタフェース１２から電子回路１１に出力されている信号の値を、そのまま維持する。入力される信号の値が維持されることで、電子回路１１は、制御装置２１が停止する直前と同じ制御状態で、動作を継続することができる。
【００２１】
リセット制御回路１４は、信号維持回路１３に出力値の維持を指示した後、バスインタフェース１２をリセットする（ステップＳ４）。例えば、リセット制御回路１４は、リセット信号線３２を通じてリセット指示を受けてから所定時間後に、バスインタフェース１２をリセットする。
【００２２】
バスインタフェース１２がリセットされることで、バス３１は解放される。制御装置２２は、バス３１を通じて制御信号を送信することで、制御装置２１に代わって電子回路１１を制御する。なお、制御装置２２による電子回路１１の制御が開始される際には、例えばリセット制御回路１４からの指示によって、信号維持回路１３は、出力値を維持する状態を解除する。これにより、制御装置２２からの制御信号に応じた信号が、バスインタフェース１２から電子回路１１に伝送されるようになる。
【００２３】
以上の制御システム１によれば、制御装置２２の停止によってバス３１が使用不可能になったとき、電子回路１１の動作を継続させたまま、バスインタフェース１２をリセットしてバス３１を復旧させることができる。また、制御装置２２は、電子回路１１の動作を継続させたまま、電子回路１１の制御を制御装置２１から引き継ぐことができる。
【００２４】
〔第２の実施の形態〕
図２は、第２の実施の形態に係るストレージシステムの全体構成例を示す図である。ストレージシステム１００は、ＣＥ（Controller Enclosure）１１０とＤＥ（Drive Enclosure）１２０とを含む。
【００２５】
ＣＥ１１０は、ＣＭ（Controller Module）１１１ａ，１１１ｂ、ＦＲＴ（Frontend Router）２００、ＳＶＣ（Service Controller）３００ａ，３００ｂおよびＰＳＵ（Power Supply Unit）４００を備えている。
【００２６】
ＣＭ１１１ａ，１１１ｂのそれぞれは、ＣＰＵ（Central Processing Unit）、メモリなどを備えるコンピュータ装置として実現される。また、ＣＭ１１１ａ，１１１ｂのそれぞれには、ホスト装置４０１，４０２が接続されている。
【００２７】
ＣＭ１１１ａ，１１１ｂのそれぞれは、ホスト装置４０１，４０２からのＩ／Ｏ（In/Out）要求に応じて、ＤＥ１２０内の記憶装置に対するデータの読み書きを行う。ＣＭ１１１ａ，１１１ｂは、例えば、ＤＥ１２０内の記憶装置によって実現される物理記憶領域をＲＡＩＤ（Redundant Arrays of Inexpensive Disks）によって管理し、これらの物理記憶領域に対するアクセスを制御する。また、ＣＭ１１１ａ，１１１ｂは、ホスト装置４０１，４０２からのＩ／Ｏ要求に応じてＤＥ１２０内の記憶装置に対するアクセス制御を行う際に、ＤＥ１２０内の記憶装置に記憶されたデータの一部を、自装置内部のメモリにキャッシュする。
【００２８】
ＦＲＴ２００は、ＰＣＩｅ（Peripheral Components Interconnect express）バス１１２を介してＣＭ１１１ａ，１１１ｂと接続されている。ＦＲＴ２００は、内部にＰＣＩｅスイッチを備え、ＣＭ１１１ａとＣＭ１１１ｂとの間でＰＣＩｅバス１１２を通じて送受信されるデータを中継する。
【００２９】
ＣＭ１１１ａとＣＭ１１１ｂとは、ＦＲＴ２００を介して相互に通信可能になっている。例えば、ＣＭ１１１ａは、自装置内のメモリに格納されている、ＤＥ１２０の記憶装置内のデータをキャッシュしたキャッシュデータを、ＦＲＴ２００を通じて他方のＣＭ１１１ｂのメモリに格納し、キャッシュデータを二重化する。この場合、ＣＭ１１１ａが異常発生によって停止したとき、ＣＭ１１１ｂは、自装置のメモリに二重化されているＣＭ１１１ａのキャッシュデータを用いて、ＣＭ１１１ａが実行していたＤＥ１２０に対するアクセス制御処理を引き継ぐことができる。
【００３０】
ＦＲＴ２００は、Ｉ2Ｃバス１１３を介してＳＶＣ３００ａ，３００ｂに接続されている。ＳＶＣ３００ａ，３００ｂは、ＦＲＴ２００内のＰＣＩｅスイッチの動作制御や、ＰＣＩｅスイッチの動作の監視を行う。ここで、ＳＶＣ３００ａ，３００ｂとＦＲＴ２００とによって、ＦＲＴ２００内のＰＣＩｅスイッチを制御するための制御システムが実現されている。
【００３１】
ＳＶＣ３００ａ，３００ｂは、Ｉ2Ｃバス１１３におけるマスタ装置として動作し、ＦＲＴ２００が備える、Ｉ2Ｃバス１１３に対するバスインタフェースは、Ｉ2Ｃバス１１３におけるスレーブ装置として動作する。また、ＳＶＣ３００ａ，３００ｂはそれぞれ同じ機能を備え、ＳＶＣ３００ａ，３００ｂのうちの一方が運用系として動作し、他方が待機系として動作する。本実施の形態では、初期状態では、ＳＶＣ３００ａが運用系として動作し、ＳＶＣ３００ｂが待機系として動作するものとする。
【００３２】
待機系として動作中のＳＶＣ３００ｂは、ＳＶＣ３００ａが正常に動作しているかを監視する。そして、ＳＶＣ３００ｂは、ＳＶＣ３００ａの動作が異常停止したことを検知すると、運用系としての動作を開始して、ＦＲＴ２００内のＰＣＩｅスイッチの動作制御および動作の監視の各動作を引き継ぐ。
【００３３】
ＰＳＵ４００は、外部から供給されるＡＣ（Alternating Current）電源電圧をＤＣ（Direct Current）電圧に変換し、ＣＥ１１０の内部の装置に対して供給する。
ＤＥ１２０は、ＣＭ１１１ａ，１１１ｂからのアクセス制御対象となる複数の記憶装置を備える。本実施の形態のＤＥ１２０は、記憶装置としてＨＤＤ（Hard Disk Drive）またはＳＳＤ（Solid State Drive）を備えるディスクアレイ装置である。
【００３４】
図３は、ＳＶＣのハードウェア構成例を示す図である。なお、ＳＶＣ３００ａ，３００ｂはともに同様のハードウェア構成を有するので、以下の説明では、代表してＳＶＣ３００ａについてのみ説明する。
【００３５】
ＳＶＣ３００ａは、ＣＰＵ３０１によって装置全体が制御されている。ＣＰＵ３０１には、バス３０７を介して、ＲＡＭ（Random Access Memory）３０２および複数の周辺機器が接続されている。ＲＡＭ３０２は、ＳＶＣ３００ａの主記憶装置として使用され、ＣＰＵ３０１に実行させるファームウェアプログラムの少なくとも一部や、このファームウェアプログラムによる処理に必要な各種データを一時的に記憶する。
【００３６】
ＣＰＵ３０１には、周辺機器の例として、不揮発性メモリ３０３、バスインタフェース３０４、リセット出力回路３０５および監視回路３０６が接続されている。
不揮発性メモリ３０３は、ＳＶＣ３００ａの二次記憶装置として使用され、ＣＰＵ３０１によって実行されるファームウェアプログラムやその実行に必要な各種のデータなどを記憶する。
【００３７】
バスインタフェース３０４は、Ｉ2Ｃバス１１３を通じてデータを送受信するインタフェース処理を実行する。なお、Ｉ2Ｃバス１１３は、データ信号線とクロック信号線とを含む。バスインタフェース３０４は、ＣＰＵ３０１からの制御の下で、データ信号線を通じて制御データを送信し、また、データ信号線を通じてスレーブ装置（ＦＲＴ２００のバスインタフェース）から送信された応答データを受信する。また、バスインタフェース３０４は、制御データの送信時や応答データの受信時に、クロック信号線にクロック信号を出力する。
【００３８】
また、ＳＶＣ３００ａには、ＦＲＴ２００のバスインタフェースのリセットを指示するためのリセット信号線１１４が接続されている。リセット出力回路３０５は、ＣＰＵ３０１からの指示に応じて、リセット信号線１１４にリセット指示信号を出力する。
【００３９】
また、ＳＶＣ３００ａとＳＶＣ３００ｂとは、互いの動作を監視するための監視用信号線１１５を介して接続されている。監視回路３０６は、他方のＳＶＣ３００ｂの監視回路との間で、監視用信号線１１５を通じて監視信号を送受信する。例えば、運用系として動作するＳＶＣのＣＰＵは、自装置の監視回路に、他方のＳＶＣに対して監視信号を一定周期で送信させる。待機系として動作するＳＶＣの監視回路は、他方のＳＶＣから監視信号を受信すると、その旨を自装置のＣＰＵに通知する。待機系として動作するＳＶＣのＣＰＵは、自装置の監視回路が一定時間以上監視信号を受信しない場合に、他方のＳＶＣが異常停止したと判定する。
【００４０】
図４は、ＦＲＴのハードウェア構成例を示す図である。ＦＲＴ２００は、ＰＣＩｅスイッチ２１０、ＤＤＣ（DC/DC Converter）２２０、Ｉ2Ｃ−ＧＰＩＯ（General Purpose Input/Output）２３０、信号維持回路２４０およびリセット制御回路２５０を備えている。
【００４１】
ＰＣＩｅスイッチ２１０は、ＣＭ１１１ａとＣＭ１１１ｂとの間でＰＣＩｅバス１１２を通じて送受信されるデータを中継する。また、ＰＣＩｅスイッチ２１０は、Ｉ2Ｃ−ＧＰＩＯ２３０との間で信号を送受信することができる。ＰＣＩｅスイッチ２１０は、Ｉ2Ｃ−ＧＰＩＯ２３０からの制御信号に応じた処理を実行したり、Ｉ2Ｃ−ＧＰＩＯ２３０から要求された情報を返信する。例えば、ＰＣＩｅスイッチ２１０は、Ｉ2Ｃ−ＧＰＩＯ２３０からのリセット指示に応じて、自分自身をリセットする。また、ＰＣＩｅスイッチ２１０は、Ｉ2Ｃ−ＧＰＩＯ２３０からの要求に応じて、温度情報や駆動電圧情報など、自分自身の状態を示す情報を返信する。
【００４２】
ＤＤＣ２２０は、ＰＳＵ４００からのＤＣ電圧を所定の電圧に変換し、ＰＣＩｅスイッチ２１０に対して駆動電圧として供給する。また、ＤＤＣ２２０のオン／オフは、Ｉ2Ｃ−ＧＰＩＯ２３０から出力される制御信号（後述するパワーオン信号）によって制御される。
【００４３】
Ｉ2Ｃ−ＧＰＩＯ２３０は、Ｉ2Ｃバス１１３に対するバスインタフェース回路である。Ｉ2Ｃ−ＧＰＩＯ２３０は、Ｉ2Ｃバス１１３におけるスレーブ回路として動作し、ＳＶＣ３００ａ，３００ｂのうちの一方からＩ2Ｃバス１１３を通じて制御信号を受信し、受信した制御信号に対する応答信号を送信する。
【００４４】
また、Ｉ2Ｃ−ＧＰＩＯ２３０は、ＳＶＣ３００ａ，３００ｂのうちの一方からＩ2Ｃバス１１３を通じて制御信号を受信すると、受信した制御信号を、ＦＲＴ２００の内部で使用される制御信号に変換して、ＰＣＩｅスイッチ２１０やＤＤＣ２２０に送信する。例えば、Ｉ2Ｃ−ＧＰＩＯ２３０は、Ｉ2Ｃバス１１３を通じてＤＤＣ２２０をオフにするための指示を受けると、ＤＤＣ２２０に送信するパワーオン信号をハイレベルからローレベルに変化させる。
【００４５】
また、Ｉ2Ｃ−ＧＰＩＯ２３０は、ＳＶＣ３００ａ，３００ｂのいずれかからの指示に応じて、信号維持回路２４０からＰＣＩｅスイッチ２１０およびＤＤＣ２２０に送信されている信号を取り込むことが可能になっている。
【００４６】
また、Ｉ2Ｃ−ＧＰＩＯ２３０は、リセット制御回路２５０から出力されるリセット信号がローレベルからハイレベルに変化すると、リセットされる。後述するように、Ｉ2Ｃ−ＧＰＩＯ２３０と通信しているＳＶＣが異常停止した場合や、Ｉ2Ｃ−ＧＰＩＯ２３０が異常停止した場合には、Ｉ2Ｃバス１１３を通じた通信が不可能になる。このような状態において、Ｉ2Ｃ−ＧＰＩＯ２３０がリセットされることで、Ｉ2Ｃバス１１３が復旧し、ＳＶＣ３００ａ，３００ｂのいずれかとＩ2Ｃ−ＧＰＩＯ２３０とがＩ2Ｃバス１１３を通じて通信できるようになる。
【００４７】
信号維持回路２４０は、Ｉ2Ｃ−ＧＰＩＯ２３０からＰＣＩｅスイッチ２１０およびＤＤＣ２２０に送信される信号の伝送路上に配置されている。信号維持回路２４０は、Ｉ2Ｃ−ＧＰＩＯ２３０からＰＣＩｅスイッチ２１０およびＤＤＣ２２０に送信される信号の値を、リセット制御回路２５０から指示を受けた時点での出力値に維持する。
【００４８】
リセット制御回路２５０は、リセット信号線１１４を介してＳＶＣ３００ａ，３００ｂと接続されている。リセット制御回路２５０は、リセット信号線１１４を通じてＩ2Ｃ−ＧＰＩＯ２３０をリセットするための指示を受けたとき、信号維持回路２４０に出力信号を維持させるとともに、Ｉ2Ｃ−ＧＰＩＯ２３０をリセットさせるタイミングを遅延させる。このような処理により、リセット制御回路２５０は、Ｉ2Ｃ−ＧＰＩＯ２３０のリセット動作が完了するまでの間に、ＰＣＩｅスイッチ２１０およびＤＤＣ２２０がＩ2Ｃ−ＧＰＩＯ２３０から受信している信号が途絶え、ＰＣＩｅスイッチ２１０の動作が停止してしまう事態を回避する。
【００４９】
ここで、図５は、ＦＲＴの参考例を示す図である。この図５を用いて、Ｉ2Ｃバス１１３が使用不能になった場合の問題点について説明する。なお、図５では、図４に対応する構成要素には同じ符号を付して示している。
【００５０】
図５に示すＦＲＴ５００は、図４に示したＦＲＴ２００から信号維持回路２４０およびリセット制御回路２５０を取り除いた場合の構成例である。すなわち、Ｉ2Ｃ−ＧＰＩＯ２３０ａからの出力信号は、信号維持回路２４０を経由することなく、ＰＣＩｅスイッチ２１０およびＤＤＣ２２０に送信される。また、Ｉ2Ｃ−ＧＰＩＯ２３０ａは、信号維持回路２４０からの出力信号を取り込む機能を持たない点で、図４のＩ2Ｃ−ＧＰＩＯ２３０と異なる。さらに、Ｉ2Ｃ−ＧＰＩＯ２３０ａは、リセット信号線１１４に直接接続されており、リセット信号線１１４を通じた指示に応じてリセットされる。
【００５１】
ここで、図５では、Ｉ2Ｃ−ＧＰＩＯ２３０ａがＰＣＩｅスイッチ２１０に出力する制御信号の例として、リセットを指示するためのリセット信号ＲＳＴを示す。例えば、リセット信号ＲＳＴがハイレベルからローレベルになったとき、ＰＣＩｅスイッチ２１０がリセットされる。
【００５２】
また、図５では、Ｉ2Ｃ−ＧＰＩＯ２３０ａがＤＤＣ２２０に出力する制御信号の例として、ＰＣＩｅスイッチ２１０への駆動電圧の供給動作を制御するためのパワーオン信号Ｐｏｎを示す。例えば、ＤＤＣ２２０は、パワーオン信号Ｐｏｎがハイレベルのとき、ＰＣＩｅスイッチ２１０に駆動電圧を供給し、パワーオン信号Ｐｏｎがローレベルのとき、ＰＣＩｅスイッチ２１０への駆動電圧の供給を停止する。
【００５３】
以下、上記のようなＦＲＴ５００に対してＳＶＣ３００ａ，３００ｂが接続されている場合の動作について考える。ここでは、運用系として動作するＳＶＣ３００ａが異常停止した場合を想定する。待機系として動作していたＳＶＣ３００ｂは、ＳＶＣ３００ａが異常停止したことを検知すると、運用系に遷移して、ＦＲＴ５００内のＰＣＩｅスイッチ２１０の制御および監視の処理を引き継ごうとする。しかし、ＳＶＣ３００ａが停止すると、Ｉ2Ｃバス１１３が解放されなくなり、ＳＶＣ３００ｂは、Ｉ2Ｃバス１１３を通じて通信できない。
【００５４】
例えば、Ｉ2Ｃバス１１３におけるマスタ装置であるＳＶＣ３００ａが停止すると、Ｉ2Ｃバス１１３のクロック信号線に対するクロック信号の送出が停止する。スレーブ装置であるＩ2Ｃ−ＧＰＩＯ２３０ａがデータを送信しているときに、クロック信号の送出が停止してしまうと、Ｉ2Ｃ−ＧＰＩＯ２３０ａによるデータ送信動作も停止して、データ信号線の電位がハイレベルまたはローレベルのいずれかに固定されてしまう。この状態では、Ｉ2Ｃバス１１３は使用不可能になり、運用系に遷移したＳＶＣ３００ｂはＩ2Ｃバス１１３を通じて通信できない。
【００５５】
そこで、ＳＶＣ３００ｂは、リセット信号線１１４を通じてＩ2Ｃ−ＧＰＩＯ２３０ａのリセットを指示する。Ｉ2Ｃ−ＧＰＩＯ２３０ａがリセットされることにより、Ｉ2Ｃバス１１３は復旧する。しかしながら、Ｉ2Ｃ−ＧＰＩＯ２３０ａがリセットされると、Ｉ2Ｃ−ＧＰＩＯ２３０ａからＰＣＩｅスイッチ２１０およびＤＤＣ２２０への出力信号が途絶えてしまう。このため、ＰＣＩｅスイッチ２１０は、自分自身に異常が発生していなくても、それ以前の動作を継続できなくなってしまう。
【００５６】
例えば、Ｉ2Ｃ−ＧＰＩＯ２３０ａのリセットによりリセット信号ＲＳＴがローレベルになってしまうことで、ＰＣＩｅスイッチ２１０もリセットされてしまう。また、Ｉ2Ｃ−ＧＰＩＯ２３０ａのリセットによりパワーオン信号Ｐｏｎがローレベルになってしまうことで、ＰＣＩｅスイッチ２１０への駆動電圧の供給が停止してしまう。いずれの場合でも、ＰＣＩｅスイッチ２１０の動作は停止する。ＰＣＩｅスイッチ２１０が停止すると、ＣＭ１１１ａとＣＭ１１１ｂとが通信できなくなり、キャッシュデータを二重化できないなど、ストレージシステム１００における動作に影響が生じてしまう。
【００５７】
このような問題に対し、図４に示した本実施の形態のＦＲＴ２００では、ＳＶＣ３００ｂからリセットが指示されたとき、リセット制御回路２５０は、Ｉ2Ｃ−ＧＰＩＯ２３０をリセットする前に、信号維持回路２４０に、ＰＣＩｅスイッチ２１０およびＤＤＣ２２０への出力信号の値を維持させる。これにより、Ｉ2Ｃ−ＧＰＩＯ２３０のリセットによってＰＣＩｅスイッチ２１０およびＤＤＣ２２０への出力信号が途絶える事態が回避され、ＰＣＩｅスイッチ２１０は、Ｉ2Ｃ−ＧＰＩＯ２３０のリセット処理中においても動作を継続できるようになる。
【００５８】
次に、図６は、ＦＲＴの内部において伝送される信号の例を示す図である。
以下の説明では、Ｉ2Ｃ−ＧＰＩＯ２３０が出力する制御信号として、リセット信号ＲＳＴおよびパワーオン信号Ｐｏｎを例示する。リセット信号ＲＳＴは、信号維持回路２４０を介してＰＣＩｅスイッチ２１０に供給され、パワーオン信号Ｐｏｎは、信号維持回路２４０を介してＤＤＣ２２０に供給される。ＰＣＩｅスイッチ２１０は、リセット信号ＲＳＴがハイレベルからローレベルになったとき、リセットされる。また、ＤＤＣ２２０は、パワーオン信号Ｐｏｎがハイレベルのとき、ＰＣＩｅスイッチ２１０に駆動電圧を供給し、パワーオン信号Ｐｏｎがローレベルのとき、ＰＣＩｅスイッチ２１０への駆動電圧の供給を停止する。
【００５９】
信号維持回路２４０は、リセット制御回路２５０からのイネーブル信号ＥＮ２がハイレベルのとき、Ｉ2Ｃ−ＧＰＩＯ２３０から出力される制御信号（ここではリセット信号ＲＳＴおよびパワーオン信号Ｐｏｎ）を、そのまま出力する。また、信号維持回路２４０は、イネーブル信号ＥＮ２がローレベルのとき、ローレベルになった時点でＩ2Ｃ−ＧＰＩＯ２３０から出力されていた制御信号の値を、イネーブル信号ＥＮ２がハイレベルになるまで維持する。
【００６０】
Ｉ2Ｃ−ＧＰＩＯ２３０は、リセット制御回路２５０からのリセット信号Ｉ2Ｃ−ＲＳＴ２がローレベルからハイレベルになったとき、リセットされる。また、Ｉ2Ｃ−ＧＰＩＯ２３０は、Ｉ2Ｃバス１１３を通じてＳＶＣから指示を受けることで、リセット制御回路２５０に出力するイネーブル信号ＥＮ１をローレベルまたはハイレベルにする。Ｉ2Ｃ−ＧＰＩＯ２３０が通常動作状態にあるとき、イネーブル信号ＥＮ１はハイレベルになる。さらに、Ｉ2Ｃ−ＧＰＩＯ２３０は、ＳＶＣからの指示に応じて、信号維持回路２４０が出力している制御信号（ここではリセット信号ＲＳＴおよびパワーオン信号Ｐｏｎ）を取り込み、取り込んだ値を対応する制御信号として出力する。
【００６１】
リセット制御回路２５０は、リセット信号線１１４を通じてリセット信号Ｉ2Ｃ−ＲＳＴ１を受信する。リセット制御回路２５０は、リセット信号Ｉ2Ｃ−ＲＳＴ１の入力値を、所定時間だけ遅延させて、リセット信号Ｉ2Ｃ−ＲＳＴ２としてＩ2Ｃ−ＧＰＩＯ２３０に出力する。
【００６２】
また、リセット制御回路２５０は、リセット信号Ｉ2Ｃ−ＲＳＴ１がローレベルからハイレベルになったとき、イネーブル信号ＥＮ２をハイレベルからローレベルに変化させて、信号維持回路２４０に出力値を維持させる。その後、リセット制御回路２５０は、リセットされたＩ2Ｃ−ＧＰＩＯ２３０からのイネーブル信号ＥＮ１がローレベルからハイレベルに変化したとき、イネーブル信号ＥＮ２をハイレベルに変化させる。
【００６３】
図７は、信号維持回路の内部構成例を示す図である。信号維持回路２４０は、例えば、出力値を維持する制御信号の数だけのゲーテッドラッチ回路２４０ａ，２４０ｂ，・・・を備える。
【００６４】
ゲーテッドラッチ回路２４０ａは、例えば、４つのＮＡＮＤ（否定論理積）ゲート３４１〜２４４を有する。ＮＡＮＤゲート２４１の一方の入力端子ＩＮには、Ｉ2Ｃ−ＧＰＩＯ２３０からの制御信号が入力され、他方の入力端子には、リセット制御回路２５０からのイネーブル信号ＥＮ２が入力される。ＮＡＮＤゲート２４２の一方の入力端子には、ＮＡＮＤゲート２４１からの出力信号が入力され、他方の入力端子には、リセット制御回路２５０からのイネーブル信号ＥＮ２が入力される。ＮＡＮＤゲート２４３の一方の入力端子には、ＮＡＮＤゲート２４１からの出力信号が入力され、他方の入力端子には、ＮＡＮＤゲート２４４からの出力信号が入力される。ＮＡＮＤゲート２４４の一方の入力端子には、ＮＡＮＤゲート２４３からの出力信号が入力され、他方の入力端子には、ＮＡＮＤゲート２４２からの出力信号が入力される。ＮＡＮＤゲート２４３の出力信号は、出力端子ＯＵＴから出力される。
【００６５】
このような構成のゲーテッドラッチ回路２４０ａでは、イネーブル信号ＥＮ２がハイレベルのとき、出力端子ＯＵＴからの出力値は入力端子ＩＮに入力される制御信号の値と同じになる。また、イネーブル信号ＥＮ２がローレベルのとき、出力端子ＯＵＴからの出力値は、イネーブル信号ＥＮ２がローレベルに変化したときの入力端子ＩＮの値に維持される。
【００６６】
なお、信号維持回路２４０内のゲーテッドラッチ回路２４０ａ，２４０ｂ，・・・のそれぞれに対しては、共通のイネーブル信号ＥＮ２が入力される。また、ゲーテッドラッチ回路の回路構成としては、他の構成を採用することもできる。
【００６７】
図８は、リセット制御回路の内部構成例を示す図である。リセット制御回路２５０は、例えば、ＡＮＤ（論理積）ゲート２５１およびフリップフロップ（ＦＦ）２５２を備える。
【００６８】
ＡＮＤゲート２５１の一方の入力端子には、Ｉ2Ｃ−ＧＰＩＯ２３０からのイネーブル信号ＥＮ１が入力され、他方の入力端子には、リセット信号Ｉ2Ｃ−ＲＳＴ１の反転信号が入力される。ＡＮＤゲート２５１からの出力信号は、イネーブル信号ＥＮ２として信号維持回路２４０に出力される。
【００６９】
このＡＮＤゲート２５１により、イネーブル信号ＥＮ２は次のように変化する。イネーブル信号ＥＮ１がハイレベルで、かつ、リセット信号Ｉ2Ｃ−ＲＳＴ１がローレベルのとき、イネーブル信号ＥＮ２はハイレベルになる。イネーブル信号ＥＮ１がローレベルのとき、または、リセット信号Ｉ2Ｃ−ＲＳＴ１がハイレベルのとき、またはこれらの両方の条件が満たされるとき、イネーブル信号ＥＮ２はローレベルになる。なお、イネーブル信号ＥＮ１、リセット信号Ｉ2Ｃ−ＲＳＴ１およびイネーブル信号ＥＮ２の組み合わせが上記のようになるのであれば、リセット制御回路２５０が備える回路の構成は、図８の構成に限定されない。
【００７０】
フリップフロップ２５２のデータ入力端子には、リセット信号線１１４を通じてリセット信号Ｉ2Ｃ−ＲＳＴ１が入力され、クロック入力端子には、クロック信号ＣＬＫが入力される。なお、クロック信号ＣＬＫは、例えば、ＣＥ１１０の内部において生成される。フリップフロップ２５２は、リセット信号Ｉ2Ｃ−ＲＳＴ１をクロック信号ＣＬＫの周期分だけ遅延させ、リセット信号Ｉ2Ｃ−ＲＳＴ２としてＩ2Ｃ−ＧＰＩＯ２３０に出力する。
【００７１】
なお、リセット制御回路２５０は、例えば、フリップフロップを複数段直列に接続することで、リセット信号Ｉ2Ｃ−ＲＳＴ１を所定時間だけ遅延させてもよい。また、リセット制御回路２５０は、リセット信号Ｉ2Ｃ−ＲＳＴ１を遅延させる回路として、フリップフロップ以外の他の種類の遅延回路を備えていてもよい。
【００７２】
次に、ＳＶＣ３００ａ，３００ｂおよびＦＲＴ２００の動作について、シーケンス図およびタイミングチャートを用いて説明する。
まず、図９は、ＣＥの電源が投入されたときの処理例を示すシーケンス図である。
【００７３】
［ステップＳ１１］ＣＥ１１０に設けられた電源スイッチ（図示せず）に対する操作に応じて、ＣＥ１１０に電源が投入される。これにより、ＳＶＣ３００ａ，３００ｂおよびＩ2Ｃ−ＧＰＩＯ２３０が起動する。また、ＤＤＣ２２０、信号維持回路２４０およびリセット制御回路２５０に、駆動電圧が供給される。以下、ＳＶＣ３００ａが運用系として動作するものとする。
【００７４】
［ステップＳ１２］ＳＶＣ３００ａは、Ｉ2Ｃ−ＧＰＩＯ２３０のリセットを指示するために、リセット信号Ｉ2Ｃ−ＲＳＴ１を例えば一定時間ハイ（Ｈ）レベルにした後、ロー（Ｌ）レベルにする。
【００７５】
［ステップＳ１３］リセット制御回路２５０は、リセット信号Ｉ2Ｃ−ＲＳＴ１がハイレベルに変化してから一定時間後に、リセット信号Ｉ2Ｃ−ＲＳＴ２をハイレベルに変化させる。これにより、Ｉ2Ｃ−ＧＰＩＯ２３０がリセットされる。また、リセット制御回路２５０は、リセット信号Ｉ2Ｃ−ＲＳＴ１がローレベルに変化してから一定時間後に、リセット信号Ｉ2Ｃ−ＲＳＴ２をローレベルに変化させる。
【００７６】
なお、ステップＳ１２，Ｓ１３の処理の実行は、必須ではない。次のステップＳ１４の開始時点で、Ｉ2Ｃ−ＧＰＩＯ２３０が正常に起動しており、かつ、リセット信号Ｉ2Ｃ−ＲＳＴ１，Ｉ2Ｃ−ＲＳＴ２がともにローレベルとなっていればよい。
【００７７】
［ステップＳ１４］ＳＶＣ３００ａは、Ｉ2Ｃバス１１３を通じて、イネーブル信号ＥＮ１をハイレベルにするようにＩ2Ｃ−ＧＰＩＯ２３０に指示する。
［ステップＳ１５］Ｉ2Ｃ−ＧＰＩＯ２３０は、ＳＶＣ３００ａからの指示に応じて、イネーブル信号ＥＮ１をハイレベルにする。
【００７８】
［ステップＳ１６］リセット制御回路２５０は、イネーブル信号ＥＮ１がハイレベルに変化したことに応じて、イネーブル信号ＥＮ２をハイレベルに変化させる。
［ステップＳ１７］信号維持回路２４０は、イネーブル信号ＥＮ２がハイレベルに変化したことに応じて、Ｉ2Ｃ−ＧＰＩＯ２３０からの制御信号（リセット信号ＲＳＴおよびパワーオン信号Ｐｏｎ）をそのまま出力する状態になる。これにより、ＳＶＣ３００ａがＰＣＩｅスイッチ２１０およびＤＤＣ２２０の動作を制御できる状態になる。
【００７９】
［ステップＳ１８］ＳＶＣ３００ａは、Ｉ2Ｃバス１１３を通じて、ＰＣＩｅスイッチ２１０の電源オンおよびリセットを、Ｉ2Ｃ−ＧＰＩＯ２３０に指示する。
［ステップＳ１９］Ｉ2Ｃ−ＧＰＩＯ２３０は、ＳＶＣ３００ａからの指示に応じて、パワーオン信号Ｐｏｎをハイレベルに変化させる。これにより、ＤＤＣ２２０は、ＰＣＩｅスイッチ２１０への駆動電圧の供給を開始する。また、Ｉ2Ｃ−ＧＰＩＯ２３０は、リセット信号ＲＳＴを一定時間ローレベルにした後、ハイレベルにする。これにより、ＰＣＩｅスイッチ２１０がリセットされる。
【００８０】
［ステップＳ２０］ＳＶＣ３００ａがＩ2Ｃバス１１３を通じて制御信号を送信することによるＰＣＩｅスイッチ２１０およびＤＤＣ２２０の制御および監視処理が開始される。例えば、ＳＶＣ３００ａは、制御・監視対象回路であるＰＣＩｅスイッチ２１０およびＤＤＣ２２０の状態を示す状態情報を、ＰＣＩｅスイッチ２１０から取得する。状態情報としては、例えば、温度、駆動電圧などがある。また、ＳＶＣ３００ａは、取得した状態情報に基づき、制御・監視対象回路で異常が発生したと判定すると、異常が発生した回路をリセットする、あるいは異常が発生した回路の動作を停止させるなどの制御を行う。
【００８１】
図１０は、ＣＥの電源が投入されたときの信号の値の遷移例を示すタイミングチャートである。
図９のステップＳ１２の処理により、リセット制御回路２５０に入力されるリセット信号Ｉ2Ｃ−ＲＳＴ１は、タイミングＴ１１〜Ｔ１３の期間にハイレベルになる。リセット制御回路２５０から出力されるリセット信号Ｉ2Ｃ−ＲＳＴ２は、リセット信号Ｉ2Ｃ−ＲＳＴ１がハイレベルに変化したタイミングＴ１１から一定時間後のタイミングＴ１２において、ハイレベルに変化する。また、リセット信号Ｉ2Ｃ−ＲＳＴ２は、リセット信号Ｉ2Ｃ−ＲＳＴ１がローレベルに変化したタイミングＴ１３から一定時間後のタイミングＴ１４において、ローレベルに変化する。
【００８２】
Ｉ2Ｃ−ＧＰＩＯ２３０は、リセット信号Ｉ2Ｃ−ＲＳＴ２がハイレベルに変化したタイミングＴ１２においてリセットされる。Ｉ2Ｃ−ＧＰＩＯ２３０は、例えば、リセット信号Ｉ2Ｃ−ＲＳＴ２がハイレベルになっている間、制御信号の出力値を所定の初期値とする。
【００８３】
Ｉ2Ｃ−ＧＰＩＯ２３０がリセットされた後のタイミングＴ１５において、Ｉ2Ｃ−ＧＰＩＯ２３０は、ＳＶＣ３００ａからの指示に応じて、イネーブル信号ＥＮ１をハイレベルに変化させる。リセット制御回路２５０は、リセット信号Ｉ2Ｃ−ＲＳＴ１がローレベルで、かつ、イネーブル信号ＥＮ１がハイレベルになったことに応じて、イネーブル信号ＥＮ２をハイレベルに変化させる。これにより、信号維持回路２４０は、Ｉ2Ｃ−ＧＰＩＯ２３０からの制御信号をそのまま出力する状態になる。なお、信号維持回路２４０は、例えば、電源投入からタイミングＴ１５までの期間では、制御信号の出力値を所定の初期値にする。
【００８４】
上記のタイミングＴ１５での処理は、図９のステップＳ１３〜Ｓ１７に対応する。この後、ＳＶＣ３００ａからの指示に応じて、ＰＣＩｅスイッチ２１０の動作が開始され、ＳＶＣ３００ａは、ＰＣＩｅスイッチ２１０の動作を監視する。
【００８５】
次に、図１１は、運用系のＳＶＣが異常停止したときの処理例を示すシーケンス図である。
［ステップＳ３１］待機系として動作しているＳＶＣ３００ｂは、ＳＶＣ３００ａが異常停止したことを検知し、運用系としての動作を開始する。この状態では、Ｉ2Ｃバス１１３が使用不可能になっている。
【００８６】
［ステップＳ３２］ＳＶＣ３００ｂは、Ｉ2Ｃ−ＧＰＩＯ２３０のリセットを指示するために、リセット信号Ｉ2Ｃ−ＲＳＴ１をハイレベルに変化させる。
［ステップＳ３３］リセット制御回路２５０は、リセット信号Ｉ2Ｃ−ＲＳＴ１がハイレベルに変化したことに応じて、イネーブル信号ＥＮ２をローレベルに変化させる。
【００８７】
［ステップＳ３４］信号維持回路２４０は、出力する制御信号（リセット信号ＲＳＴおよびパワーオン信号Ｐｏｎ）の値を、イネーブル信号ＥＮ２がローレベルに変化した時点でＩ2Ｃ−ＧＰＩＯ２３０から入力されていた値に維持する。本実施の形態では、信号維持回路２４０は、リセット信号ＲＳＴおよびパワーオン信号Ｐｏｎをともにハイレベルに維持する。
【００８８】
［ステップＳ３５］リセット制御回路２５０は、ステップＳ３２でリセット信号Ｉ2Ｃ−ＲＳＴ１がハイレベルに変化してから一定時間後に、リセット信号Ｉ2Ｃ−ＲＳＴ２をハイレベルに変化させる。これにより、Ｉ2Ｃ−ＧＰＩＯ２３０がリセットされ、Ｉ2Ｃバス１１３が復旧する。
【００８９】
［ステップＳ３６］リセットされたＩ2Ｃ−ＧＰＩＯ２３０は、イネーブル信号ＥＮ１の値を初期値であるローレベルにする。
［ステップＳ３７］ＳＶＣ３００ｂは、リセット信号Ｉ2Ｃ−ＲＳＴ１をローレベルに変化させる。
【００９０】
［ステップＳ３８］リセット制御回路２５０は、リセット信号Ｉ2Ｃ−ＲＳＴ１がローレベルに変化してから一定時間後に、リセット信号Ｉ2Ｃ−ＲＳＴ２をローレベルに変化させる。
【００９１】
［ステップＳ３９］ＳＶＣ３００ｂは、Ｉ2Ｃバス１１３を通じて、Ｉ2Ｃ−ＧＰＩＯ２３０に対して、信号維持回路２４０からフィードバックされている制御信号の値を取り込んで通知するように指示する。
【００９２】
［ステップＳ４０］Ｉ2Ｃ−ＧＰＩＯ２３０は、ＳＶＣ３００ｂからの指示に応じて、信号維持回路２４０からフィードバックされている制御信号の値を取り込む。このとき取り込まれるフィードバック信号の値は、ステップＳ３４から信号維持回路２４０が出力を維持している値であり、ＳＶＣ３００ａが停止する直前の時点でＩ2Ｃ−ＧＰＩＯ２３０が出力していた値である。本実施の形態では、Ｉ2Ｃ−ＧＰＩＯ２３０は、リセット信号ＲＳＴの値としてハイレベルを示す「１」を、パワーオン信号Ｐｏｎの値としてハイレベルを示す「１」をそれぞれ取り込む。Ｉ2Ｃ−ＧＰＩＯ２３０は、取り込んだフィードバック信号の値を、Ｉ2Ｃバス１１３を通じてＳＶＣ３００ｂに通知する。
【００９３】
なお、信号維持回路２４０が出力している制御信号の値をＩ2Ｃ−ＧＰＩＯ２３０にフィードバックする構成としたことで、Ｉ2Ｃ−ＧＰＩＯ２３０は、リセットされる前に出力していた制御信号の値を簡単かつ確実に認識することができる。
【００９４】
［ステップＳ４１］ＳＶＣ３００ｂは、Ｉ2Ｃバス１１３を通じて、通知されたフィードバック信号の値をＩ2Ｃ−ＧＰＩＯ２３０に送信し、送信した値を対応する制御信号の値として再度設定するように、Ｉ2Ｃ−ＧＰＩＯ２３０に指示する。
【００９５】
［ステップＳ４２］Ｉ2Ｃ−ＧＰＩＯ２３０は、ＳＶＣ３００ｂからの指示に応じて、リセット信号ＲＳＴおよびパワーオン信号Ｐｏｎの出力値をともにハイレベルに設定する。
【００９６】
［ステップＳ４３］ＳＶＣ３００ｂは、Ｉ2Ｃバス１１３を通じて、イネーブル信号ＥＮ１をハイレベルにするようにＩ2Ｃ−ＧＰＩＯ２３０に指示する。このステップＳ４３の処理の目的は、Ｉ2Ｃ−ＧＰＩＯ２３０から信号維持回路２４０を介してＰＣＩｅスイッチ２１０およびＤＤＣ２２０に伝達される制御信号の状態を、ＳＶＣ３００ａが停止する直前の状態に戻すことである。
【００９７】
［ステップＳ４４］Ｉ2Ｃ−ＧＰＩＯ２３０は、ＳＶＣ３００ｂからの指示に応じて、イネーブル信号ＥＮ１をハイレベルに変化させる。
［ステップＳ４５］リセット制御回路２５０は、イネーブル信号ＥＮ１がハイレベルに変化したことに応じて、イネーブル信号ＥＮ２をハイレベルに変化させる。
【００９８】
［ステップＳ４６］信号維持回路２４０は、イネーブル信号ＥＮ２がハイレベルに変化したことに応じて、出力信号の維持動作を終了し、Ｉ2Ｃ−ＧＰＩＯ２３０から出力されている制御信号の値をそのまま出力する。このとき、信号維持回路２４０から出力されるリセット信号ＲＳＴおよびパワーオン信号Ｐｏｎの値は、イネーブル信号ＥＮ２がハイレベルに変化する前と同じハイレベルになる。
【００９９】
Ｉ2Ｃ−ＧＰＩＯ２３０から出力されるイネーブル信号ＥＮ１がハイレベルになることで、信号維持回路２４０に出力信号の維持動作を終了させるタイミングをリセット制御回路２５０が認識する構成としたことで、リセット制御回路２５０をＩ2Ｃバス１１３に接続しなくてもリセット制御回路２５０が上記タイミングを認識できるようになる。従って、リセット制御回路２５０の構成を簡易化することができる。
【０１００】
なお、Ｉ2Ｃ−ＧＰＩＯ２３０は、例えば、ステップＳ４２でリセット信号ＲＳＴおよびパワーオン信号Ｐｏｎの出力値をともにハイレベルにした後、ＳＶＣ３００ｂからの指示を受けずに、自立的にイネーブル信号ＥＮ１をハイレベルに変化させてもよい。
【０１０１】
以上のステップＳ４６までの処理によれば、ＳＶＣ３００ｂが停止してからステップＳ４６までの間、信号維持回路２４０から出力されるリセット信号ＲＳＴおよびパワーオン信号Ｐｏｎはともにハイレベルに維持される。このため、ＳＶＣ３００ｂが停止したことや、Ｉ2Ｃバス１１３を解放するためのＩ2Ｃ−ＧＰＩＯ２３０のリセット動作が、ＰＣＩｅスイッチ２１０の信号中継動作に何ら影響を与えない。従って、ＰＣＩｅスイッチ２１０は信号中継動作を継続でき、ＣＭ１１１ａ，１１１ｂによるＩ／Ｏアクセス制御も正常に実行され続ける。
【０１０２】
［ステップＳ４７］ＳＶＣ３００ｂは、Ｉ2Ｃバス１１３を通じて制御信号を送信することによるＰＣＩｅスイッチ２１０およびＤＤＣ２２０の制御および監視処理を開始する。すなわち、ＳＶＣ３００ｂは、ＳＶＣ３００ａが実行していた制御および監視処理を引き継ぐ。
【０１０３】
なお、以上の図１１の処理では、Ｉ2Ｃ−ＧＰＩＯ２３０は、ＳＶＣ３００ｂからの指示に応じて、信号維持回路２４０からのフィードバック信号の値を取り込んでＳＶＣ３００ｂに通知し（ステップＳ３９，Ｓ４０）、その後、ＳＶＣ３００ｂから通知された値を制御信号の出力値として設定した（ステップＳ４１，Ｓ４２）。しかしながら、例えば、Ｉ2Ｃ−ＧＰＩＯ２３０は、フィードバック信号を取り込んだ後、ＳＶＣ３００ｂからの指示を待たずに、取り込んだ信号の値を制御信号の出力値に設定するようにしてもよい。
【０１０４】
また、他の方法として、信号維持回路２４０からのフィードバック信号の値を取り込む機能をＩ2Ｃ−ＧＰＩＯ２３０が持たないようにすることもできる。この場合例えば、待機系として動作するＳＶＣ３００ｂは、運用系として動作するＳＶＣ３００ａがＩ2Ｃ−ＧＰＩＯ２３０に送信する制御信号を監視し、これらの制御信号の履歴をＲＡＭに記録する。ＳＶＣ３００ｂは、ＳＶＣ３００ａが停止したことを検知すると、ＲＡＭに記録された履歴を解析し、Ｉ2Ｃ−ＧＰＩＯ２３０から出力されるリセット信号ＲＳＴおよびパワーオン信号Ｐｏｎの最新の値を判定する。ＳＶＣ３００ｂは、リセット信号ＲＳＴおよびパワーオン信号Ｐｏｎを、判定した最新の値にするような制御信号を、Ｉ2Ｃバス１１３を通じてＩ2Ｃ−ＧＰＩＯ２３０に送信する。これにより、ステップＳ４６で信号維持回路２４０での出力信号の維持動作が解除される直前において、信号維持回路２４０が出力するリセット信号ＲＳＴおよびパワーオン信号Ｐｏｎの各値と、Ｉ2Ｃ−ＧＰＩＯ２３０が出力するリセット信号ＲＳＴおよびパワーオン信号Ｐｏｎの各値とを一致させることができる。
【０１０５】
図１２は、運用系のＳＶＣが異常停止したときの信号の値の遷移例を示すタイミングチャートである。
図１１のステップＳ３２の処理により、リセット制御回路２５０に入力されるリセット信号Ｉ2Ｃ−ＲＳＴ１は、タイミングＴ２１においてハイレベルになる。リセット制御回路２５０は、リセット信号Ｉ2Ｃ−ＲＳＴ１がハイレベルに変化したことに応じて、イネーブル信号ＥＮ２をローレベルに変化させる。信号維持回路２４０は、リセット信号ＲＳＴおよびパワーオン信号Ｐｏｎの各値を、タイミングＴ２１の時点でＩ2Ｃ−ＧＰＩＯ２３０から入力されていた値（ハイレベル）に維持する。
【０１０６】
また、リセット制御回路２５０は、リセット信号Ｉ2Ｃ−ＲＳＴ１がハイレベルに変化してから所定時間後のタイミングＴ２２において、リセット信号Ｉ2Ｃ−ＲＳＴ２をハイレベルに変化させる。これにより、Ｉ2Ｃ−ＧＰＩＯ２３０がリセットされ、Ｉ2Ｃバスが復旧する。また、リセットされたＩ2Ｃ−ＧＰＩＯ２３０は、イネーブル信号ＥＮ１をローレベルにするとともに、出力する制御信号の値を所定の初期値にする。
【０１０７】
また、図１１のステップＳ３７の処理により、リセット制御回路２５０に入力されるリセット信号Ｉ2Ｃ−ＲＳＴ１は、タイミングＴ２３においてローレベルになる。リセット制御回路２５０は、リセット信号Ｉ2Ｃ−ＲＳＴ１がローレベルに変化してから所定時間後のタイミングＴ２４において、リセット信号Ｉ2Ｃ−ＲＳＴ２をローレベルに変化させる。Ｉ2Ｃ−ＧＰＩＯ２３０は、制御信号の出力値を初期値にしていた状態から、ＳＶＣ３００ｂからの指示に応じた制御信号を出力する状態に遷移する。
【０１０８】
ここで、図１１のステップＳ３９〜Ｓ４１の処理により、Ｉ2Ｃ−ＧＰＩＯ２３０は、タイミングＴ２５において、出力するリセット信号ＲＳＴおよびパワーオン信号Ｐｏｎの各値を、リセットされる前に出力していた値であるハイレベルに変化させる。その後、タイミングＴ２６において、Ｉ2Ｃ−ＧＰＩＯ２３０は、ＳＶＣ３００ｂからの指示に応じてイネーブル信号ＥＮ１をハイレベルに変化させる。リセット信号Ｉ2Ｃ−ＲＳＴ１がローレベル、かつ、イネーブル信号ＥＮ１がハイレベルになることで、リセット制御回路２５０は、イネーブル信号ＥＮ２をハイレベルに変化させる。これにより、信号維持回路２４０は、出力信号の維持動作を終了し、Ｉ2Ｃ−ＧＰＩＯ２３０から出力されている制御信号の値をそのまま出力する。このとき、信号維持回路２４０から出力されるリセット信号ＲＳＴおよびパワーオン信号Ｐｏｎの値は、イネーブル信号ＥＮ２がハイレベルに変化する前と同じハイレベルになる。
【０１０９】
その後、タイミングＴ２７において、ＳＶＣ３００ｂは、Ｉ2Ｃバス１１３を通じて制御信号を送信することによるＰＣＩｅスイッチ２１０の監視処理を開始する。Ｉ2Ｃ−ＧＰＩＯ２３０は、ＳＶＣ３００ｂからの指示に応じた制御信号を出力し、信号維持回路２４０は、Ｉ2Ｃ−ＧＰＩＯ２３０から出力された制御信号をそのまま出力する。
【０１１０】
以上説明した第２の実施の形態では、ＳＶＣ３００ａが異常停止してＩ2Ｃバス１１３が使用不可能になったとき、ＳＶＣ３００ｂからのリセット指示に応じて、ＰＣＩｅスイッチ２１０およびＤＤＣ２２０に出力されている制御信号の値が信号維持回路２４０によって維持される。そして、信号維持回路２４０によって制御信号の出力値が維持された状態のまま、Ｉ2Ｃ−ＧＰＩＯ２３０がリセットされて、Ｉ2Ｃバス１１３が復旧する。従って、Ｉ2Ｃバス１１３を復旧させるための処理が行われている間、ＰＣＩｅスイッチ２１０はＣＭ１１１ａとＣＭ１１１ｂとの間の信号中継処理を正常に継続できる。
【０１１１】
また、Ｉ2Ｃバス１１３が復旧した後、Ｉ2Ｃ−ＧＰＩＯ２３０は、リセットされる前と同じ値の制御信号を出力するように制御される。このため、ＰＣＩｅスイッチ２１０の信号中継処理に何ら影響を与えずに、Ｉ2Ｃ−ＧＰＩＯ２３０および信号維持回路２４０の動作状態を、ＳＶＣ３００ａが停止する前の状態に戻すことができる。そして、運用系に遷移したＳＶＣ３００ｂは、ＰＣＩｅスイッチ２１０の制御および監視処理を引き継ぐことができる。
【０１１２】
以上の各実施の形態に関し、さらに以下の付記を開示する。
（付記１）  電子回路と、
前記電子回路を制御するための制御信号をバスを通じて受信し、受信した制御信号に応じた信号を前記電子回路に出力するバスインタフェースと、
前記バスインタフェースから前記電子回路へ出力される信号の値を維持する信号維持回路と、
前記信号維持回路に前記電子回路への出力信号の値を維持させた後、前記バスインタフェースをリセットするリセット制御回路と、
前記バスを通じて制御信号を出力することで前記電子回路を制御する制御装置と、
を有することを特徴とする制御システム。
【０１１３】
（付記２）  前記制御装置は、
第１の制御装置と、
前記第１の制御装置の動作が停止したことを検知すると、リセット信号線を通じてリセット指示を出力した後、前記第１の制御装置に代わって前記電子回路を制御する第２の制御装置と、
を有し、
前記リセット制御回路は、前記リセット信号線を通じて前記リセット指示を受けると、前記信号維持回路に前記電子回路への出力信号の値を維持させた後、前記バスインタフェースをリセットする、
ことを特徴とする付記１記載の制御システム。
【０１１４】
（付記３）  前記バスインタフェースは、前記リセット制御回路によってリセットされた後、前記バスを通じた前記第２の制御装置からの指示に応じて、前記信号維持回路から前記電子回路へ出力されている信号の値を前記信号維持回路に再度出力することを特徴とする付記２記載の制御システム。
【０１１５】
（付記４）  前記バスインタフェースは、前記信号維持回路から前記電子回路へ出力されている信号の値を取り込んで前記信号維持回路に出力することで、前記信号維持回路から前記電子回路へ出力されている信号の値を前記信号維持回路に再度出力することを特徴とする付記３記載の制御システム。
【０１１６】
（付記５）  前記バスインタフェースが、前記信号維持回路から前記電子回路へ出力されている信号の値を前記信号維持回路に再度出力した後、前記リセット制御回路は、前記信号維持回路に前記電子回路への出力信号の値を維持する状態を解除させることを特徴とする付記３または４記載の制御システム。
【０１１７】
（付記６）  前記第２の制御装置は、前記信号維持回路から前記電子回路へ出力されている信号の値を前記信号維持回路に再度出力するように、前記バスを通じて前記バスインタフェースに指示した後、前記信号維持回路が出力信号の値を維持する状態を解除するように指示する解除指示を、前記バスを通じて前記バスインタフェースに送信し、
前記リセット制御回路は、前記バスインタフェースが前記解除指示を受信したことに応じて、前記信号維持回路に前記電子回路への出力信号の値を維持する状態を解除させる、
ことを特徴とする付記５記載の制御システム。
【０１１８】
（付記７）  前記信号維持回路は、前記バスインタフェースから前記電子回路へ出力される信号として、前記電子回路にリセットを指示するための信号の値を維持することを特徴とする付記１〜６のいずれか１つに記載の制御システム。
【０１１９】
（付記８）  前記信号維持回路は、前記バスインタフェースから前記電子回路へ出力される信号として、前記電子回路に対する電源供給のオン／オフを指示するための信号の値を維持することを特徴とする付記１〜７のいずれか１つに記載の制御システム。
【０１２０】
（付記９）  複数の情報処理装置間で送受信される信号を中継する中継回路と、
前記中継回路を制御するための制御信号をバスを通じて受信し、受信した制御信号に応じた信号を前記中継回路に出力するバスインタフェースと、
前記バスインタフェースから前記中継回路へ出力される信号の値を維持する信号維持回路と、
前記信号維持回路に前記中継回路への出力信号の値を維持させた後、前記バスインタフェースをリセットするリセット制御回路と、
を有することを特徴とする中継装置。
【０１２１】
（付記１０）  前記リセット制御回路は、前記バスに接続された制御装置からリセット信号線を通じてリセット指示を受けると、前記信号維持回路に前記中継回路への出力信号の値を維持させた後、前記バスインタフェースをリセットすることを特徴とする付記９記載の中継装置。
【０１２２】
（付記１１）  前記バスインタフェースは、前記リセット制御回路によってリセットされた後、前記バスを通じた前記制御装置からの指示に応じて、前記信号維持回路から前記中継回路へ出力されている信号の値を前記信号維持回路に再度出力することを特徴とする付記１０記載の中継装置。
【０１２３】
（付記１２）  前記バスインタフェースは、前記信号維持回路から前記中継回路へ出力されている信号の値を取り込んで前記信号維持回路に出力することで、前記信号維持回路から前記中継回路へ出力されている信号の値を前記信号維持回路に再度出力することを特徴とする付記１１記載の中継装置。
【０１２４】
（付記１３）  前記バスインタフェースが、前記信号維持回路から前記中継回路へ出力されている信号の値を前記信号維持回路に再度出力した後、前記リセット制御回路は、前記信号維持回路に前記中継回路への出力信号の値を維持する状態を解除させることを特徴とする付記１１または１２記載の中継装置。
【０１２５】
（付記１４）  前記バスインタフェースは、前記信号維持回路から前記中継回路へ出力されている信号の値を前記信号維持回路に再度出力するように、前記制御装置から前記バスを通じて指示された後、前記信号維持回路が出力信号の値を維持する状態を解除するように指示する解除指示を、前記バスを通じて前記制御装置から受信し、
前記リセット制御回路は、前記バスインタフェースが前記解除指示を受信したことに応じて、前記信号維持回路に前記中継回路への出力信号の値を維持する状態を解除させる、
ことを特徴とする付記１３記載の中継装置。
【０１２６】
（付記１５）  前記信号維持回路は、前記バスインタフェースから前記中継回路へ出力される信号として、前記中継回路にリセットを指示するための信号の値を維持することを特徴とする付記１０〜１４のいずれか１つに記載の中継装置。
【０１２７】
（付記１６）  前記信号維持回路は、前記バスインタフェースから前記中継回路へ出力される信号として、前記中継回路に対する電源供給のオン／オフを指示するための信号の値を維持することを特徴とする付記１０〜１５のいずれか１つに記載の中継装置。
【符号の説明】
【０１２８】
１  制御システム
１１  電子回路
１２  バスインタフェース
１３  信号維持回路
１４  リセット制御回路
２１，２２  制御装置
３１  バス
３２  リセット信号線
【図１】
0005794137.tif 000002
【図２】
0005794137.tif 000003
【図３】
0005794137.tif 000004
【図４】
0005794137.tif 000005
【図５】
0005794137.tif 000006
【図６】
0005794137.tif 000007
【図７】
0005794137.tif 000008
【図８】
0005794137.tif 000009
【図９】
0005794137.tif 000010
【図１０】
0005794137.tif 000011
【図１１】
0005794137.tif 000012
【図１２】
0005794137.tif 000013