(57)【要約】      （修正有）【課題】システム運用の一時停止期間の短縮。【解決手段】二重化同期システム１は、第１システム１ａと、その第１システム１ａと同期して動作する第２システム１ｂとを備え、複数のデータリンクパス１３、１４を介して接続される。第１システム１ａは、第１メモリ４ａと、第１メモリ４ａに対する読み書きを制御する第１コントローラ６ａと、第１コントローラ６ａにアクセス可能な第１ＤＭＡエンジン１０ａとを備える。第２システム１ｂも同様の構成を備える。第１メモリ４ａから第２メモリ４ｂへのデータのコピー動作時、第１ＤＭＡエンジン１０ａは、第１読み出しコマンドと、第２読み出しコマンドとを、第１コントローラ６ａに発信する。第１コントローラ６ａは、２つの読み出しコマンドのそれぞれに応答して、第１メモリ４ａからデータを読み出し、読み出されたデータを第１ＤＭＡエンジン１０ａ及び第２ＤＭＡエンジン１０ｂのそれぞれに返信する。【選択図】      図１
2006178550.tif 000002
【特許請求の範囲】
【請求項１】
第１システムと、
前記第１システムと同期して動作する第２システムと
を具備し、
前記第１システムと前記第２システムは複数のデータリンクパスを介して接続され、
前記第１システムは、
第１メモリと、
前記第１メモリに対する読み書きを制御する第１コントローラと、
前記第１コントローラにアクセス可能な第１ＤＭＡエンジンと
を備え、
前記第２システムは、
第２メモリと、
前記第２メモリに対する読み書きを制御する第２コントローラと、
前記第２コントローラにアクセス可能な第２ＤＭＡエンジンと
を備え、
前記第１ＤＭＡエンジン及び前記第２ＤＭＡエンジンは、発信元が指定された読み出しコマンドを前記第１コントローラと前記第２コントローラのいずれかに発信する際、前記発信元を前記第１ＤＭＡエンジン及び前記第２ＤＭＡエンジンのいずれかに設定し、
前記第１コントローラは、前記読み出しコマンドに応答して、前記第１メモリからデータを読み出し、前記読み出されたデータを前記発信元に返信し、
前記第２コントローラは、前記読み出しコマンドに応答して、前記第２メモリからデータを読み出し、前記読み出されたデータを前記発信元に返信する
二重化同期システム。
【請求項２】
請求項１に記載の二重化同期システムであって、
前記第１メモリから前記第２メモリへのデータのコピー動作時、
前記第１ＤＭＡエンジンは、前記発信元が前記第１ＤＭＡエンジンに設定された第１読み出しコマンドと、前記発信元が前記第２ＤＭＡエンジンに設定された第２読み出しコマンドとを、前記第１コントローラに発信し、
前記第１コントローラは、前記第１読み出しコマンド及び前記第２読み出しコマンドのそれぞれに応答して、前記第１メモリからデータを読み出し、前記読み出されたデータを前記第１ＤＭＡエンジン及び前記第２ＤＭＡエンジンのそれぞれに返信し、
前記第１ＤＭＡエンジン及び前記第２ＤＭＡエンジンは、前記読み出されたデータを前記第２コントローラを介して前記第２メモリに書き込む
二重化同期システム。
【請求項３】
請求項２に記載の二重化同期システムであって、
前記第１コントローラは、前記第１読み出しコマンドに応答して、前記第１メモリ中の第１アドレス群に格納されたデータを読み出し、前記第２読み出しコマンドに応答して、前記第１メモリ中の前記第１アドレス群と異なる第２アドレス群に格納されたデータを読み出す
二重化同期システム。
【請求項４】
請求項３に記載の二重化同期システムであって、
前記第１アドレス群は、奇数のアドレス群と偶数のアドレス群の一方を示し、
前記第２アドレス群は、前記奇数のアドレス群と前記偶数のアドレス群の他方を示す
二重化同期システム。
【請求項５】
請求項１に記載の二重化同期システムであって、
前記第１メモリから前記第２メモリへのデータのコピー動作時、
前記第１ＤＭＡエンジンが故障している場合、
前記第２ＤＭＡエンジンは、前記発信元が前記第２ＤＭＡエンジンに設定された前記読み出しコマンドを、前記第１コントローラに発信し、
前記第１コントローラは、前記読み出しコマンドに応答して、前記第１メモリからデータを読み出し、前記読み出されたデータを前記２ＤＭＡエンジンに返信し、
前記第２ＤＭＡエンジンは、前記読み出されたデータを前記第２コントローラを介して前記第２メモリに書き込む
二重化同期システム。
【請求項６】
請求項１に記載の二重化同期システムであって、
前記第１メモリから前記第２メモリへのデータのコピー動作時、
前記第２ＤＭＡエンジンが故障している場合、
前記第１ＤＭＡエンジンは、前記発信元が前記第１ＤＭＡエンジンに設定された前記読み出しコマンドを、前記第１コントローラに発信し、
前記第１コントローラは、前記読み出しコマンドに応答して、前記第１メモリからデータを読み出し、前記読み出されたデータを前記第１ＤＭＡエンジンに返信し、
前記第１ＤＭＡエンジンは、前記読み出されたデータを前記第２コントローラを介して前記第２メモリに書き込む
二重化同期システム。
【請求項７】
請求項１に記載の二重化同期システムであって、
前記第１メモリから前記第２メモリへのデータのコピー動作時、
前記第１ＤＭＡエンジンは、前記発信元が前記第２ＤＭＡエンジンに設定された前記読み出しコマンドを、前記第１コントローラに発信し、
前記第１コントローラは、前記読み出しコマンドに応答して、前記第１メモリからデータを読み出し、前記読み出されたデータを前記第２ＤＭＡエンジンに返信し、
前記第２ＤＭＡエンジンは、前記読み出されたデータを前記第２コントローラを介して前記第２メモリに書き込む
二重化同期システム。
【請求項８】
請求項２乃至７のいずれかに記載の二重化同期システムであって、
前記複数のデータリンクパスのいずれかが故障している
二重化同期システム。
【請求項９】
第１システムと、前記第１システムと同期して動作する第２システムとを有する二重化同期システム内のＤＭＡエンジンであって、
前記第１システムのＤＭＡエンジンを示す第１ＩＤと、前記第２システムのＤＭＡエンジンを示す第２ＩＤのいずれかを、発行元のＩＤとして付与し、コマンドを発行することを特徴とする
ＤＭＡエンジン。
【請求項１０】
二重化同期システムの動作方法であって、
前記二重化同期システムは、
第１システムと、前記第１システムと同期して動作する第２システムとを備え、
前記第１システムは、第１メモリと、前記第１メモリにアクセス可能な第１ＤＭＡエンジンとを有し、
前記第２システムは、第２メモリと、前記第２メモリにアクセス可能な第２ＤＭＡエンジンとを有し、
前記動作方法は、前記第１メモリから前記第２メモリへのデータのコピー動作時、前記第１ＤＭＡエンジンと前記第２ＤＭＡエンジンの少なくとも１つが用いられることを特徴とする
二重化同期システムの動作方法。
【請求項１１】
請求項１０に記載の二重化同期システムの動作方法であって、
前記第１ＤＭＡエンジンと前記第２ＤＭＡエンジンの両方が用いられることを特徴とする
二重化同期システムの動作方法。
【請求項１２】
請求項１１に記載の二重化同期システムの動作方法であって、
前記第１メモリ中の奇数のアドレス群に格納されたデータの読み出しには、前記第１ＤＭＡエンジン及び前記第２ＤＭＡエンジンのうち一方が用いられ、
前記第１メモリ中の偶数のアドレス群に格納されたデータの読み出しには、前記第１ＤＭＡエンジン及び前記第２ＤＭＡエンジンのうち他方が用いられることを特徴とする
二重化同期システムの動作方法。
【請求項１３】
請求項１０に記載の二重化同期システムの動作方法であって、
前記第１ＤＭＡエンジンと前記第２ＤＭＡエンジンのうち、故障していない方が用いられることを特徴とする
二重化同期システムの動作方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、二重化同期システムに関する。特に、本発明は、二重化同期システム、及びその二重化同期システムにおけるメモリの内容のコピー方法に関する。
【背景技術】
【０００２】
高度な信頼性を提供するコンピュータとして、フォールトトレラント（FT: Fault Tolerant）コンピュータが知られている。ＦＴコンピュータにおいては、システムを構成するハードウェアモジュールが二重化、または多重化され、それらハードウェアモジュールが同期動作をするように制御される。このようなＦＴコンピュータに例示されるシステムは、以下「二重化同期システム」と参照される。二重化同期システムによれば、ある部位（モジュール）で故障が発生した場合、その故障モジュールを切り離すことによって、正常なモジュールで処理を続行することが可能である。つまり、二重化同期システムは、優れた耐故障性（可用性）を有する（例えば、特許文献１参照）。
【０００３】
二重化同期システムは、第１システム（第１系）と第２システム（第２系）から構成される。通常運用時、両系のメインメモリに格納されているデータは、常に一致するように制御される。一方、システム起動時、あるいは障害が発生した後の復旧時においては、両系のメインメモリに格納されているデータは一致していない。そのため、一方のシステムのメインメモリに格納されているデータを、他方のシステムのメインメモリに速やかにコピーし、両系を一致させる必要がある。
【０００４】
データの復旧作業中に、コピー元のシステムが通常運用されていると、そのシステムのメインメモリに格納されたデータは更新されてしまう。そのため、データの復旧作業中においては、二重化同期システム全体の運用を一時停止する必要がある。データの復旧にかかる時間が長くなると業務に支障をきたすため、その一時停止期間はなるべく短い方が望ましい。特に、近年、メインメモリの容量は増加の一途を辿っており、両系間のデータコピーに要する時間（以下、「メモリコピー時間」と参照される）はますます増大している。また、システム間を接続するデータリンクパスの転送性能は、ＬＳＩ内部のデータ転送性能と比べると低い。これも、メモリコピー時間の増大の要因の一つである。二重化同期システムにおけるメモリコピー時間を短縮し、一時停止期間を減少させることが望まれている。
【０００５】
【特許文献１】特開平１０−２９３６９７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明の目的は、メモリコピー時間を短縮することができる二重化同期システム及びその動作方法を提供することにある。
【０００７】
本発明の他の目的は、システム運用の一時停止期間を短縮することができる二重化同期システム及びその動作方法を提供することにある。
【０００８】
本発明の更に他の目的は、一方の系のＤＭＡエンジンが故障した場合においても、両系の間でデータをコピーすることができる二重化同期システム及びその動作方法を提供することにある。
【０００９】
本発明の更に他の目的は、両系間を接続するデータパスの一部が故障した場合においても、両系の間でデータをコピーすることができる二重化同期システム及びその動作方法を提供することにある。
【課題を解決するための手段】
【００１０】
以下に、［発明を実施するための最良の形態］で使用される番号・符号を用いて、［課題を解決するための手段］を説明する。これらの番号・符号は、［特許請求の範囲］の記載と［発明を実施するための最良の形態］との対応関係を明らかにするために括弧付きで付加されたものである。ただし、それらの番号・符号を、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【００１１】
本発明に係る二重化同期システム（１）は、第１システム（１ａ）と、その第１システム（１ａ）と同期して動作する第２システム（１ｂ）とを備える。第１システム（１ａ）と第２システム（１ｂ）は複数のデータリンクパス（１３ａ、１３ｂ、１４ａ、１４ｂ）を介して接続される。第１システム（１ａ）は、第１メモリ（４ａ）と、第１メモリ（４ａ）に対する読み書きを制御する第１コントローラ（６ａ）と、第１コントローラ（６ａ）にアクセス可能な第１ＤＭＡエンジン（１０ａ）とを備える。第２システム（１ｂ）は、第２メモリ（４ｂ）と、第２メモリ（４ｂ）に対する読み書きを制御する第２コントローラ（６ｂ）と、第２コントローラ（６ｂ）にアクセス可能な第２ＤＭＡエンジン（１０ｂ）とを備える。第１ＤＭＡエンジン（１０ａ）及び第２ＤＭＡエンジン（１０ｂ）は、発信元が指定された読み出しコマンドを第１コントローラ（６ａ）と第２コントローラ（６ｂ）のいずれかに発信する際、その発信元を第１ＤＭＡエンジン（１０ａ）及び第２ＤＭＡエンジン（１０ｂ）のいずれかに設定する。第１コントローラ（６ａ）は、その読み出しコマンドに応答して、第１メモリ（４ａ）からデータを読み出し、読み出されたデータを発信元に返信するように構成される。第２コントローラ（６ｂ）は、読み出しコマンドに応答して、第２メモリ（４ｂ）からデータを読み出し、読み出されたデータを発信元に返信するように構成される。
【００１２】
第１メモリ（４ａ）から第２メモリ（４ｂ）へのデータのコピー動作時、第１ＤＭＡエンジン（１０ａ）は、発信元が第１ＤＭＡエンジン（１０ａ）に設定された第１読み出しコマンドと、発信元が第２ＤＭＡエンジン（１０ｂ）に設定された第２読み出しコマンドとを、第１コントローラ（６ａ）に発信する。第１コントローラ（６ａ）は、第１読み出しコマンド及び第２読み出しコマンドのそれぞれに応答して、第１メモリ（４ａ）からデータを読み出し、読み出されたデータを第１ＤＭＡエンジン（１０ａ）及び第２ＤＭＡエンジン（１０ｂ）のそれぞれに返信する。第１ＤＭＡエンジン（１０ａ）及び第２ＤＭＡエンジン（１０ｂ）は、読み出されたデータを第２コントローラ（６ｂ）を介して第２メモリ（４ｂ）に書き込む。このように、データのコピー動作時に第１ＤＭＡエンジン（１０ａ）と第２ＤＭＡエンジン（１０ｂ）の両方が用いられるため、メモリデータのコピー速度が全体として向上し、メモリコピーに要する時間が短縮される。これにより、システム運用の一時停止期間が短縮される。
【００１３】
第１コントローラ（６ａ）は、第１読み出しコマンドに応答して、第１メモリ（４ａ）中の第１アドレス群に格納されたデータを読み出し、第２読み出しコマンドに応答して、第１メモリ（４ａ）中の第１アドレス群と異なる第２アドレス群に格納されたデータを読み出す。第１アドレス群は、奇数のアドレス群と偶数のアドレス群の一方を示し、第２アドレス群は、奇数のアドレス群と偶数のアドレス群の他方を示してもよい。
【００１４】
また、第１メモリ（４ａ）から第２メモリ（４ｂ）へのデータのコピー動作時、第１ＤＭＡエンジン（１０ａ）が故障している場合、第２ＤＭＡエンジン（１０ｂ）は、発信元が第２ＤＭＡエンジン（１０ｂ）に設定された読み出しコマンドを、第１コントローラ（６ａ）に発信する。第１コントローラ（６ａ）は、読み出しコマンドに応答して、第１メモリ（４ａ）からデータを読み出し、読み出されたデータを２ＤＭＡエンジンに返信する。第２ＤＭＡエンジン（１０ｂ）は、読み出されたデータを第２コントローラ（６ｂ）を介して第２メモリ（４ｂ）に書き込む。このように、第１ＤＭＡエンジン（１０ａ）が故障した場合においても、両系の間でデータをコピーすることが可能となる。
【００１５】
また、第１メモリ（４ａ）から第２メモリ（４ｂ）へのデータのコピー動作時、第２ＤＭＡエンジン（１０ｂ）が故障している場合、第１ＤＭＡエンジン（１０ａ）は、発信元が第１ＤＭＡエンジン（１０ａ）に設定された読み出しコマンドを、第１コントローラ（６ａ）に発信する。第１コントローラ（６ａ）は、読み出しコマンドに応答して、第１メモリ（４ａ）からデータを読み出し、読み出されたデータを第１ＤＭＡエンジン（１０ａ）に返信する。第１ＤＭＡエンジン（１０ａ）は、読み出されたデータを第２コントローラ（６ｂ）を介して第２メモリ（４ｂ）に書き込む。このように、第２ＤＭＡエンジン（１０ｂ）が故障した場合においても、両系の間でデータをコピーすることが可能となる。
【００１６】
また、第１メモリ（４ａ）から第２メモリ（４ｂ）へのデータのコピー動作時、第１ＤＭＡエンジン（１０ａ）は、発信元が第２ＤＭＡエンジン（１０ｂ）に設定された読み出しコマンドを、第１コントローラ（６ａ）に発信してもよい。第１コントローラ（６ａ）は、読み出しコマンドに応答して、第１メモリ（４ａ）からデータを読み出し、読み出されたデータを第２ＤＭＡエンジン（１０ｂ）に返信する。第２ＤＭＡエンジン（１０ｂ）は、読み出されたデータを第２コントローラ（６ｂ）を介して第２メモリ（４ｂ）に書き込む。
【００１７】
複数のデータリンクパス（１３ａ、１３ｂ、１４ａ、１４ｂ）のいずれかが故障している場合においても、上記動作のうちいずれかによって、両系の間でデータをコピーすることが可能である。
【００１８】
本発明に係るＤＭＡエンジン（１０ａ、１０ｂ）は、第１システム（１ａ）と、その第１システム（１ａ）と同期して動作する第２システム（１ｂ）とを有する二重化同期システム（１）内のＤＭＡエンジン（１０ａ、１０ｂ）である。このＤＭＡエンジン（１０ａ、１０ｂ）は、第１システム（１ａ）のＤＭＡエンジン（１０ａ）を示す第１ＩＤと、第２システム（１ｂ）のＤＭＡエンジン（１０ｂ）を示す第２ＩＤのいずれかを、発行元のＩＤとして付与し、コマンドを発行することができる。
【００１９】
本発明に係る二重化同期システム（１）の動作方法によれば、第１メモリ（４ａ）から第２メモリ（４ｂ）へのデータのコピー動作時、第１ＤＭＡエンジン（１０ａ）と第２ＤＭＡエンジン（１０ｂ）の少なくとも１つが用いられる。第１ＤＭＡエンジン（１０ａ）と第２ＤＭＡエンジン（１０ｂ）の両方が用いられてもよい。この時、第１メモリ（４ａ）中の奇数のアドレス群に格納されたデータの読み出しには、第１ＤＭＡエンジン（１０ａ）及び第２ＤＭＡエンジン（１０ｂ）のうち一方が用いられる。第１メモリ（４ａ）中の偶数のアドレス群に格納されたデータの読み出しには、第１ＤＭＡエンジン（１０ａ）及び第２ＤＭＡエンジン（１０ｂ）のうち他方が用いられる。また、第１ＤＭＡエンジン（１０ａ）と第２ＤＭＡエンジン（１０ｂ）のうち、故障していない方が用いられてもよい。
【発明の効果】
【００２０】
本発明に係る二重化同期システム及びその動作方法によれば、メモリコピー時間が短縮される。
【００２１】
本発明に係る二重化同期システム及びその動作方法によれば、システム運用の一時停止期間が短縮される。
【００２２】
本発明に係る二重化同期システム及びその動作方法によれば、一方の系のＤＭＡエンジンが故障した場合においても、両系の間でデータをコピーすることが可能となる。
【００２３】
本発明に係る二重化同期システム及びその動作方法によれば、両系間を接続するデータパスの一部が故障した場合においても、両系の間でデータをコピーすることが可能となる。
【発明を実施するための最良の形態】
【００２４】
添付図面を参照して、本発明による二重化同期システム、及び二重化同期システムにおけるコピー方法を説明する。
【００２５】
図１は、本発明に係る二重化同期システムの構成を示すブロック図である。この二重化同期システム１は、第１システム（第１系）１ａ及び第２システム（第２系）１ｂから構成されている。第１システム１ａと第２システム１ｂは、互いに同期して動作する。
【００２６】
第１システム１ａは、制御ＬＳＩ２ａ、ＣＰＵ３ａ、メインメモリ（Main Memory）４ａを備えている。制御ＬＳＩ２ａは、ＣＰＵ３ａ及びメインメモリ４ａに接続されている。制御ＬＳＩ２ａは、ＣＰＵコントローラ（CPU Controller）５ａ、メモリコントローラ（Memory Controller）６ａ、ルータ（Router）７ａ、ＩＯコンパレータ（IO Comparator）８ａ、ＩＯコントローラ（IO Controller）９ａ、ＤＭＡエンジン（DMA Engine）１０ａ、ＩＢリンクコントローラ（In-Bound Link Controller）１１ａ、及びＯＢリンクコントローラ（Out-Bound Link Controller）１２ａを備えている。
【００２７】
第２システム１ｂは、第１システム１ａと同様の構成を有している。すなわち、第２システム１ｂは、制御ＬＳＩ２ｂ、ＣＰＵ３ｂ、メインメモリ４ｂを備えている。制御ＬＳＩ２ｂは、ＣＰＵ３ｂ及びメインメモリ４ｂに接続されている。制御ＬＳＩ２ｂは、ＣＰＵコントローラ５ｂ、メモリコントローラ６ｂ、ルータ７ｂ、ＩＯコンパレータ８ｂ、ＩＯコントローラ９ｂ、ＤＭＡエンジン１０ｂ、ＩＢリンクコントローラ１１ｂ、及びＯＢリンクコントローラ１２ｂを備えている。
【００２８】
ＣＰＵコントローラ５は、ＣＰＵ３に対する接続バスを制御する。メモリコントローラ６は、メモリ４に対するアクセス（読み書き）を制御する。ルータ７は、ルーティングを制御する機能を有し、各リクエストを、ＣＰＵ系、メモリ系、ＩＯ系のいずれかへルーティングする。ＩＯコントローラ９は、ＩＯデバイスに対する接続バスを制御する。
【００２９】
第１システム１ａと第２システム１ｂは、複数のデータリンクパス（Data Link Path）１３ａ、１３ｂ、１４ａ及び１４ｂを介して接続されている。ＩＯ側からＣＰＵ／メモリ側へのデータ転送（In-Bound）には、データリンクパス１３が用いられ、ＣＰＵ／メモリ側からＩＯ側へのデータ転送（Out-Bound）には、データリンクパス１４が用いられる。ＩＢリンクコントローラ１１は、Ｉｎ−Ｂｏｕｎｄのデータ転送（以下、ＩＢデータ転送と参照される）を制御する。ＯＢリンクコントローラ１２は、Ｏｕｔ−Ｂｏｕｎｄのデータ転送（以下、ＯＢデータ転送と参照される）を制御する。
【００３０】
第１システム１ａから第２システム１ｂへのＩＢデータ転送は、ＩＢリンクコントローラ１１ａ、データリンクパス１３ａ、及びＯＢリンクコントローラ１２ｂを介して実行される。第１システム１ａから第２システム１ｂへのＯＢデータ転送は、ＯＢリンクコントローラ１２ａ、データリンクパス１４ａ、及びＩＢリンクコントローラ１１ｂを介して実行される。第２システム１ｂから第１システム１ａへのＩＢデータ転送は、ＩＢリンクコントローラ１１ｂ、データリンクパス１３ｂ、及びＯＢリンクコントローラ１２ａを介して実行される。第２システム１ｂから第１システム１ａへのＯＢデータ転送は、ＯＢリンクコントローラ１２ｂ、データリンクパス１４ｂ、及びＩＢリンクコントローラ１１ａを介して実行される。尚、ＩＯコンパレータ８は、運用動作時に、自系のＯｕｔＢｏｕｎｄアクセスと、他系からのＯｕｔＢｏｕｎｄアクセスの比較を行う。
【００３１】
ＤＭＡエンジン（ＤＭＡコントローラ）１０は、ＤＭＡ転送の制御を行う。ＤＭＡ（Direct Memory Access）転送においては、ＣＰＵ３を介さずに、Ｉ/Ｏ機器とメモリ４との間でデータが直接転送される。第１システム１ａのＤＭＡエンジン１０ａは、ルータ７ａを介してメモリコントローラ６ａにアクセス可能である。また、このＤＭＡエンジン１０ａは、ＩＢリンクコントローラ１１ａを介して、第２システム１ｂのメモリコントローラ６ｂにアクセス可能である。第２システム１ｂのＤＭＡエンジン１０ｂは、ルータ７ｂを介してメモリコントローラ６ｂにアクセス可能である。また、このＤＭＡエンジン１０ｂは、ＩＢリンクコントローラ１１ｂを介して、第１システム１ａのメモリコントローラ６ａにアクセス可能である。
【００３２】
図２は、本発明に係るＤＭＡエンジン１０の構成を更に詳しく示している。本発明に係るＤＭＡエンジン１０は、コンフィグレジスタ２０を有している。コンフィグレジスタ２０には、「ＤＭＡ動作モード」、「コピー元ＩＤ」、「コピー先ＩＤ」、「メモリコピー開始アドレス」、「サイズ」、及び「コントロールデータ（情報）」が設定される。「ＤＭＡ動作モード」としては、次の３種類が設定可能である：１．両系マスタモード，２．両系スレーブモード，３．片系マスタモード。各々のモードにおける動作は、後に詳しく説明される。「コピー元ＩＤ」には、コピー元であるメインメモリ４のＩＤが設定される。「コピー先ＩＤ」には、コピー先であるメインメモリ４のＩＤが設定される。「メモリコピー開始アドレス」には、コピーが開始されるアドレスが設定される。「サイズ」には、コピーされる領域のサイズが設定される。ＤＭＡエンジン１０は、サイズ分アドレスを更新し、読み出しコマンドを発信する。「コントロールデータ」には、“擬装設定”とＤＭＡ開始ビットなどが設定される。擬装設定に関しては、後に詳しく説明される。ＤＭＡ開始ビットがＯＮになると、ＤＭＡ動作が開始する。
【００３３】
コンフィグレジスタ２０に対するこれらの設定は、ＣＰＵ３によって行われる。つまり、第１システム１ａのＤＭＡエンジン１０ａは、コンフィグレジスタ２０ａを有しており、そのコンフィグレジスタ２０ａに対する設定は、ＣＰＵ３ａまたはＣＰＵ３ｂによって行われる。第２システム１ｂのＤＭＡエンジン１０ｂは、コンフィグレジスタ２０ｂを有しており、そのコンフィグレジスタ２０ｂに対する設定は、ＣＰＵ３ｂまたはＣＰＵ３ａによって行われる。
【００３４】
このような二重化同期システム１において、ある構成要素から他の構成要素に対するリクエスト（コマンド）は、パケットを転送することにより実行される。以下の説明において、コマンドを発行する側、すなわちパケットを送信する側は、「発信元（ソース）」と参照される。また、そのパケットを受け取る側は、「相手先（ターゲット）」と参照される。
【００３５】
図３は、本発明に係る二重化同期システム１において用いられるパケットの内容を示している。コンフィグ用パケットは、コンフィグレジスタ２０の設定を行うために、ＣＰＵ３が生成する。このコンフィグ用パケットは、ターゲットを示すＩＤである「ターゲットＩＤ」、ソースを示すＩＤである「ソースＩＤ」、ＣＰＵ３が発行する「コンフィグライト・コマンド」、「レジスタアドレス」、及びコンフィグレジスタ２０に設定される「レジスタデータ」を有している。リード用パケットは、メインメモリ４からデータを読み出すために、ＤＭＡエンジン１０が生成する。このリード用パケットは、「ターゲットＩＤ」、「ソースＩＤ」、ＤＭＡエンジン１０が発行する「ＤＭＡメモリコピーリード・コマンド」、及び「メモリアドレス」を有している。コンプリション用パケットは、メモリコントローラ６が発行する。このコンプリション用パケットは、「ターゲットＩＤ」、「ソースＩＤ」、メモリコントローラ６が発行する「コンプリション・コマンド」、「メモリアドレス」、及びメインメモリ４から読み出された「メモリデータ」を有している。ライト用パケットは、メインメモリ４にデータを書き込むために、ＤＭＡエンジン１０が生成する。このライト用パケットは、「ターゲットＩＤ」、「ソースＩＤ」、ＤＭＡエンジン１０が発行する「ＤＭＡメモリコピーライト・コマンド」、「メモリアドレス」、及び「メモリデータ」を有している。
【００３６】
ＣＰＵ３は、第１システム１ａのＤＭＡエンジン１０ａ（第１ＤＭＡエンジン）及び第２システム１ｂのＤＭＡエンジン１０ｂ（第２ＤＭＡエンジン）に、コンフィグ用パケットを送信することができる。コンフィグライト・コマンドによって、対応するコンフィグレジスタ２０の設定が行われる。
【００３７】
ＤＭＡ動作時、ＤＭＡエンジン１０は、第１システム１ａのメモリコントローラ６ａ及びメモリコントローラ６ｂに、リード用パケット（読み出しコマンド）を送信することができる。このリード用パケットにおいて、ターゲットＩＤは、コンフィグレジスタ２０に設定されたコピー元ＩＤに対応したメモリコントローラ６に設定される。
【００３８】
メモリコントローラ６は、リード用パケットを受け取る。ＤＭＡメモリコピーリード・コマンド（読み出しコマンド）に応答して、メモリコントローラ６は、対応するメインメモリ４から所定のデータを読み出す。データが読み出された後、メモリコントローラ６は、コンプリション用パケットをルータ７に送信する。ここで、メモリコントローラ６は、リード用パケット中に示されたターゲットＩＤとソースＩＤを入れ替えて、コンプリション用パケットのターゲットＩＤとソースＩＤに設定する。すなわち、リード用パケットのターゲットＩＤはコンプリション用パケットのソースＩＤとなり、リード用パケットのソースＩＤはコンプリション用パケットのターゲットＩＤとなる。
【００３９】
ルータ７は、コンプリション用パケットを受け取ると、そのターゲットＩＤをチェックする。そして、ルータ７は、そのターゲットＩＤに応じて、コンプリション用パケットを自系のＤＭＡエンジン１０、あるいはＯＢリンクコントローラ１２を介して他系のＤＭＡエンジン１０にフォワードする。
【００４０】
ＤＭＡエンジン１０は、コンプリション用パケットを受け取ると、ライト用パケット（書き込みコマンド）を出力する。このライト用パケットにおいて、ターゲットＩＤは、コンフィグレジスタ２０に設定されたコピー先ＩＤに対応したメモリコントローラ６に設定される。メモリコントローラ６は、ライト用パケットを受け取る。ＤＭＡメモリコピーライト・コマンド（書き込みコマンド）に応答して、メモリコントローラ６は、対応するメインメモリ４にメモリデータを書き込む。
【００４１】
このようにして、ＤＭＡ動作時には、一方の系のメインメモリ４から、他方の系のメインメモリ４へのデータコピーが実行される。ここで、本発明に係るＤＭＡエンジン１０は、リード用パケットのソースとして、第１ＤＭＡエンジン１０ａと第２ＭＡエンジン１０ｂのいずれをも設定することができる。例えば、第１システム１ａの第１ＤＭＡエンジン１０ａは、ソースが第１ＤＭＡエンジン１０ａに設定されたリード用パケットだけでなく、ソースが第２ＤＭＡエンジン１０ｂに設定されたリード用パケットをも発信することが可能である。この時、ソースが第２ＤＭＡエンジン１０ｂに設定されたリード用パケットは、「擬装パケット」である。すなわち、その擬装パケットを受け取るメモリコントローラ６は、そのリード用パケットが第２ＤＭＡエンジン１０ｂから発信されたものであると解釈する。よって、その擬装パケットに対応するコンプリション用パケットは、第１ＤＭＡエンジン１０ａではなく、第２ＤＭＡエンジン１０ｂに向けて送信される。どのような擬装が行われるかが、コンフィグレジスタ２０の“擬装設定”として設定される。
【００４２】
以下、いくつかの例を示すことによって、本発明に係る二重化同期システム１とＤＭＡエンジン１０の動作及びその作用・効果を、詳しく説明する。以下の動作例においては、第２システム１ｂのＣＰＵ３ｂが故障から復旧した後、第１システム１ａのメインメモリ４ａ（コピー元）から、第２システム１ｂのメインメモリ４ｂ（コピー先）へデータがコピーされる状況が示される。
【００４３】
（第１の実施の形態）
本実施の形態においては、第１ＤＭＡエンジン１０ａと第２ＤＭＡエンジン１０ｂの両方が用いられる（両系モード）。図４は、本実施の形態における処理の流れを示している。
【００４４】
まず、第１システム１ａのＣＰＵ３ａは、第１ＤＭＡエンジン１０ａ及び第２ＤＭＡエンジン１０ｂが使用可能であり、データリンクパス１３、１４にエラーが発生していないことを確認する。その後、ＣＰＵ３ａは、コンフィグ用パケットを第１ＤＭＡエンジン１０ａに送信する（ステップＳ１１−１）。また、ＣＰＵ３ａは、コンフィグ用パケットを、データリンクパス１４ａ（Out-Bound）を介して第２ＤＭＡエンジン１０ｂに送信する（ステップＳ１１−２）。これにより、コンフィグレジスタ２０ａ及びコンフィグレジスタ２０ｂの設定が行われる。
【００４５】
図５は、設定されたコンフィグレジスタ２０の内容を示している。コンフィグレジスタ２０ａにおいて、ＤＭＡ動作モードは「両系マスタモード」に設定され、コンフィグレジスタ２０ｂにおいて、ＤＭＡ動作モードは「両系スレーブモード」に設定される。つまり、本実施の形態において、第１システム１ａがマスタとして機能し、第２システム１ｂがスレーブとして機能する。また、コンフィグレジスタ２０ａにおいて、擬装設定は、「奇数／偶数」に設定される。この設定によれば、後述されるように、読み出しアドレスが奇数か偶数かに応じて、擬装がＯＮ／ＯＦＦされる。また、両コンフィグレジスタ２０において、コピー元は、メインメモリ４ａに設定され、コピー先は、メインメモリ４ｂに設定される。また、ＤＭＡ開始ビットがＯＮになり、ＤＭＡ動作が開始する。
【００４６】
ＤＭＡ動作モードが「両系スレーブモード」に設定された場合、第２ＤＭＡエンジン１０ｂは、リード用パケットを出力しない。ＤＭＡ動作モードが「両系マスタモード」に設定された場合、第１ＤＭＡエンジン１０ａは、擬装設定に基づいてリード用パケットを生成し、生成されたリード用パケットを出力する。
【００４７】
図６は、第１ＤＭＡエンジン１０ａによって生成されるリード用パケットの内容を示している。本実施の形態において、第１ＤＭＡエンジン１０ａは、２種類のリード用パケットを生成する。例えば、第１リード用パケットのソースとしては、第１ＤＭＡエンジン１０ａが設定され、第２リード用パケットのソースとしては、第２ＤＭＡエンジン１０ｂが設定される。つまり、第２リード用パケットは、「擬装パケット」である。また、両パケットにおいて、ターゲットは、コンフィグレジスタ２０ａに設定されたコピー元ＩＤ（メインメモリ４ａ）に基づいて、メモリコントローラ６ａに設定されている。また、第１リード用パケットは、メインメモリ４ａ中の奇数アドレスに対応づけられ、第２リード用パケットは、メインメモリ４ａ中の偶数アドレスに対応づけられている。この時、第１リード用パケットは、奇数のアドレス群に格納されたデータを読み出すために用いられる。一方、第２リード用パケットは、偶数のアドレス群に格納されたデータを読み出すために用いられる。尚、第１リード用パケットが偶数アドレスに対応し、第２リード用パケットが奇数アドレスに対応していてもよい。
【００４８】
第１ＤＭＡエンジン１０ａは、生成された第１リード用パケット及び第２リード用パケットを、ルータ７ａ経由でメモリコントローラ６ａに送信する（ステップＳ１２）。メモリコントローラ６ａは、第１リード用パケットを受け取ると、ＤＭＡメモリコピーリード・コマンドに応答して、メインメモリ４ａの奇数アドレスからリードデータを読み出す。続いて、メモリコントローラ６ａは、そのリードデータを含む第１コンプリション用パケットをルータ７ａに送信する（ステップＳ１３）。また、メモリコントローラ６ａは、第２リード用パケットを受け取ると、ＤＭＡメモリコピーリード・コマンドに応答して、メインメモリ４ａの偶数アドレスからリードデータを読み出す。続いて、メモリコントローラ６ａは、そのリードデータを含む第２コンプリション用パケットをルータ７ａに送信する（ステップＳ１３）。
【００４９】
図７は、メモリコントローラ６ａから出力される第１コンプリション用パケット及び第２コンプリション用パケットの内容を示している。メモリコントローラ６ａは、リード用パケット中に示されたターゲットＩＤとソースＩＤを入れ替えて、コンプリション用パケットのターゲットＩＤとソースＩＤに設定する。すなわち、第１コンプリション用パケットにおいて、ターゲットは第１ＤＭＡエンジン１０ａに設定され、ソースはメモリコントローラ６ａに設定される。また、第２コンプリション用パケットにおいて、ターゲットは第２ＤＭＡエンジン１０ｂに設定され、ソースはメモリコントローラ６ａに設定される。
【００５０】
ルータ７ａは、コンプリション用パケットを受け取ると、そのターゲットＩＤをチェックする。第１コンプリション用パケットを受け取った場合、すなわちターゲットが第１ＤＭＡエンジン１０ａの場合、ルータ７ａは、その第１コンプリション用パケットを、ＩＯコンパレータ８ａ経由で第１ＤＭＡエンジン１０ａにフォワードする（ステップＳ１４−１）。第２コンプリション用パケットを受け取った場合、すなわちターゲットが第２ＤＭＡエンジン１０ｂの場合、ルータ７ａは、その第２コンプリション用パケットを、ＯＢリンクコントローラ１２ａにフォワードする。これにより、第２コンプリション用パケットは、データリンクパス１４ａ、ＩＢリンクコントローラ１１ｂ、及びＩＯコンパレータ８ｂを経由して、第２ＤＭＡエンジン１０ｂに伝送される（ステップＳ１４−２）。
【００５１】
第１ＤＭＡエンジン１０ａは、第１コンプリション用パケットを受け取ると、ライト用パケットを生成する。ライト用パケットにおいて、ターゲットは、コンフィグレジスタ２０ａに設定されたコピー先ＩＤ（メインメモリ４ｂ）に基づいて、メモリコントローラ６ｂに設定される。よって、第１ＤＭＡエンジン１０ａから出力されたライト用パケットは、ＩＢリンクコントローラ１１ａ、データリンクパス１３ａ、ＯＢリンクコントローラ１２ｂ、ルータ７ｂを経由して、メモリコントローラ６ｂに伝送される（ステップＳ１５−１）。メモリコントローラ６ｂは、ライト用パケットを受け取ると、ＤＭＡメモリコピーライト・コマンドに応答して、メインメモリ４ｂの奇数アドレスにリードデータを書き込む。
【００５２】
ＤＭＡ動作モードが「両系スレーブモード」に設定されたＤＭＡエンジン１０は、ライト用パケットのみ生成する。つまり、第２ＤＭＡエンジン１０ｂは、第２コンプリション用パケットを受け取ると、ライト用パケットを生成する。ライト用パケットにおいて、ターゲットは、コンフィグレジスタ２０ｂに設定されたコピー先ＩＤ（メインメモリ４ｂ）に基づいて、メモリコントローラ６ｂに設定される。よって、第２ＤＭＡエンジン１０ｂから出力されたライト用パケットは、ルータ７ｂを経由して、メモリコントローラ６ｂに伝送される（ステップＳ１５−２）。メモリコントローラ６ｂは、ライト用パケットを受け取ると、ＤＭＡメモリコピーライト・コマンドに応答して、メインメモリ４ｂの偶数アドレスにリードデータを書き込む。
【００５３】
以上に示されたＤＭＡ動作により、メインメモリ４ａからメインメモリ４ｂへ、メモリデータがコピーされる。上記例において、擬装パケットは、アドレスが奇数か偶数かに依存して生成されたが、擬装設定はこれに限られない。例えば、メインメモリ４のメモリ空間が二分割され、開始アドレスが分けられる。第１リード用パケットは、第１のアドレス群に対応づけられ、第２リード用パケットは、第１のアドレス群と異なる第２のアドレス群に対応づけられる。
【００５４】
以上に説明されたように、本実施の形態によれば、第１ＤＭＡエンジン１０ａが擬装パケットを生成するので、第１ＤＭＡエンジン１０ａ及び第２ＤＭＡエンジン１０ｂの両方を同時に用いてデータコピーを実行することが可能となる。上記例においては、第２ＤＭＡエンジン１０ｂが、第２コンプリション用パケットに対するライト用パケットの生成の役割を担うことになる。つまり、第１ＤＭＡエンジン１０ａの負荷が軽減される。よって、メモリデータのコピー速度が全体として向上し、メモリコピーに要する総時間が短縮される。すなわち、システム運用の一時停止期間が短縮される。
【００５５】
また、第１ＤＭＡエンジン１０ａが生成したライト用パケットは、データリンクパス１３ａを経由してメモリコントローラ６ｂに伝送され、第２コンプリション用パケットは、データリンクパス１４ａを経由して第２ＤＭＡエンジン１０ｂに伝送される。つまり、系間の転送すなわちデータコピーを、データリンクパス１３ａ及び１４ａの両方を同時に用いて実行することが可能となる。従って、メモリデータのコピー速度が全体として向上し、メモリコピーに要する総時間が短縮される。よって、システム運用の一時停止期間が短縮される。
【００５６】
また、第１ＤＭＡエンジン１０ａが擬装パケットを生成するため、第２ＤＭＡエンジン１０ｂがリード用パケット（読み出しコマンド）を発行する必要がない。つまり、読み出しコマンドを、第２ＤＭＡエンジン１０ｂから、ＩＢリンクコントローラ１１ｂ、データリンクパス１３ｂ、ＯＢリンクコントローラ１２ａ、ルータ７ａを介して、メモリコントローラ６ａに伝送する必要がない。系間をまたがる読み出しコマンドの転送が省略される。従って、メモリデータのコピー速度が全体として向上し、メモリコピーに要する総時間が短縮される。すなわち、システム運用の一時停止期間が短縮される。
【００５７】
（第２の実施の形態）
本実施の形態において、第１システム１ａの第１ＤＭＡエンジン１０ａが故障しているとする。この場合、故障していない第２ＤＭＡエンジン１０ｂのみが用いられる（片系モード）。図８は、本実施の形態における処理の流れを示している。
【００５８】
まず、第１システム１ａのＣＰＵ３ａは、第１ＤＭＡエンジン１０ａの故障を検出し、また、第２ＤＭＡエンジン１０ｂが使用可能であり、データリンクパス１３、１４にエラーが発生していないことを確認する。その後、ＣＰＵ３ａは、コンフィグ用パケットを、データリンクパス１４ａ（Out-Bound）を介して第２ＤＭＡエンジン１０ｂに送信する（ステップＳ２１）。これにより、コンフィグレジスタ２０ｂの設定が行われる。
【００５９】
図９は、設定されたコンフィグレジスタ２０ｂの内容を示している。コンフィグレジスタ２０ｂにおいて、ＤＭＡ動作モードは「片系マスタモード」に設定される。また、コンフィグレジスタ２０ｂにおいて、コピー元は、メインメモリ４ａに設定され、コピー先は、メインメモリ４ｂに設定される。ＤＭＡ動作モードが「片系マスタモード」に設定された場合、擬装設定は設定されない。また、ＤＭＡ開始ビットがＯＮになり、ＤＭＡ動作が開始する。
【００６０】
第２ＤＭＡエンジン１０ｂは、リード用パケットを生成する。図１０は、第２ＤＭＡエンジン１０ｂによって生成されるリード用パケットの内容を示している。リード用パケットのソースは、第２ＤＭＡエンジン１０ｂに設定される。また、リード用パケットのターゲットは、コンフィグレジスタ２０ｂに設定されたコピー元ＩＤ（メインメモリ４ａ）に基づいて、メモリコントローラ６ａに設定される。よって、第２ＤＭＡエンジン１０ｂから出力されたリード用パケットは、ＩＢリンクコントローラ１１ｂ、データリンクパス１３ｂ、ＯＢリンクコントローラ１２ａ、ルータ７ａを経由して、メモリコントローラ６ａに伝送される（ステップＳ２２）。
【００６１】
メモリコントローラ６ａは、リード用パケットを受け取ると、ＤＭＡメモリコピーリード・コマンドに応答して、メインメモリ４ａからリードデータを読み出す。続いて、メモリコントローラ６ａは、そのリードデータを含むコンプリション用パケットをルータ７ａに送信する（ステップＳ２３）。メモリコントローラ６ａは、リード用パケット中に示されたターゲットＩＤとソースＩＤを入れ替えて、コンプリション用パケットのターゲットＩＤとソースＩＤに設定する。すなわち、コンプリション用パケットにおいて、ターゲットは第２ＤＭＡエンジン１０ｂに設定され、ソースはメモリコントローラ６ａに設定される。
【００６２】
ルータ７ａは、コンプリション用パケットを受け取ると、そのターゲットＩＤをチェックする。ここでは、ターゲットは第２ＤＭＡエンジン１０ｂであるため、ルータ７ａは、そのコンプリション用パケットを、ＯＢリンクコントローラ１２ａにフォワードする。これにより、そのコンプリション用パケットは、データリンクパス１４ａ、ＩＢリンクコントローラ１１ｂ、及びＩＯコンパレータ８ｂを経由して、第２ＤＭＡエンジン１０ｂに伝送される（ステップＳ２４）。
【００６３】
第２ＤＭＡエンジン１０ｂは、コンプリション用パケットを受け取ると、ライト用パケットを生成する。ライト用パケットにおいて、ターゲットは、コンフィグレジスタ２０ｂに設定されたコピー先ＩＤ（メインメモリ４ｂ）に基づいて、メモリコントローラ６ｂに設定される。よって、第２ＤＭＡエンジン１０ｂから出力されたライト用パケットは、ルータ７ｂを経由して、メモリコントローラ６ｂに伝送される（ステップＳ２５）。メモリコントローラ６ｂは、ライト用パケットを受け取ると、ＤＭＡメモリコピーライト・コマンドに応答して、メインメモリ４ｂにリードデータを書き込む。
【００６４】
以上に説明されたように、本実施の形態によれば、第１ＤＭＡエンジン１０ａが故障していたとしても、第１メインメモリ４ａから第２メインメモリ４ｂにメモリデータをコピーすることが可能となる。
【００６５】
（第３の実施の形態）
本実施の形態において、第２システム１ｂの第２ＤＭＡエンジン１０ｂが故障しているとする。この場合、故障していない第１ＤＭＡエンジン１０ａのみが用いられる（片系モード）。図１１は、本実施の形態における処理の流れを示している。
【００６６】
まず、第１システム１ａのＣＰＵ３ａは、第２ＤＭＡエンジン１０ｂの故障を検出し、また、第１ＤＭＡエンジン１０ａが使用可能であり、データリンクパス１３、１４にエラーが発生していないことを確認する。その後、ＣＰＵ３ａは、コンフィグ用パケットを、第１ＤＭＡエンジン１０ａに送信する（ステップＳ３１）。これにより、コンフィグレジスタ２０ａの設定が行われる。
【００６７】
図１２は、設定されたコンフィグレジスタ２０ａの内容を示している。コンフィグレジスタ２０ａにおいて、ＤＭＡ動作モードは「片系マスタモード」に設定される。また、コンフィグレジスタ２０ａにおいて、コピー元は、メインメモリ４ａに設定され、コピー先は、メインメモリ４ｂに設定される。ＤＭＡ動作モードが「片系マスタモード」に設定された場合、擬装設定は設定されない。また、ＤＭＡ開始ビットがＯＮになり、ＤＭＡ動作が開始する。
【００６８】
第１ＤＭＡエンジン１０ａは、リード用パケットを生成する。図１３は、第１ＤＭＡエンジン１０ａによって生成されるリード用パケットの内容を示している。リード用パケットのソースは、第１ＤＭＡエンジン１０ａに設定される。また、リード用パケットのターゲットは、コンフィグレジスタ２０ａに設定されたコピー元ＩＤ（メインメモリ４ａ）に基づいて、メモリコントローラ６ａに設定される。よって、第１ＤＭＡエンジン１０ａから出力されたリード用パケットは、ルータ７ａを経由して、メモリコントローラ６ａに伝送される（ステップＳ３２）。
【００６９】
メモリコントローラ６ａは、リード用パケットを受け取ると、ＤＭＡメモリコピーリード・コマンドに応答して、メインメモリ４ａからリードデータを読み出す。続いて、メモリコントローラ６ａは、そのリードデータを含むコンプリション用パケットをルータ７ａに送信する（ステップＳ３３）。メモリコントローラ６ａは、リード用パケット中に示されたターゲットＩＤとソースＩＤを入れ替えて、コンプリション用パケットのターゲットＩＤとソースＩＤに設定する。すなわち、コンプリション用パケットにおいて、ターゲットは第１ＤＭＡエンジン１０ａに設定され、ソースはメモリコントローラ６ａに設定される。
【００７０】
ルータ７ａは、コンプリション用パケットを受け取ると、そのターゲットＩＤをチェックする。ここでは、ターゲットは第１ＤＭＡエンジン１０ａであるため、ルータ７ａは、そのコンプリション用パケットを、ＩＯコンパレータ８ａ経由で第１ＤＭＡエンジン１０ａにフォワードする（ステップＳ３４）。
【００７１】
第１ＤＭＡエンジン１０ａは、コンプリション用パケットを受け取ると、ライト用パケットを生成する。ライト用パケットにおいて、ターゲットは、コンフィグレジスタ２０ａに設定されたコピー先ＩＤ（メインメモリ４ｂ）に基づいて、メモリコントローラ６ｂに設定される。よって、第１ＤＭＡエンジン１０ａから出力されたライト用パケットは、ＩＢリンクコントローラ１１ａ、データリンクパス１３ａ、ＯＢリンクコントローラ１２ｂ、ルータ７ｂを経由して、メモリコントローラ６ｂに伝送される（ステップＳ３５）。メモリコントローラ６ｂは、ライト用パケットを受け取ると、ＤＭＡメモリコピーライト・コマンドに応答して、メインメモリ４ｂにリードデータを書き込む。
【００７２】
以上に説明されたように、本実施の形態によれば、第２ＤＭＡエンジン１０ｂが故障していたとしても、第１メインメモリ４ａから第２メインメモリ４ｂにメモリデータをコピーすることが可能となる。また、図１１に示されるように、使用されるデータリンクパスは、データリンクパス１３ａのみである。よって、データリンクパスの故障に対する耐性に優れている。
【００７３】
（第４の実施の形態）
本実施の形態は、第１の実施の形態とは異なる両系モードである。つまり、第１ＤＭＡエンジン１０ａと第２ＤＭＡエンジン１０ｂの両方が用いられる。図１４は、本実施の形態における処理の流れを示している。
【００７４】
まず、第１システム１ａのＣＰＵ３ａは、第１ＤＭＡエンジン１０ａ及び第２ＤＭＡエンジン１０ｂが使用可能であることを確認する。その後、ＣＰＵ３ａは、コンフィグ用パケットを第１ＤＭＡエンジン１０ａに送信する（ステップＳ４１−１）。また、ＣＰＵ３ａは、コンフィグ用パケットを、データリンクパス１４ａ（Out-Bound）を介して第２ＤＭＡエンジン１０ｂに送信する（ステップＳ４１−２）。これにより、コンフィグレジスタ２０ａ及びコンフィグレジスタ２０ｂの設定が行われる。
【００７５】
図１５は、設定されたコンフィグレジスタ２０の内容を示している。コンフィグレジスタ２０ａにおいて、ＤＭＡ動作モードは「両系マスタモード」に設定され、コンフィグレジスタ２０ｂにおいて、ＤＭＡ動作モードは「両系スレーブモード」に設定される。つまり、本実施の形態において、第１システム１ａがマスタとして機能し、第２システム１ｂがスレーブとして機能する。また、コンフィグレジスタ２０ａにおいて、擬装設定は、「全変更」に設定される。この設定によれば、後述されるように、全てのリード用パケットが擬装される。また、両コンフィグレジスタ２０において、コピー元は、メインメモリ４ａに設定され、コピー先は、メインメモリ４ｂに設定される。また、ＤＭＡ開始ビットがＯＮになり、ＤＭＡ動作が開始する。
【００７６】
ＤＭＡ動作モードが「両系スレーブモード」に設定されるので、第２ＤＭＡエンジン１０ｂは、リード用パケットを出力しない。ＤＭＡ動作モードが「両系マスタモード」に設定されるので、第１ＤＭＡエンジン１０ａは、擬装設定に基づいてリード用パケットを生成し、生成されたリード用パケットを出力する。
【００７７】
図１６は、第１ＤＭＡエンジン１０ａによって生成されるリード用パケットの内容を示している。本実施の形態において、第１ＤＭＡエンジン１０ａは、全てのリード用パケットを「擬装パケット」とする。つまり、全てのリード用パケットのソースは、第２ＤＭＡエンジン１０ｂに設定される。また、リード用パケットのターゲットは、コンフィグレジスタ２０ａに設定されたコピー元ＩＤ（メインメモリ４ａ）に基づいて、メモリコントローラ６ａに設定される。よって、第１ＤＭＡエンジン１０ａから出力されたリード用パケットは、ルータ７ａを経由して、メモリコントローラ６ａに伝送される（ステップＳ４２）。
【００７８】
メモリコントローラ６ａは、リード用パケットを受け取ると、ＤＭＡメモリコピーリード・コマンドに応答して、メインメモリ４ａからリードデータを読み出す。続いて、メモリコントローラ６ａは、そのリードデータを含むコンプリション用パケットをルータ７ａに送信する（ステップＳ４３）。メモリコントローラ６ａは、リード用パケット中に示されたターゲットＩＤとソースＩＤを入れ替えて、コンプリション用パケットのターゲットＩＤとソースＩＤに設定する。すなわち、コンプリション用パケットにおいて、ターゲットは第２ＤＭＡエンジン１０ｂに設定され、ソースはメモリコントローラ６ａに設定される。
【００７９】
ルータ７ａは、コンプリション用パケットを受け取ると、そのターゲットＩＤをチェックする。ここでは、ターゲットは第２ＤＭＡエンジン１０ｂであるため、ルータ７ａは、そのコンプリション用パケットを、ＯＢリンクコントローラ１２ａにフォワードする。これにより、そのコンプリション用パケットは、データリンクパス１４ａ、ＩＢリンクコントローラ１１ｂ、及びＩＯコンパレータ８ｂを経由して、第２ＤＭＡエンジン１０ｂに伝送される（ステップＳ４４）。
【００８０】
第２ＤＭＡエンジン１０ｂは、コンプリション用パケットを受け取ると、ライト用パケットを生成する。ライト用パケットにおいて、ターゲットは、コンフィグレジスタ２０ｂに設定されたコピー先ＩＤ（メインメモリ４ｂ）に基づいて、メモリコントローラ６ｂに設定される。よって、第２ＤＭＡエンジン１０ｂから出力されたライト用パケットは、ルータ７ｂを経由して、メモリコントローラ６ｂに伝送される（ステップＳ４５）。メモリコントローラ６ｂは、ライト用パケットを受け取ると、ＤＭＡメモリコピーライト・コマンドに応答して、メインメモリ４ｂにリードデータを書き込む。
【００８１】
本実施の形態によれば、図１４に示されたように、使用されるデータリンクパスは、データリンクパス１４ａのみである。よって、データリンクパスの故障に対する耐性に優れている。
【００８２】
また、第１ＤＭＡエンジン１０ａが擬装パケットを生成するので、第１ＤＭＡエンジン１０ａ及び第２ＤＭＡエンジン１０ｂの両方を同時に用いてデータコピーを実行することが可能となる。上記例においては、第２ＤＭＡエンジン１０ｂが、コンプリション用パケットに対するライト用パケットの生成の役割を担うことになる。つまり、第１ＤＭＡエンジン１０ａの負荷が軽減される。よって、メモリデータのコピー速度が全体として向上し、メモリコピーに要する総時間が短縮される。すなわち、システム運用の一時停止期間が短縮される。
【００８３】
また、第１ＤＭＡエンジン１０ａが擬装パケットを生成するため、第２ＤＭＡエンジン１０ｂがリード用パケット（読み出しコマンド）を発行する必要がない。つまり、読み出しコマンドを、第２ＤＭＡエンジン１０ｂから、ＩＢリンクコントローラ１１ｂ、データリンクパス１３ｂ、ＯＢリンクコントローラ１２ａ、ルータ７ａを介して、メモリコントローラ６ａに伝送する必要がない。系間をまたがる読み出しコマンドの転送が省略される。従って、メモリデータのコピー速度が全体として向上し、メモリコピーに要する総時間が短縮される。すなわち、システム運用の一時停止期間が短縮される。
【００８４】
（第５の実施の形態）
本発明は、データリンクパス１３、１４にエラーが発生した場合にも有用である。
【００８５】
データリンクパス１３ａが故障している場合、第２の実施の形態あるいは第４の実施の形態を適用することが可能である。つまり、ＣＰＵ３ａは、データリンクパス１３ａのエラーを検出した場合、第２の実施の形態あるいは第４の実施の形態と同様に、コンフィグレジスタ２０を設定する。図８あるいは図１４に示されるように、これらの実施の形態においては、データリンクパス１３ａは用いられていない。従って、第１メインメモリ４ａから第２メインメモリ４ｂにメモリデータをコピーすることが可能となる。
【００８６】
データリンクパス１４ａが故障している場合、第３の実施の形態を適用することが可能である。つまり、ＣＰＵ３ａは、データリンクパス１４ａのエラーを検出した場合、第３の実施の形態と同様に、コンフィグレジスタ２０を設定する。図１１に示されるように、第３の実施の形態においては、データリンクパス１４ａは用いられていない。従って、第１メインメモリ４ａから第２メインメモリ４ｂにメモリデータをコピーすることが可能となる。
【００８７】
データリンクパス１３ｂが故障している場合、第１、第３、第４の実施の形態を適用することが可能である。つまり、ＣＰＵ３ａは、データリンクパス１３ｂのエラーを検出した場合、第１、第３、第４の実施の形態と同様に、コンフィグレジスタ２０を設定する。図４、図１１、図１４に示されるように、これらの実施の形態においては、データリンクパス１３ｂは用いられていない。従って、第１メインメモリ４ａから第２メインメモリ４ｂにメモリデータをコピーすることが可能となる。
【００８８】
データリンクパス１４ｂが故障している場合、上記全ての実施の形態を適用することが可能である。つまり、ＣＰＵ３ａは、データリンクパス１４ｂのエラーを検出した場合、いずれかの実施の形態と同様に、コンフィグレジスタ２０を設定する。これにより、第１メインメモリ４ａから第２メインメモリ４ｂにメモリデータをコピーすることが可能となる。
【００８９】
データリンクパス１３ａ及び１３ｂが故障している場合、つまり、Ｉｎ−Ｂｏｕｎｄに関連するデータリンクパスが全て故障している場合、第４の実施の形態を適用することが可能である。つまり、ＣＰＵ３ａは、データリンクパス１３ａ及び１３ｂのエラーを検出した場合、第４の実施の形態と同様に、コンフィグレジスタ２０を設定する。図１４に示されるように、第４の実施の形態においては、データリンクパス１３ａ及び１３ｂは用いられていない。従って、第１メインメモリ４ａから第２メインメモリ４ｂにメモリデータをコピーすることが可能となる。
【００９０】
データリンクパス１４ａ及び１４ｂが故障している場合、つまり、Ｏｕｔ−Ｂｏｕｎｄに関連するデータリンクパスが全て故障している場合、第３の実施の形態を適用することが可能である。つまり、ＣＰＵ３ａは、データリンクパス１４ａ及び１４ｂのエラーを検出した場合、第３の実施の形態と同様に、コンフィグレジスタ２０を設定する。図１１に示されるように、第３の実施の形態においては、データリンクパス１４ａ及び１４ｂは用いられていない。従って、第１メインメモリ４ａから第２メインメモリ４ｂにメモリデータをコピーすることが可能となる。
【００９１】
データリンクパス１３ａ及び１４ｂが故障している場合、第２の実施の形態あるいは第４の実施の形態を適用することが可能である。つまり、ＣＰＵ３ａは、データリンクパス１３ａ及び１４ｂのエラーを検出した場合、第２の実施の形態あるいは第４の実施の形態と同様に、コンフィグレジスタ２０を設定する。図８あるいは図１４に示されるように、これらの実施の形態においては、データリンクパス１３ａ及び１４ｂは用いられていない。従って、第１メインメモリ４ａから第２メインメモリ４ｂにメモリデータをコピーすることが可能となる。
【００９２】
データリンクパス１４ａ及び１３ｂが故障している場合、第３の実施の形態を適用することが可能である。つまり、ＣＰＵ３ａは、データリンクパス１４ａ及び１３ｂのエラーを検出した場合、第３の実施の形態と同様に、コンフィグレジスタ２０を設定する。図１１に示されるように、第３の実施の形態においては、データリンクパス１４ａ及び１３ｂは用いられていない。従って、第１メインメモリ４ａから第２メインメモリ４ｂにメモリデータをコピーすることが可能となる。
【００９３】
以上に説明されたように、本発明に係る二重化同期システム１、ＤＭＡエンジン１０及びその動作方法によれば、メモリコピー時間が短縮される。よって、システム運用の一時停止期間が短縮される。また、一方の系のＤＭＡエンジンが故障した場合においても、メモリコピーを実行することが可能となる。また、両系間を接続するデータパスの一部が故障した場合においても、メモリコピーを実行することが可能となる。尚、本発明は、３個以上のシステムから構成される多重化同期システムに適用することも可能である。その場合も、同様の効果が得られる。また、ＤＭＡエンジン１０が擬装パケットを生成する代わりに、ルータ７がターゲットＩＤを適宜振り分けてもよい。
【図面の簡単な説明】
【００９４】
【図１】図１は、本発明に係る二重化同期システムの構成を示すブロック図である。
【図２】図２は、本発明に係るＤＭＡエンジンの構成を示す概念図である。
【図３】図３は、本発明に係るパケットの内容を示す図表である。
【図４】図４は、本発明の第１の実施の形態における処理の流れを示す図である。
【図５】図５は、本発明の第１の実施の形態におけるコンフィグレジスタの内容を示す図表である。
【図６】図６は、本発明の第１の実施の形態におけるリード用パケットの内容を示す図表である。
【図７】図７は、本発明の第１の実施の形態におけるコンプリション用パケットの内容を示す図表である。
【図８】図８は、本発明の第２の実施の形態における処理の流れを示す図である。
【図９】図９は、本発明の第２の実施の形態におけるコンフィグレジスタの内容を示す図表である。
【図１０】図１０は、本発明の第２の実施の形態におけるリード用パケットの内容を示す図表である。
【図１１】図１１は、本発明の第３の実施の形態における処理の流れを示す図である。
【図１２】図１２は、本発明の第３の実施の形態におけるコンフィグレジスタの内容を示す図表である。
【図１３】図１３は、本発明の第３の実施の形態におけるリード用パケットの内容を示す図表である。
【図１４】図１４は、本発明の第４の実施の形態における処理の流れを示す図である。
【図１５】図１５は、本発明の第４の実施の形態におけるコンフィグレジスタの内容を示す図表である。
【図１６】図１６は、本発明の第４の実施の形態におけるリード用パケットの内容を示す図表である。
【符号の説明】
【００９５】
１    二重化同期システム
１ａ  第１システム
１ｂ  第２システム
２    制御ＬＳＩ
３    ＣＰＵ
４    メインメモリ
５    ＣＰＵコントローラ
６    メモリコントローラ
７    ルータ
８    ＩＯコンパレータ
９    ＩＯコントローラ
１０    ＤＭＡエンジン
１１    ＩＢリンクコントローラ
１２    ＯＢリンクコントローラ
１３    インバウンド（ＩＢ）データリンクパス
１４    アウトバウンド（ＯＢ）データリンクパス
【図１】
2006178550.tif 000003
【図２】
2006178550.tif 000004
【図３】
2006178550.tif 000005
【図４】
2006178550.tif 000006
【図５】
2006178550.tif 000007
【図６】
2006178550.tif 000008
【図７】
2006178550.tif 000009
【図８】
2006178550.tif 000010
【図９】
2006178550.tif 000011
【図１０】
2006178550.tif 000012
【図１１】
2006178550.tif 000013
【図１２】
2006178550.tif 000014
【図１３】
2006178550.tif 000015
【図１４】
2006178550.tif 000016
【図１５】
2006178550.tif 000017
【図１６】
2006178550.tif 000018