(57)【特許請求の範囲】
【請求項１】
２つの系（以下、それぞれ「自系」、「他系」という。）が複数のデータリンクパスで接続され二重化して構成される二重化システムであって、
前記２つの系のそれぞれは、
ＣＰＵ（Central Processing Unit）と、
データを記憶するメモリと、
自系の前記メモリに記憶されるデータをＤＭＡ（Direct Memory Access）転送により自系又は他系に入力するＤＭＡコントローラと、
自系の前記メモリに記憶される第１のデータと、他系の前記メモリから他系の前記ＤＭＡコントローラ又は自系の前記ＤＭＡコントローラによりＤＭＡ転送される第２のデータと、を取得し、当該取得した第１のデータと当該取得した第２のデータとが一致するか否かを判別し、当該第１のデータと当該第２のデータとが一致しない場合、自系の前記ＣＰＵにエラーを通知するコンパレータと、
を備え、
前記２つの系が二重化を開始する前、
（ａ）自系の前記ＤＭＡコントローラが、自系の前記メモリに記憶されているデータを当該第１のデータとして自系の前記コンパレータにＤＭＡ転送するとともに、当該第１のデータを他系の前記メモリに格納し、
（ｂ）自系の前記ＤＭＡコントローラが、前記複数のデータリンクパスのうちいずれか１つのデータリンクパスを経由して、他系の前記メモリに格納された当該第１のデータを当該第２のデータとして自系の前記コンパレータにＤＭＡ転送する、
ことを特徴とする二重化システム。
【請求項２】
２つの系（以下、それぞれ「自系」、「他系」という。）が複数のデータリンクパスで接続され二重化して構成される二重化システムであって、
前記２つの系のそれぞれは、
ＣＰＵ（Central Processing Unit）と、
データを記憶するメモリと、
自系の前記メモリに記憶されるデータをＤＭＡ（Direct Memory Access）転送により自系又は他系に入力するＤＭＡコントローラと、
自系の前記メモリに記憶される第１のデータと、他系の前記メモリに記憶される第２のデータと、を取得し、当該取得した第１のデータと当該取得した第２のデータとが一致するか否かを判別し、当該第１のデータと当該第２のデータとが一致しない場合、自系の前記ＣＰＵにエラーを通知するコンパレータと、
を備え、
前記２つの系が二重化を開始した後、他系の前記ＤＭＡコントローラが、
（ｘ）他系の前記メモリに記憶されている第１のデータを他系の前記コンパレータにＤＭＡ転送し、
（ｙ）前記複数のデータリンクパスのうちいずれか１つのデータリンクパスを経由して、自系の前記メモリに記憶されている第２のデータを他系の前記コンパレータにＤＭＡ転送する、
ことを特徴とする二重化システム。
【請求項３】
前記２つの系が二重化を開始した後、他系の前記ＤＭＡコントローラの代わりに、自系の前記ＤＭＡコントローラが、
（ｘ’）自系の前記メモリに記憶されている当該第２のデータを自系の前記コンパレータにＤＭＡ転送し、
（ｙ’）前記複数のデータリンクパスのうちいずれか１つのデータリンクパスを経由して、他系の前記メモリに記憶されている当該第１のデータを自系の前記コンパレータにＤＭＡ転送する、
ことを特徴とする、請求項２に記載の二重化システム。
【請求項４】
他系の前記ＤＭＡコントローラが当該第１のデータと当該第２のデータを他系の前記コンパレータにＤＭＡ転送する処理と、自系の前記ＤＭＡコントローラが当該第１のデータと当該第２のデータを自系の前記コンパレータにＤＭＡ転送する処理は、並行して行われる、
ことを特徴とする、請求項３に記載の二重化システム。
【請求項５】
前記複数のデータリンクパスは、自系から他系の向きにデータを送信する第１のインバウンド用データリンクパス及び第１のアウトバウンド用データリンクパスと、他系から自系の向きにデータを送信する第２のインバウンド用データリンクパス及び第２のアウトバウンド用データリンクパスと、から構成される、
ことを特徴とする、請求項１乃至４のいずれか１項に記載の二重化システム。
【請求項６】
２つの系（以下、それぞれ「自系」、「他系」という。）が複数のデータリンクパスで接続され二重化して構成される二重化システムにて実行される二重化方法であって、
前記２つの系のそれぞれが、データを記憶するメモリを有し、
前記２つの系のそれぞれにおいて、
自系の前記メモリに記憶されるデータをＤＭＡ（Direct Memory Access）転送により自系又は他系に入力する入力ステップと、
自系の前記メモリに記憶される第１のデータと、他系の前記メモリから自系又は他系にＤＭＡ転送される第２のデータと、を取得し、当該取得した第１のデータと当該取得した第２のデータとが一致するか否かを判別し、当該第１のデータと当該第２のデータとが一致しない場合、エラーを通知する通知ステップと、
を備え、
前記２つの系が二重化を開始する前、
（ａ）自系が、自系の前記メモリに記憶されているデータを当該第１のデータとして自系にＤＭＡ転送するとともに、当該第１のデータを他系の前記メモリに格納し、
（ｂ）自系が、前記複数のデータリンクパスのうちいずれか１つのデータリンクパスを経由して、他系の前記メモリに格納された当該第１のデータを当該第２のデータとして自系にＤＭＡ転送する、
ことを特徴とする二重化方法。
【請求項７】
２つの系（以下、それぞれ「自系」、「他系」という。）が複数のデータリンクパスで接続され二重化して構成される二重化システムにて実行される二重化方法であって、
前記２つの系のそれぞれが、データを記憶するメモリを有し、
前記２つの系のそれぞれにおいて、
自系の前記メモリに記憶されるデータをＤＭＡ（Direct Memory Access）転送により自系又は他系に入力する入力ステップと、
自系の前記メモリに記憶される第１のデータと、他系の前記メモリに記憶される第２のデータと、を取得し、当該取得した第１のデータと当該取得した第２のデータとが一致するか否かを判別し、当該第１のデータと当該第２のデータとが一致しない場合、自系にエラーを通知する通知ステップと、
を備え、
前記２つの系が二重化を開始した後、他系が、
（ｘ）他系の前記メモリに記憶されている第１のデータを他系内でＤＭＡ転送し、
（ｙ）前記複数のデータリンクパスのうちいずれか１つのデータリンクパスを経由して、自系の前記メモリに記憶されている第２のデータを自系から他系にＤＭＡ転送する、
ことを特徴とする二重化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、二重化同期動作前と二重化同期動作期間中のいずれにおいてもデータリンクパスの正常動作確認を容易に行うために好適な二重化システム、及び、二重化方法に関する。
【背景技術】
【０００２】
近年、コンピュータシステムの多機能化、複雑化、大規模化が進んでいる。そのため、障害発生時においても、継続して動作させることが要求されている。そのため、多くのコンピュータシステムでは、系を二重化することにより、仮に障害が発生したとしても被害を最小限に止めたりあるいは障害を起こりにくくしたりするためのフォールトトレランス技術が取り入れられている。
【０００３】
フォールトトレランス技術のひとつに、２つの系でクロックを同期させて全く同一の動作を行う二重化システムがある。二重化システムでは、一方のサーバにハードウェア障害が発生したりソフトウェアエラーが発生したりして同一動作性が崩れ、同期外れが発生することがある。
【０００４】
例えば特許文献１には、同期外れが検出されたときに、再同期化処理を開始する前に同期外れの要因を特定するフォールトトレラントコンピュータが開示されている。また、例えば特許文献２には、記憶装置への記憶内容の複写を高速に行うシステムが開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−１７８６３６号公報
【特許文献２】特開平０５−２６５７８９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、従来技術では、二重化同期動作前および二重化同期動作期間中に、系間のデータ転送に使用するデータリンクパスが正常に動作しているかどうかセルフチェックをする手段がないという問題があった。特に、二重化同期動作期間中では、セルフチェックのためにメインメモリへ書き込むことができないという制限や、両系とも同期動作しているために片方の系のみ使用することができないという制限があるため、データリンクパスのセルフチェックができないという問題があった。
【０００７】
本発明はこのような課題を解決するものであり、二重化同期動作前と二重化同期動作期間中のいずれにおいてもデータリンクパスの正常動作確認を容易に行うために好適な二重化システム、及び、二重化方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
以上の目的を達成するため、本発明の第１の観点に係る二重化システムは、２つの系（以下、それぞれ「自系」、「他系」という。）が複数のデータリンクパスで接続され二重化して構成される二重化システムであって、
前記２つの系のそれぞれは、
ＣＰＵ（Central Processing Unit）と、
データを記憶するメモリと、
自系の前記メモリに記憶されるデータをＤＭＡ（Direct Memory Access）転送により自系又は他系に入力するＤＭＡコントローラと、
自系の前記メモリに記憶される第１のデータと、他系の前記メモリから他系の前記ＤＭＡコントローラ又は自系の前記ＤＭＡコントローラによりＤＭＡ転送される第２のデータと、を取得し、当該取得した第１のデータと当該取得した第２のデータとが一致するか否かを判別し、当該第１のデータと当該第２のデータとが一致しない場合、自系の前記ＣＰＵにエラーを通知するコンパレータと、
を備え、
前記２つの系が二重化を開始する前、
（ａ）自系の前記ＤＭＡコントローラが、自系の前記メモリに記憶されているデータを当該第１のデータとして自系の前記コンパレータにＤＭＡ転送するとともに、当該第１のデータを他系の前記メモリに格納し、
（ｂ）自系の前記ＤＭＡコントローラが、前記複数のデータリンクパスのうちいずれか１つのデータリンクパスを経由して、他系の前記メモリに格納された当該第１のデータを当該第２のデータとして自系の前記コンパレータにＤＭＡ転送する、
ことを特徴とする。
【０００９】
本発明の第２の観点に係る二重化システムは、２つの系（以下、それぞれ「自系」、「他系」という。）が複数のデータリンクパスで接続され二重化して構成される二重化システムであって、
前記２つの系のそれぞれは、
ＣＰＵ（Central Processing Unit）と、
データを記憶するメモリと、
自系の前記メモリに記憶されるデータをＤＭＡ（Direct Memory Access）転送により自系又は他系に入力するＤＭＡコントローラと、
自系の前記メモリに記憶される第１のデータと、他系の前記メモリに記憶される第２のデータと、を取得し、当該取得した第１のデータと当該取得した第２のデータとが一致するか否かを判別し、当該第１のデータと当該第２のデータとが一致しない場合、自系の前記ＣＰＵにエラーを通知するコンパレータと、
を備え、
前記２つの系が二重化を開始した後、他系の前記ＤＭＡコントローラが、
（ｘ）他系の前記メモリに記憶されている第１のデータを他系の前記コンパレータにＤＭＡ転送し、
（ｙ）前記複数のデータリンクパスのうちいずれか１つのデータリンクパスを経由して、自系の前記メモリに記憶されている第２のデータを他系の前記コンパレータにＤＭＡ転送する、
ことを特徴とする。
【００１０】
本発明の第３の観点に係る二重化方法は、２つの系（以下、それぞれ「自系」、「他系」という。）が複数のデータリンクパスで接続され二重化して構成される二重化システムにて実行される二重化方法であって、
前記２つの系のそれぞれが、データを記憶するメモリを有し、
前記２つの系のそれぞれにおいて、
自系の前記メモリに記憶されるデータをＤＭＡ（Direct Memory Access）転送により自系又は他系に入力する入力ステップと、
自系の前記メモリに記憶される第１のデータと、他系の前記メモリから自系又は他系にＤＭＡ転送される第２のデータと、を取得し、当該取得した第１のデータと当該取得した第２のデータとが一致するか否かを判別し、当該第１のデータと当該第２のデータとが一致しない場合、エラーを通知する通知ステップと、
を備え、
前記２つの系が二重化を開始する前、
（ａ）自系が、自系の前記メモリに記憶されているデータを当該第１のデータとして自系にＤＭＡ転送するとともに、当該第１のデータを他系の前記メモリに格納し、
（ｂ）自系が、前記複数のデータリンクパスのうちいずれか１つのデータリンクパスを経由して、他系の前記メモリに格納された当該第１のデータを当該第２のデータとして自系にＤＭＡ転送する、
ことを特徴とする。
【００１１】
本発明の第４の観点に係る二重化方法は、２つの系（以下、それぞれ「自系」、「他系」という。）が複数のデータリンクパスで接続され二重化して構成される二重化システムにて実行される二重化方法であって、
前記２つの系のそれぞれが、データを記憶するメモリを有し、
前記２つの系のそれぞれにおいて、
自系の前記メモリに記憶されるデータをＤＭＡ（Direct Memory Access）転送により自系又は他系に入力する入力ステップと、
自系の前記メモリに記憶される第１のデータと、他系の前記メモリに記憶される第２のデータと、を取得し、当該取得した第１のデータと当該取得した第２のデータとが一致するか否かを判別し、当該第１のデータと当該第２のデータとが一致しない場合、自系にエラーを通知する通知ステップと、
を備え、
前記２つの系が二重化を開始した後、他系が、
（ｘ）他系の前記メモリに記憶されている第１のデータを他系内でＤＭＡ転送し、
（ｙ）前記複数のデータリンクパスのうちいずれか１つのデータリンクパスを経由して、自系の前記メモリに記憶されている第２のデータを自系から他系にＤＭＡ転送する、
ことを特徴とする。
【発明の効果】
【００１２】
本発明によれば、二重化同期動作前と二重化同期動作期間中のいずれにおいてもデータリンクパスの正常動作確認を容易に行うために好適な二重化システム、及び、二重化方法を提供することができる。
【図面の簡単な説明】
【００１３】
【図１】二重化システムの構成を説明するための図である。
【図２】二重化同期動作前におけるデータリンクパス１４Ｂ，１５Ａの正常確認処理を示すフローチャートである。
【図３】データリンクパス１４Ｂ，１５Ａの正常確認処理を説明するための図である。
【図４】データリンクパス１５Ｂの正常確認処理を説明するための図である。
【図５】データリンクパス１４Ａの正常確認処理を説明するための図である。
【図６】二重化同期動作期間中におけるデータリンクパス１５Ａの正常確認処理を示すフローチャートである。
【図７】データリンクパス１５Ａの正常確認処理を説明するための図である。
【図８】データリンクパス１５Ｂの正常確認処理を説明するための図である。
【図９】データリンクパス１４Ａの正常確認処理を説明するための図である。
【図１０】データリンクパス１４Ｂの正常確認処理を説明するための図である。
【発明を実施するための形態】
【００１４】
以下、本発明の実施形態について説明する。
図１は、本実施形態に係る二重化システムの構成を示す図である。二重化システムは２つのシステム（それぞれ「系」ともいう。）１Ａ，１Ｂを二重化した構成である。以下、一方のシステム１Ａを“Ａ系システム”と呼び、他方のシステム１Ｂを“Ｂ系システム”と呼ぶ。
【００１５】
Ａ系システム１Ａは、制御ＬＳＩ（Large Scale Integrated）２Ａ、ＣＰＵ（Central Processing Unit）３Ａ、メインメモリ４Ａを備える。同様に、Ｂ系システム１Ｂは、制御ＬＳＩ２Ｂ、ＣＰＵ３Ｂ、メインメモリ４Ｂを備える。Ａ系システム１ＡとＢ系システム１Ｂは同等のハードウェア構成を有する。
【００１６】
Ａ系システム１ＡとＢ系システム１Ｂは、データリンクパス１４Ａ，１４Ｂ，１５Ａ，１５Ｂで接続されている。Ａ系システム１ＡとＢ系システム１Ｂは互いに同期信号を送受信して同一の動作を行っている。
【００１７】
データリンクパス１４Ａ，１４Ｂ，１５Ａ，１５Ｂは、Ａ系システム１Ａの制御ＬＳＩ２ＡとＢ系システム１Ｂの制御ＬＳＩ２Ｂの間のデータ転送に用いられる。Ａ系システム１Ａ内の内部クロックとは非同期に動作するシリアルリンクが一般に使用される。各データリンクパスのアクセス方向は次の通りである。
【００１８】
データリンクパス１４Ａ：Ａ系システム→Ｂ系システム方向のインバウンド（Ｉ／Ｏ→ＣＰＵ・メモリ方向）用データリンクパス。
データリンクパス１５Ａ：Ａ系システム→Ｂ系システム方向のアウトバウンド（ＣＰＵ・メモリ→Ｉ／Ｏ方向）用データリンクパス。
【００１９】
データリンクパス１４Ｂ：Ｂ系システム→Ａ系システム方向のインバウンド（Ｉ／Ｏ→ＣＰＵ・メモリ方向）用データリンクパス。
データリンクパス１５Ｂ：Ｂ系システム→Ａ系システム方向のアウトバウンド（ＣＰＵ・メモリ→Ｉ／Ｏ方向）用データリンクパス。
【００２０】
Ａ系システム１Ａの制御ＬＳＩ２Ａは、ＣＰＵコントローラ５Ａ、メモリコントローラ６Ａ、ルータ７Ａ、Ｉ／Ｏ（Input/Output）コンパレータ８Ａ、Ｉ／Ｏコントローラ９Ａ、ＤＭＡ（Direct Memory Access）エンジン（「ＤＭＡコントローラ」とも言う。）１０Ａ、インバウンド（以下「ＩＢ」（In Bound）という。）リンクコントローラ１１Ａ、アウトバンド（以下「ＯＢ」（Out Bound）という。）リンクコントローラ１２Ａ、テストコンパレータ１３Ａを備える。
【００２１】
同様に、Ｂ系システム１Ｂの制御ＬＳＩ２Ｂは、ＣＰＵコントローラ５Ｂ、メモリコントローラ６Ｂ、ルータ７Ｂ、Ｉ／Ｏコンパレータ８Ｂ、Ｉ／Ｏコントローラ９Ｂ、ＤＭＡエンジン１０Ｂ、ＩＢリンクコントローラ１１Ｂ、ＯＢリンクコントローラ１２Ｂ、テストコンパレータ１３Ｂを備える。
【００２２】
次に、Ａ系システム１ＡとＢ系システム１Ｂの上記各構成要素の動作について説明する。以下、Ａ系システム１Ａ内の構成要素の動作について説明するが、Ｂ系システム１Ｂ内の構成要素も同様の動作を行う。Ａ系システム１Ａを「自系」、Ｂ系システム１Ｂを「他系」と呼ぶこともある。
【００２３】
ＣＰＵ３Ａは、Ａ系システム１Ａ全体を制御する。メインメモリ４Ａは、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、ハードディスク装置などから構成される。ＣＰＵ３Ａは、メインメモリ４Ａに任意のデータを随時書き込み可能であり、また、メインメモリ４Ａから任意のデータを随時読み出し可能である。
【００２４】
ＣＰＵコントローラ５Ａは、制御ＬＳＩ２ＡとＣＰＵ３Ａとの間のＣＰＵバスの動作状態を監視し、その監視結果を示すＣＰＵバス動作情報を他系のＣＰＵコントローラ５Ｂに送信する。また、ＣＰＵコントローラ５Ａは、自系のＣＰＵバス動作情報と他系のＣＰＵバス動作情報とを比較し、一致しない場合、同期外れが発生したことを検出する。そして、ＣＰＵバス動作情報の不一致を検出すると、ＣＰＵコントローラ５Ａは、ＣＰＵバス動作情報の不一致を示す信号をルータ７Ａ経由でＤＭＡエンジン１０Ａに通知する。なお、ＣＰＵコントローラ５Ａは、ＣＰＵバスが動作していない状態も含め、常にＣＰＵバス動作情報を送信している。また、ＣＰＵバス自体のバンド幅が大きいため、ＣＰＵバス動作情報は、ＣＰＵコントローラ５ＡによりＣＲＣ（Cyclic Redundancy Check）コード変換が施されてデータ量が削減された情報となっている。
【００２５】
また、ＣＰＵコントローラ５Ａは、メインメモリ４Ａのアドレス／ページを指定してメモリコントローラ６Ａにメインメモリ４Ａへの書き込みを指示する。この書き込み指示は、ＤＭＡエンジン１０Ａにも通知される。また、ＣＰＵコントローラ５Ａは、ＤＭＡエンジン１０Ａからの指示を受けた場合等において、メインメモリ４Ａのアドレス／ページを指定してメモリコントローラ６Ａにメインメモリ４Ａへの読み出しを指示する。
【００２６】
メモリコントローラ６Ａは、ＣＰＵコントローラ５Ａからの書き込み指示、又は、読み出し指示を受けて、メインメモリ４Ａの該当するアドレス／ページへの書き込み、又は、メインメモリ４Ａの該当するアドレス／ページからの読み出しを行う。
【００２７】
ルータ７Ａは、各構成要素の間でデータを中継する。ルータ７Ａは、ターゲットＩＤ（相手先を示す識別情報）によりコマンドやデータをフォワーディングする（送信する）。
【００２８】
Ｉ／Ｏコンパレータ８Ａは、運用動作時に自系のアウトバウンドアクセスと他系からのアウトバウンドアクセスを比較する。
【００２９】
Ｉ／Ｏコンパレータ８Ａは、自系のＣＰＵ３Ａから自系のＩ／Ｏコントローラ９Ａへのアクセス内容と、他系のＣＰＵ３Ｂから自系のＩ／Ｏコントローラ９Ａへのアクセス内容とを比較する。両者の不一致を検出すると、Ｉ／Ｏコンパレータ８Ａは、その旨を示す信号をルータ７Ａ経由でＣＰＵ３Ａに割り込みで通知する。このとき、自系のＣＰＵ３Ａからのアクセスが内部パスのみを介して行われるのに対して、他系のＣＰＵ３Ｂからのアクセスは外部パスを介して行われるため、他系のＣＰＵ３Ｂからのアクセスは到着時間が遅れる。そのため、Ｉ／Ｏコンパレータ８Ａの入力段にはバッファ（図示せず）が設けられており、自系のＣＰＵ３Ａからのアクセスデータをバッファで一時的に格納してからＩ／Ｏコンパレータ８Ａに出力する。このようにして、アクセスデータの順序の入れ替えを調節することができるとともに、両系からのアクセスが到着するまでアクセス不一致を判定せずに待機することができる。
【００３０】
また、Ｉ／Ｏコンパレータ８Ａは、バッファの使用容量が所定値を超えたことを検出すると、その旨を示す信号をルータ７Ａ経由でＣＰＵ３Ａに割り込みで通知する。
【００３１】
Ｉ／Ｏコントローラ９Ａは、制御ＬＳＩ２ＡとＩ／Ｏデバイス（図示せず）との間の接続バスを制御する。Ｉ／Ｏコントローラ９Ａは、自系のＣＰＵ３Ａと他系のＣＰＵ３Ｂの双方からアクセスを受ける。この２つのアクセスは、Ａ系システム１ＡとＢ系システム１Ｂが同期動作中である場合、同一のアクセスとなる。また、Ｉ／Ｏコントローラ９Ａは、自系のＣＰＵ３Ａと他系のＣＰＵ３Ｂの双方へアクセスする。
【００３２】
ＤＭＡエンジン１０Ａは、自系のＣＰＵ３Ａから入力されるコマンドに従い、メインメモリ４Ａに予め記憶されるテストデータを、他系のメインメモリ４Ｂ、又は、自系のテストコンパレータ１３Ａ、又は、他系のテストコンパレータ１３ＢにＤＭＡ転送する。また、ＤＭＡエンジン１０Ａは、他系のＣＰＵ３Ｂから入力されるコマンドに従い、メインメモリ４Ａに予め記憶されるテストデータを他系のメインメモリ４ＢにＤＭＡ転送する。ＤＭＡエンジン１０Ａは、ＣＰＵ３Ａ又はＣＰＵ３Ｂから入力されるコマンドに従い、使用するデータリンクパスを変更する。
【００３３】
ＤＭＡエンジン１０Ａは、ＣＰＵコントローラ５Ａからメインメモリ４Ａへの書き込み指示に基づいて、データが書き込まれたメインメモリ４Ａのアドレス／ページを示す情報を、メモリアクセストレースメモリ（図示せず）にＦＩＦＯ（First In First Out）形式で格納する。この動作は、ＣＰＵコントローラ５ＡからＣＰＵバス不一致を示す信号が通知されてから開始される。なお、ＤＭＡエンジン１０ＡからＣＰＵコントローラ５Ａへの指示によりメインメモリ４Ａへの書き込みが行われる場合もあるが、この場合にはＤＭＡエンジン１０Ａはメインメモリ４Ａのトレースを行わない。ＣＰＵコントローラ５Ａにおいて、メインメモリ４Ａへの書き込み指示に所定のマークを付ける等の処理を行うことが望ましい。
【００３４】
ＤＭＡエンジン１０Ａは、メモリアクセストレースメモリの使用容量が所定値を超えたことを検出すると、その旨を示す信号をルータ７Ａ経由で自系のＣＰＵ３Ａに割り込みで通知するとともに、データリンクパス１４Ａ経由で他系のＣＰＵ３Ｂに割り込みで通知する。
【００３５】
ＤＭＡエンジン１０Ａは、メモリアクセストレースメモリに格納されているアドレス／ページ情報に基づくメインメモリ４Ａの該当するアドレス／ページのデータを自系のメインメモリ４Ａ及び他系のメインメモリ４Ｂの双方にＤＭＡ転送する。この動作はＣＰＵ３Ａにより実行されるソフトウェアプログラムによる指示を受けて開始される。
【００３６】
ＩＢリンクコントローラ１１Ａは、他系と接続しているデータリンクパス１４Ａ，１５Ｂを制御する。
【００３７】
ＯＢリンクコントローラ１２Ａは、同様に他系と接続しているデータリンクパス１４Ｂ，１５Ａを制御する。
【００３８】
テストコンパレータ１３Ａは、自系のメインメモリ４Ａに記憶され、ＣＰＵ３Ａの制御により入力されるテストデータと、他系のメインメモリ４Ｂに記憶され、ＣＰＵ３Ｂの制御により入力されるテストデータと、を比較し、これら２つのテストデータが一致しない場合、自系のＣＰＵ３Ａにエラー（コンペアエラー）を通知する。
【００３９】
次に、上記構成を有するＡ系システム１ＡとＢ系システム１Ｂの二重化同期動作前に行われる処理について説明する。
【００４０】
（データリンクパス１４Ｂ，１５Ａの正常確認処理；二重化同期動作前）
まず、二重化システムの二重化同期動作前におけるデータリンクパス１４Ｂ，１５Ａの正常確認処理について、図２と図３を用いて説明する。
【００４１】
Ａ系システム１ＡのＣＰＵ３Ａは、自系のメインメモリ４Ａに予め格納されるテストデータを、自系のテストコンパレータ１３Ａと他系のメインメモリ４Ｂに書き込むように、自系のＤＭＡエンジン１０Ａに指示する。
【００４２】
Ａ系システム１ＡのＣＰＵ３Ａは、自系のＤＭＡエンジン１０Ａを制御して、自系のメインメモリ４Ａに予め格納されるテストデータを、Ａ系システム１Ａのテストコンパレータ１３Ａに書き込む（図２のステップＳ１１、図３の矢印＜１＞）。
【００４３】
また、ＣＰＵ３Ａは、自系のＤＭＡエンジン１０Ａと他系のＤＭＡエンジン１０Ｂを制御して、自系のメインメモリ４Ａに予め格納されるテストデータを、ＯＢリンクコントローラ１２Ａ→データリンクパス１５Ａ→他系のＩＢリンクコントローラ１１Ｂ→他系のＤＭＡエンジン１０Ｂ→他系のメインメモリ４Ｂという経路で、Ｂ系システム１Ｂのメインメモリ４Ｂに書き込む（図２のステップＳ１２、図３の矢印＜２＞）。
【００４４】
次に、ＣＰＵ３Ａは、自系のＤＭＡエンジン１０Ａと他系のＤＭＡエンジン１０Ｂを制御して、他系のメインメモリ４Ｂに書き込んだテストデータを、他系のＤＭＡエンジン１０Ｂ→他系のＩＢリンクコントローラ１１Ｂ→データリンクパス１４Ｂ→自系のＯＢリンクコントローラ１２Ａ→自系のテストコンパレータ１３Ａという経路で、Ａ系システム１Ａのテストコンパレータ１３Ａに書き込む（図２のステップＳ１３、図３の矢印＜３＞）。
【００４５】
そして、テストコンパレータ１３Ａは、ステップＳ１１で書き込まれたテストデータと、ステップＳ１３で書き込まれたテストデータとが一致するか否かを判別する（ステップＳ１４）。
【００４６】
２つのテストデータが一致すると判別した場合（ステップＳ１４；ＹＥＳ）、テストコンパレータ１３Ａは、データリンクパス１４Ｂ，１５Ａが正常であると判断し、その旨をＣＰＵ３Ａに通知する（ステップＳ１５）。
【００４７】
２つのテストデータが一致しないと判別した場合（ステップＳ１４；ＮＯ）、テストコンパレータ１３Ａは、データリンクパス１４Ｂ，１５Ａのうち少なくともどちらか一方が正常ではないと判断し、その旨（コンペアエラー）をＣＰＵ３Ａに通知する（ステップＳ１６）。
【００４８】
このように、ＣＰＵ３Ａは、二重化同期動作前に、データリンクパス１４Ｂ，１５Ａが正常に機能しているかどうかをセルフチェックにより把握することができる。
【００４９】
（データリンクパス１５Ｂの正常確認処理；二重化同期動作前）
次に、二重化システムの二重化同期動作前におけるデータリンクパス１５Ｂの正常確認処理について、図４を用いて説明する。
【００５０】
Ａ系システム１ＡのＣＰＵ３Ａは、上記ステップＳ１１，Ｓ１２と同様の処理を行い、自系のメインメモリ４Ａに予め格納されるテストデータを、自系のテストコンパレータ１３Ａと他系のメインメモリ４Ｂに書き込む。
【００５１】
上記ステップＳ１３において、ＣＰＵ３Ａは、自系のＤＭＡエンジン１０Ａと他系のＤＭＡエンジン１０Ｂを制御して、他系のメインメモリ４Ｂに書き込んだテストデータを、他系のＯＢリンクコントローラ１２Ｂ→データリンクパス１５Ｂ→自系のＩＢリンクコントローラ１１Ａ→自系のＤＭＡエンジン１０Ａ→自系のテストコンパレータ１３Ａという経路で、Ａ系システム１Ａのテストコンパレータ１３Ａに書き込む（図４の矢印＜４＞）。
【００５２】
上記ステップＳ１４において、テストコンパレータ１３Ａは、ステップＳ１１で書き込まれたテストデータと、図４の矢印＜４＞の経路で書き込まれたテストデータとが一致するか否かを判別する。
【００５３】
２つのテストデータが一致すると判別した場合、テストコンパレータ１３Ａは、データリンクパス１５Ｂが正常であると判断し、その旨をＣＰＵ３Ａに通知する。
【００５４】
２つのテストデータが一致しないと判別した場合、テストコンパレータ１３Ａは、データリンクパス１５Ｂが正常ではないと判断し、その旨（コンペアエラー）をＣＰＵ３Ａに通知する。
【００５５】
このように、ＣＰＵ３Ａは、二重化同期動作前に、データリンクパス１５Ｂが正常に機能しているかどうかをセルフチェックにより把握することができる。
【００５６】
（データリンクパス１４Ａの正常確認処理；二重化同期動作前）
次に、二重化システムの二重化同期動作前におけるデータリンクパス１４Ａの正常確認処理について、図５を用いて説明する。
【００５７】
Ａ系システム１ＡのＣＰＵ３Ａは、上記ステップＳ１１と同様、自系のＤＭＡエンジン１０Ａを制御して、自系のメインメモリ４Ａに予め格納されるテストデータを、Ａ系システム１Ａのテストコンパレータ１３Ａに書き込む（図５の矢印＜５＞）。
【００５８】
また、ＣＰＵ３Ａは、自系のＤＭＡエンジン１０Ａと他系のＤＭＡエンジン１０Ｂを制御して、自系のメインメモリ４Ａに予め格納されるテストデータを、ＩＢリンクコントローラ１１Ａ→データリンクパス１４Ａ→他系のＯＢリンクコントローラ１２Ｂ→他系のメインメモリ４Ｂという経路で、Ｂ系システム１Ｂのメインメモリ４Ｂに書き込む（図５の矢印＜６＞）。
【００５９】
次に、ＣＰＵ３Ａは、自系のＤＭＡエンジン１０Ａと他系のＤＭＡエンジン１０Ｂを制御して、他系のメインメモリ４Ｂに書き込んだテストデータを、他系のＯＢリンクコントローラ１２Ｂ→データリンクパス１５Ｂ→自系のＩＢリンクコントローラ１１Ａ→自系のＤＭＡエンジン１０Ａ→自系のテストコンパレータ１３Ａという経路で、Ａ系システム１Ａのテストコンパレータ１３Ａに書き込む（図５の矢印＜７＞）。
【００６０】
そして、テストコンパレータ１３Ａは、矢印＜５＞の経路で書き込まれたテストデータと、矢印＜７＞の経路で書き込まれたテストデータとが一致するか否かを判別する。
【００６１】
２つのテストデータが一致すると判別した場合、テストコンパレータ１３Ａは、データリンクパス１４Ａが正常であると判断し、その旨をＣＰＵ３Ａに通知する。
【００６２】
２つのテストデータが一致しないと判別した場合、テストコンパレータ１３Ａは、データリンクパス１４Ａが正常ではないと判断し、その旨（コンペアエラー）をＣＰＵ３Ａに通知する。
【００６３】
このように、ＣＰＵ３Ａは、二重化同期動作前に、データリンクパス１４Ａが正常に機能しているかどうかをセルフチェックにより把握することができる。
【００６４】
なお、ＣＰＵ３Ａは、データリンクパス１５Ｂの正常確認処理を行ってデータリンクパス１５Ｂが正常であると判断された後に実行することにより、本正常確認処理によってデータリンクパス１４Ａが正常に機能しているかどうかを判断することができる。
【００６５】
次に、上記構成を有するＡ系システム１ＡとＢ系システム１Ｂの二重化同期動作期間中に行われる処理について説明する。
【００６６】
（データリンクパス１５Ａの正常確認処理；二重化同期動作期間中）
まず、二重化システムの二重化同期動作期間中におけるデータリンクパス１５Ａの正常確認処理について、図６と図７を用いて説明する。
【００６７】
Ａ系システム１ＡのＣＰＵ３Ａは、自系のＤＭＡエンジン１０Ａを制御して、自系のメインメモリ４Ａに予め格納されているテストデータを、自系のＯＢリンクコントローラ１２Ａ→データリンクパス１５Ａ→他系のＩＢリンクコントローラ１１Ｂ→他系のＤＭＡエンジン１０Ｂ→他系のテストコンパレータ１３Ｂという経路で、Ｂ系システム１Ｂのテストコンパレータ１３Ｂに書き込む（図６のステップＳ２１、図７の矢印＜８＞）。
【００６８】
また、ＣＰＵ３Ａは、他系のＤＭＡエンジン１０Ｂを制御して、他系のメインメモリ４Ｂに予め格納されているテストデータを、Ｂ系システム１Ｂのテストコンパレータ１３Ｂに書き込む（図６のステップＳ２２、図７の矢印＜９＞）。
【００６９】
そして、テストコンパレータ１３Ｂは、ステップＳ２１で書き込まれたテストデータと、ステップＳ２２で書き込まれたテストデータとが一致するか否かを判別する（ステップＳ２３）。
【００７０】
２つのテストデータが一致すると判別した場合（ステップＳ２３；ＹＥＳ）、テストコンパレータ１３Ｂは、データリンクパス１５Ａが正常であると判断し、その旨をＣＰＵ３Ａに通知する。
【００７１】
２つのテストデータが一致しないと判別した場合（ステップＳ２３；ＮＯ）、テストコンパレータ１３Ｂは、データリンクパス１５Ａが正常ではないと判断し、その旨（コンペアエラー）をＣＰＵ３Ａに通知する。
【００７２】
このように、ＣＰＵ３Ａは、二重化同期動作期間中に、データリンクパス１５Ａが正常に機能しているかどうかをセルフチェックにより把握することができる。
【００７３】
（データリンクパス１５Ｂの正常確認処理；二重化同期動作期間中）
次に、二重化システムの二重化同期動作期間中におけるデータリンクパス１５Ｂの正常確認処理について、図８を用いて説明する。
【００７４】
Ｂ系システム１ＢのＣＰＵ３Ｂは、他系のＤＭＡエンジン１０Ｂを制御して、他系のメインメモリ４Ｂに予め格納されているテストデータを、他系のＯＢリンクコントローラ１２Ｂ→データリンクパス１５Ｂ→自系のＩＢリンクコントローラ１１Ａ→自系のＤＭＡエンジン１０Ａ→自系のテストコンパレータ１３Ａという経路で、Ａ系システム１Ａのテストコンパレータ１３Ａに書き込む（図８の矢印＜１０＞）。
【００７５】
また、ＣＰＵ３Ｂは、自系のＤＭＡエンジン１０Ａを制御して、自系のメインメモリ４Ａに予め格納されているテストデータを、Ａ系システム１Ａのテストコンパレータ１３Ａに書き込む（図８の矢印＜１１＞）。
【００７６】
そして、テストコンパレータ１３Ａは、図８の矢印＜１０＞の経路で書き込まれたテストデータと、図８の矢印＜１１＞の経路で書き込まれたテストデータとが一致するか否かを判別する。
【００７７】
２つのテストデータが一致すると判別した場合、テストコンパレータ１３Ａは、データリンクパス１５Ｂが正常であると判断し、その旨をＣＰＵ３Ｂに通知する。
【００７８】
２つのテストデータが一致しないと判別した場合、テストコンパレータ１３Ａは、データリンクパス１５Ｂが正常ではないと判断し、その旨（コンペアエラー）をＣＰＵ３Ｂに通知する。
【００７９】
このように、ＣＰＵ３Ｂは、二重化同期動作期間中に、データリンクパス１５Ｂが正常に機能しているかどうかをセルフチェックにより把握することができる。
【００８０】
二重化同期動作期間中では、Ａ系システム１ＡのＣＰＵ３ＡとＢ系システム１ＢのＣＰＵ３Ｂは、それぞれＤＭＡエンジン１０Ａ，１０Ｂに同じコマンドを発行するため、図７に示すデータリンクパス１５Ａの正常確認処理と図８に示すデータリンクパス１５Ｂの正常確認処理は並行して実行される。
【００８１】
本実施形態のＡ系システム１ＡとＢ系システム１Ｂからなる二重化システムは、二重化同期動作期間中においても、メインメモリ４Ａ，４Ｂにデータを書き込むことなく、データリンクパス１５Ａ，１５Ｂの動作確認が可能になる。
【００８２】
（データリンクパス１４Ａの正常確認処理；二重化同期動作期間中）
次に、二重化システムの二重化同期動作期間中におけるデータリンクパス１４Ａの正常確認処理について、図９を用いて説明する。
【００８３】
Ａ系システム１ＡのＣＰＵ３Ａは、自系のＤＭＡエンジン１０Ａと他系のＤＭＡエンジン１０Ｂを制御して、自系のメインメモリ４Ａに予め記憶されているテストデータを、自系のＩＢリンクコントローラ１１Ａ→データリンクパス１４Ａ→他系のＯＢリンクコントローラ１２Ｂ→他系のＤＭＡエンジン１０Ｂ→他系のテストコンパレータ１３Ｂという経路で、Ｂ系システム１Ｂのテストコンパレータ１３Ｂに書き込む（図９の矢印＜１２＞）。
【００８４】
また、ＣＰＵ３Ａは、他系のＤＭＡエンジン１０Ｂを制御して、他系のメインメモリ４Ｂに予め記憶されているテストデータを、他系のテストコンパレータ１３Ｂに書き込む（図９の矢印＜１３＞）。
【００８５】
そして、テストコンパレータ１３Ｂは、図９の矢印＜１２＞の経路で書き込まれたテストデータと、図９の矢印＜１３＞の経路で書き込まれたテストデータとが一致するか否かを判別する。
【００８６】
２つのテストデータが一致すると判別した場合、テストコンパレータ１３Ｂは、データリンクパス１４Ａが正常であると判断し、その旨をＣＰＵ３Ａに通知する。
【００８７】
２つのテストデータが一致しないと判別した場合、テストコンパレータ１３Ｂは、データリンクパス１４Ａが正常ではないと判断し、その旨（コンペアエラー）をＣＰＵ３Ａに通知する。
【００８８】
このように、ＣＰＵ３Ａは、二重化同期動作期間中に、データリンクパス１４Ａが正常に機能しているかどうかをセルフチェックにより把握することができる。
【００８９】
（データリンクパス１４Ｂの正常確認処理；二重化同期動作期間中）
次に、二重化システムの二重化同期動作期間中におけるデータリンクパス１４Ｂの正常確認処理について、図１０を用いて説明する。
【００９０】
Ｂ系システム１ＢのＣＰＵ３Ｂは、他系のＤＭＡエンジン１０Ｂと自系のＤＭＡエンジン１０Ａを制御して、他系のメインメモリ４Ｂに予め記憶されているテストデータを、他系のＩＢリンクコントローラ１１Ｂ→データリンクパス１４Ｂ→自系のＯＢリンクコントローラ１２Ａ→自系のＤＭＡエンジン１０Ａ→自系のテストコンパレータ１３Ａという経路で、Ａ系システム１Ａのテストコンパレータ１３Ａに書き込む（図１０の矢印＜１４＞）。
【００９１】
また、ＣＰＵ３Ｂは、自系のＤＭＡエンジン１０Ａを制御して、自系のメインメモリ４Ａに予め記憶されているテストデータを、自系のテストコンパレータ１３Ａに書き込む（図１０の矢印＜１５＞）。
【００９２】
そして、テストコンパレータ１３Ａは、図１０の矢印＜１４＞の経路で書き込まれたテストデータと、図１０の矢印＜１５＞の経路で書き込まれたテストデータとが一致するか否かを判別する。
【００９３】
２つのテストデータが一致すると判別した場合、テストコンパレータ１３Ａは、データリンクパス１４Ｂが正常であると判断し、その旨をＣＰＵ３Ｂに通知する。
【００９４】
２つのテストデータが一致しないと判別した場合、テストコンパレータ１３Ａは、データリンクパス１４Ｂが正常ではないと判断し、その旨（コンペアエラー）をＣＰＵ３Ｂに通知する。
【００９５】
このように、ＣＰＵ３Ｂは、二重化同期動作期間中に、データリンクパス１４Ｂが正常に機能しているかどうかをセルフチェックにより把握することができる。
【００９６】
二重化同期動作期間中では、Ａ系システム１ＡのＣＰＵ３ＡとＢ系システム１ＢのＣＰＵ３Ｂは、それぞれＤＭＡエンジン１０Ａ，１０Ｂに同じコマンドを発行するため、図９に示すデータリンクパス１４Ａの正常確認処理と図１０に示すデータリンクパス１４Ｂの正常確認処理は並行して実行される。
【００９７】
本実施形態のＡ系システム１ＡとＢ系システム１Ｂからなる二重化システムは、二重化同期動作期間中においても、メインメモリ４Ａ，４Ｂにデータを書き込むことなく、データリンクパス１４Ａ，１４Ｂの動作確認が可能になる。
【００９８】
本実施形態では、一方の系（自系）は、自系のＤＭＡエンジンだけでなく他方の系（他系）のＤＭＡエンジンも使用してデータを転送する。そのため、自系のＤＭＡエンジンのみを使用してデータをコピーする従来技術のように、自系のＤＭＡエンジンが故障した場合には系間のデータ書き込みができない、というようなことがない。すなわち、片系のＤＭＡエンジンの故障が発生してもデータリンクパスの動作チェックができる。
【００９９】
以上説明したように、本発明によれば、二重化同期動作前と二重化同期動作期間中のいずれにおいてもデータリンクパスの正常動作確認を容易に行うために好適な二重化システム、及び、二重化方法を提供することができる。
【符号の説明】
【０１００】
１Ａ          Ａ系システム
１Ｂ          Ｂ系システム
２Ａ，  ２Ｂ  制御ＬＳＩ
３Ａ，  ３Ｂ  ＣＰＵ
４Ａ，  ４Ｂ  メインメモリ
５Ａ，  ５Ｂ  ＣＰＵコントローラ
６Ａ，  ６Ｂ  メモリコントローラ
７Ａ，  ７Ｂ  ルータ
８Ａ，  ８Ｂ  Ｉ／Ｏコンパレータ
９Ａ，  ９Ｂ  Ｉ／Ｏコントローラ
１０Ａ，１０Ｂ  ＤＭＡエンジン
１１Ａ，１１Ｂ  インバウンド（ＩＢ）リンクコントローラ
１２Ａ，１２Ｂ  アウトバンド（ＯＢ）リンクコントローラ
１３Ａ，１３Ｂ  テストコンパレータ
１４Ａ，１４Ｂ，１５Ａ，１５Ｂ  データリンクパス
【図１】
0005556086.tif 000002
【図２】
0005556086.tif 000003
【図３】
0005556086.tif 000004
【図４】
0005556086.tif 000005
【図５】
0005556086.tif 000006
【図６】
0005556086.tif 000007
【図７】
0005556086.tif 000008
【図８】
0005556086.tif 000009
【図９】
0005556086.tif 000010
【図１０】
0005556086.tif 000011