(57)【特許請求の範囲】
【請求項１】
独立のクロックをそれぞれ備え、クロスリンク制御部を介して接続され、同じ動作を行う演算部とともに同じ構成を備える複数のシステムからなるデータ処理装置において、
前記複数のシステムのそれぞれが、
前記クロックから出力されるクロックをカウントする動作カウンタと、
リセットを行うためのリセットパケットを発行するＩ／Ｏサブシステムと、
前記リセットパケットに予め定められたタイミング値と前記動作カウンタのカウント値を付加し、自己が設けられるシステムの演算部および前記クロスリンク制御部を介して他のシステムの演算部へ出力するパケット修飾部と、
前記パケット修飾部の出力パケットを受信すると、タイミング値と前記動作カウンタのカウント値によりタイミングを調整して前記演算部をリセットするタイミング調整部と、を有することを特徴とするデータ処理装置。
【請求項２】
請求項１記載のデータ処理装置において、
前記演算部からのリクエストと、前記クロスリンク制御部を介して他のシステムの演算部からのリクエストとを比較し、一致する場合には該リクエストを出力する比較器と、
前記Ｉ／Ｏサブシステムは前記比較器の出力に応答するレスポンスを送信するデータ処理装置。
【請求項３】
請求項２記載のデータ処理装置において、
前記演算部および前記クロスリンク制御部を介する他のシステムの演算部からのリクエストが前記動作カウンタをリセットするリクエストであり、比較器はこれらが一致する場合には前記動作カウンタをリセットするリクエストを出力するデータ処理装置。
【請求項４】
請求項３記載のデータ処理装置において、
Ｉ／Ｏサブシステムは前記比較器のリクエストによるレスポンスとしての動作カウンタリセットパケットを発行する際に、発行元ＩＤを付与し、
前記タイミング調整部は、前記動作カウンタリセットパケットを受信すると前記発行元ＩＤを参照し、前記クロスリンク制御部を経由した他のシステムからのものである場合には予め設定されたクロックサイクルの間待ち合わせを行った後、前記動作カウンタをリセットするデータ処理装置。
【請求項５】
請求項１ないし請求項４のいずれかに記載のデータ処理装置において、
前記Ｉ／Ｏサブシステムは、予め設定された時間が経過するごとに前記リセットパケットを発行するデータ処理装置。
【請求項６】
独立のクロックをそれぞれ備え、クロスリンク制御部を介して接続され、同じ動作を行う演算部とともに同じ構成を備える複数のシステムからなり、前記複数のシステムのそれぞれが、動作カウンタと、Ｉ／Ｏサブシステムと、パケット修飾部と、タイミング調整部とを具備するデータ処理装置で行われる同期方法において、
前記動作カウンタが前記クロックから出力されるクロックをカウントするステップと、
前記Ｉ／Ｏサブシステムがリセットを行うためのリセットパケットを発行するステップと、
前記パケット修飾部が前記リセットパケットに予め定められたタイミング値と前記動作カウンタのカウント値を付加し、自己が設けられるシステムの演算部および前記クロスリンク制御部を介して他のシステムの演算部へ出力するステップと、
前記タイミング調整部が前記パケット修飾部の出力パケットを受信すると、タイミング値と前記動作カウンタのカウント値によりタイミングを調整して前記演算部をリセットするステップと、を有することを特徴とするデータ処理装置の同期方法。
【請求項７】
請求項６記載のデータ処理装置の同期方法において、
前記複数のシステムのそれぞれに比較器を設け、
前記比較器が前記演算部からのリクエストと、前記クロスリンク制御部を介して他のシステムの演算部からのリクエストとを比較し、一致する場合には該リクエストを出力するステップと、
前記Ｉ／Ｏサブシステムが前記比較器の出力に応答するレスポンスを送信するステップとを有するデータ処理装置の同期方法。
【請求項８】
請求項７記載のデータ処理装置の同期方法において、
前記演算部および前記クロスリンク制御部を介する他のシステムの演算部からのリクエストが前記動作カウンタをリセットするリクエストであり、比較器はこれらが一致する場合には前記動作カウンタをリセットするリクエストを出力するデータ処理装置の同期方法。
【請求項９】
請求項８記載のデータ処理装置の同期方法において、
Ｉ／Ｏサブシステムは前記比較器のリクエストによるレスポンスとしての動作カウンタリセットパケットを発行する際に、発行元ＩＤを付与し、
前記タイミング調整部は、前記動作カウンタリセットパケットを受信すると前記発行元ＩＤを参照し、前記クロスリンク制御部を経由した他のシステムからのものである場合には予め設定されたクロックサイクルの間待ち合わせを行った後、前記動作カウンタをリセットするデータ処理装置の同期方法。
【請求項１０】
請求項６ないし請求項９のいずれかに記載のデータ処理装置の同期方法において、
前記Ｉ／Ｏサブシステムは、予め設定された時間が経過するごとに前記リセットパケットを発行するデータ処理システムの同期方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の演算部が同期して動作を行うデータ処理装置に関し、特に、各演算部が独立なクロックにより動作を行いつつ同期動作を行うデータ処理装置と同期方法に関する。
【背景技術】
【０００２】
従来、複数の演算部が同期動作を行うデータ処理装置においては、各演算部の同期を図るために各演算部には共通のクロックが入力されてきた。この場合、クロック源に障害が発生してしまうと、両系の動作が停止してしまうという問題があった。これを回避する為に、各演算サブシステムに対して独立したクロックを入力し、なおかつ同期動作を保持する手法が考案されている。
【０００３】
特許文献１（特開平７−７３０５９号公報）には、プロセッサモジュールに、互いのプロセッサモジュールのクロックサイクルをカウントするために専用の信号線を接続し合い、また、クロックサイクルをカウントするカウンタを設けることにより、各プロセッサモジュールに対して独立したクロックを入力する場合においても、プロセッサモジュールの同期動作を実現する技術が開示されている。
【特許文献１】特開平７−７３０５９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
従来は、複数の演算部が同期動作を行うデータ処理装置においては、その多くが各演算部に対して共通のクロックを入力していた。そのため、クロック源に障害が発生してしまうと、全ての演算部の動作が停止してしまうという問題があった。
【０００５】
また、特許文献１に開示される技術では、専用線を接続し合うことから装置構成が複雑化するという問題点がある。また、各演算部ごとに独立なクロックを使用することができることとなるが、各演算部に独立なクロックを使用するということは、各演算部が動作する上で最も重要なクロックが複数使用され、各クロックのいずれかに故障が発生し、そのクロックを使用する演算部が動作しなくなる危険性も高くなることを意味し、各演算部の動作を確認することが重要となる。
【０００６】
特許文献１には、各演算部の構成要素やクロックに故障が発生した場合の動作についての記述はあるものの、その動作を確認する手段については記述されていない。特許文献１に記載の技術では、各演算部の構成要素やクロックが故障した状態でシステムが機能するように構成されているが、複数の演算部が同期して動作を行うデータ処理装置では、動作を継続して行うこととともに故障を早期に発見して対処することが重要である。
【０００７】
本願発明は上述したような従来の技術に鑑みてなされたものであって、装置構成を複雑化することなく複数の演算部を独立なクロックにて動作させるとともに、装置動作の確認を行うことのできるデータ処理装置および同期方法を実現することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の方法が適用されるデータ処理装置は、独立のクロックをそれぞれ備え、クロスリンク制御部を介して接続され、同じ動作を行う演算部とともに同じ構成を備える複数のシステムからなるデータ処理装置において、
前記複数のシステムのそれぞれが、
前記クロックから出力されるクロックをカウントする動作カウンタと、
リセットを行うためのリセットパケットを発行するＩ／Ｏサブシステムと、
前記リセットパケットに予め定められたタイミング値と前記動作カウンタのカウント値を付加し、自己が設けられるシステムの演算部および前記クロスリンク制御部を介して他のシステムの演算部へ出力するパケット修飾部と、
前記パケット修飾部の出力パケットを受信すると、タイミング値と前記動作カウンタのカウント値によりタイミングを調整して前記演算部をリセットするタイミング調整部と、を有する。
【０００９】
この場合、前記演算部からのリクエストと、前記クロスリンク制御部を介して他のシステムの演算部からのリクエストとを比較し、一致する場合には該リクエストを出力する比較器と、
前記Ｉ／Ｏサブシステムは前記比較器の出力に応答するレスポンスを送信することとしてもよい。
【００１０】
さらに、前記演算部および前記クロスリンク制御部を介する他のシステムの演算部からのリクエストが前記動作カウンタをリセットするリクエストであり、比較器はこれらが一致する場合には前記動作カウンタをリセットするリクエストを出力することとしてもよい。
【００１１】
さらに、Ｉ／Ｏサブシステムは前記比較器のリクエストによるレスポンスとしての動作カウンタリセットパケットを発行する際に、発行元ＩＤを付与し、
前記タイミング調整部は、前記動作カウンタリセットパケットを受信すると前記発行元ＩＤを参照し、前記クロスリンク制御部を経由した他のシステムからのものである場合には予め設定されたクロックサイクルの間待ち合わせを行った後、前記動作カウンタをリセットすることとしてもよい。
【００１２】
上記のいずれにおいても、前記Ｉ／Ｏサブシステムは、予め設定された時間が経過するごとに前記リセットパケットを発行することとしてもよい。
【００１３】
本発明では、各演算サブシステムの内部に、動作タイミング制御用の信号を生成する動作カウンタと、動作カウンタの値にタイミング値をパケットに付加するパケット修飾部と、パケットに付加されたタイミング値に基づいて、演算部に対するパケットの送出タイミングを調整するタイミング調整部を備えている。これにより、各演算部は各演算サブシステム内部の動作カウンタを基準に動作することになり、結果的に各系の演算部を同期動作させることができる。
【００１４】
比較器を設ける構成の場合には、各システムのリクエストが一致するかが確認されて出力される。システムの一部が故障となった場合にはリクエストが出力されないことから、システムの故障を早期に発見することが可能となる。
【００１５】
本発明は、複数の演算部が同期動作を行うデータ処理装置において、各演算部に対して独立したクロック源からクロックを入力した場合においても、演算部間に特別な信号を追加すること無く、演算部を同期動作させることができることを特徴としている。
【発明の効果】
【００１６】
本発明は以上説明したように構成されているので、以下に記載するような効果を奏する。
【００１７】
第１の効果は、演算部宛てのパケットにタイミング値を付加し、各演算サブシステムは各々が保持する動作カウンタの値に基づき動作を行う為、各演算サブシステムに独立したクロックを入力する場合においても、各演算サブシステム間を専用の信号で接続することなく、各演算サブシステムの同期動作を実現できることである。
【００１８】
第２の効果は、あらかじめ指定した時間が経過する度にタイマー割込みを生成するように設定し、タイマー割込み毎に動作カウンタ、演算部をリセットすることにより、各演算部に入力されるクロックに誤差がある場合でも、同期動作を継続することができることである。
【発明を実施するための最良の形態】
【００１９】
次に、本発明の実施例について図面を参照して説明する。図１は本発明によるデータ処理装置の一実施例の構成を示すブロック図である。
【００２０】
図１を参照すると、本実施例のデータ処理装置は、システム１０００、システム２０００、クロスリンク３０００から構成される。
【００２１】
システム１０００は、クロック源１１００、演算サブシステム１２００、Ｉ／Ｏサブシステム１３００から構成される。
【００２２】
演算サブシステム１２００は、演算部１２０１、動作カウンタ１２０２、オフセット値レジスタ１２０３、比較器１２０４、パケット修飾部１２０５、タイミング調整部１２０６、クロスリンク制御部１２０７から構成される。
【００２３】
演算部１２０１は一連の命令列を実行するもので、任意の数のプロセッサ、任意の容量のメモリで構成されて良い。
【００２４】
動作カウンタ１２０２は、クロック源１１００から入力されるクロック毎に、カウンタ値をインクリメントする。また、タイミング調整部１２０６からカウンタ値のリセットが要求された場合にはカウンタ値をリセットする。
【００２５】
オフセット値レジスタ１２０３は、予め設定されたオフセット値を保持する。オフセット値には、少なくとも、パケット修飾部１２０５から出力されたパケットが、システム２０００内に設けられたタイミング調整部２２０６により受信されるまでに経過する最大クロック数以上の値が設定される。
【００２６】
比較器１２０４には、演算部１２０１が発行したパケットと、システム２０００内に設けられた演算部２２０１が発行したパケットが入力される。演算部２２０１が発行したパケットは、システム２０００内に設けられたクロスリンク制御部２２０７、クロスリンク３０００、クロスリンク制御部１２０７を経由して入力される。
【００２７】
比較器１２０４は、演算部１２０１から発行されたパケットとシステム２０００内に設けられた演算部２２０１から発行されたパケットが一致していることを確認し、一方のパケットをＩ／Ｏサブシステム１３００に送信する。この、比較器１２０４は演算部１２０１から発行されたパケットと、演算部２２０１から発行されたパケットをバッファリングすることとしても良い。
【００２８】
パケット修飾部１２０５は、Ｉ／Ｏサブシステム１３００から送信されたパケットに、動作カウンタ１２０２の値とオフセット値レジスタ１２０３の値を加えた値（タイミング値）を付加し、タイミング調整部１２０６とクロスリンク制御部１２０７に送信する。
【００２９】
タイミング調整部１２０６には、パケット修飾部１２０５により修飾されたパケットと、システム２０００内に設けられたパケット修飾部２２０５により修飾されたパケットが入力される。パケット修飾部２２０５により修飾されたパケットは、システム２０００内に設けられたクロスリンク制御部２２０７、クロスリンク３０００、クロスリンク制御部１２０７を経由して入力される。
【００３０】
タイミング調整部１２０６は入力されたパケットのタイミング値を参照し、動作カウンタの値がタイミング値に一致するまで、待ち合わせを行い、一致した時点で演算部１２０１に対してパケットを送信する。パケット修飾部１２０５により修飾されたパケットと、パケット修飾部２２０５により修飾されたパケットのタイミング値が一致している場合には、演算サブシステム間でパケットの処理順序が異ならないように制御を行う。また、タイミング調整部１２０６は、パケット修飾部１２０５により修飾されたパケットと、パケット修飾部２２０５により修飾されたパケットをバッファリングすることとしても良い。
【００３１】
クロスリンク制御部１２０７は、演算部１２０１から出力されたパケットを、クロスリンク３０００、システム２０００内に設けられたクロスリンク制御部２２０７を介して、システム２０００内に設けられた比較器２２０４に送信する。また、クロスリンク制御部１２０７は、パケット修飾部１２０５から送信されたパケットを、クロスリンク３０００、クロスリンク制御部２２０７を介して、タイミング調整部２２０６に送信する。さらに、クロスリンク制御部１２０７は、システム２０００内に設けられた演算部２２０１から発行されたパケットを、クロスリンク制御部２２０７、クロスリンク３０００を介して受信し、比較器１２０４に送信する。さらに、クロスリンク制御部１２０７は、パケット修飾部２２０５で修飾されたパケットを、クロスリンク制御部２２０７、クロスリンク３０００を介して受信し、タイミング調整部１２０６に送信する。
【００３２】
Ｉ／Ｏサブシステム１３００は、Ｉ／Ｏブリッジ１３０１、リセットパケット生成部１３０２、タイマー１３０３、Ｉ／Ｏデバイス１３０４から構成される。
【００３３】
Ｉ／Ｏブリッジ１３０１は、比較器１２０４から送信されるパケットを受信し、リセット生成部１３０２、タイマー１３０３、Ｉ／Ｏデバイス１３０４に送信する。また、リセット生成部１３０２、タイマー１３０３、Ｉ／Ｏデバイス１３０４から送信されるパケットを受信し、パケット修飾部１２０５に送信する。
【００３４】
リセットパケット生成部１３０２は、演算部１２０１又は演算部２２０１からリセットパケットを生成するように要求されると、リセットパケットを生成し、Ｉ／Ｏブリッジ１３０１に送信する。
【００３５】
タイマー１３０３は、予め設定されたクロック数が経過したことを検出すると、タイマー割込みパケットを生成し、Ｉ／Ｏブリッジ１３０１に送信する。
【００３６】
Ｉ／Ｏデバイス１３０４は、ＳＣＳＩコントローラ、ＬＡＮアダプタ等の任意の複数のデバイスであって良い。
【００３７】
システム２０００は、クロック源２１００、演算サブシステム２２００、Ｉ／Ｏサブシステム２３００から構成される。
【００３８】
クロック源２１００、演算サブシステム２２００、Ｉ／Ｏサブシステム２３００の構成・動作は、それぞれクロック源１１００、演算サブシステム１２００、Ｉ／Ｏサブシステム１３００と等価である。
【００３９】
クロスリンク３０００は、システム１０００とシステム２０００との間の接続を行う。クロスリンク３０００は、ＰＣＩバスの様なパラレルインターフェースでも良く、PCI-Expressの様なシリアルインターフェースでも良く、その他のインターフェースでも良い。
【００４０】
図１において、動作カウンタ１２０２、動作カウンタ２２０２は、それぞれクロック源１１００、クロック源２１００から出力されるクロック毎に値をインクリメントしている。
【００４１】
動作カウンタ１２０２、動作カウンタ２２０２は、演算部１２０１と演算部２２０１が同期動作を開始する前に、リセットパケットによりリセットされ、少なくともリセット直後には、動作カウンタ１２０２と動作カウンタ２２０２の差があらかじめ指定された範囲内に収まる。
【００４２】
パケット修飾部１２０５は、Ｉ／Ｏサブシステム１３００から演算部宛て（演算部１２０１と演算部２２０１は同期動作しており、Ｉ／Ｏサブシステム１３００からは、１つの演算部しか見えない）のパケットを受信すると、動作カウンタ１２０２の値にオフセット値レジスタ１２０３の値を加算した値を、タイミング値としてパケットに付加し、そのパケットをタイミング調整部１２０６とタイミング調整部２２０６に送信する。ここで、パケット修飾部１２０５からタイミング調整部２２０６に送信したパケットは、クロスリンク制御部１２０７、クロスリンク３０００、クロスリンク制御部２２０７を経由する。
【００４３】
また、オフセット値レジスタの値は、パケット修飾部１２０５から出力されたパケットがタイミング調整部２２０６により受信されるまでに経過する最大クロック数に、マージンを加えた値に設定される。
【００４４】
タイミング調整部１２０６は、受信したパケットのタイミング値を参照し、動作カウンタ１２０２の値がタイミング値と等しくなった時点で、演算部に対してパケットを送信する。同様に、タイミング調整部２２０６は、受信したパケットのタイミング値を参照し、動作カウンタ２２０２の値がタイミング値と等しくなった時点で、演算部２２０１に対してパケットを送信する。また、タイマー１３０３、タイマー２３０３は、予め設定した時間が経過する度に、タイマー割り込みを生成することが出来る。
【００４５】
上記のようにして、本実施例では、パケット修飾部が演算部宛のパケットに対してタイミング値を付加し、タイミング調整部がパケットのタイミング値と動作カウンタの値に基づいて、演算部に対するパケットの発行タイミングを制御することにより、各演算部に対して独立したクロック源からクロックを入力した場合においても、演算部間に特別な信号を追加すること無く、演算部を同期動作させることができる。また、タイマー割込みが発行される度に、演算部と動作カウンタのリセットを行うことにより、各クロックの周波数の差により同期状態が保てなくなるのを回避することが出来る。
【００４６】
図２は本実施例の演算部１２０１と演算部２２０１を同期化する際の各部の動作を示すシーケンス図であり、以下に図２を参照して本実施例の同期化動作について説明する。
【００４７】
同期化を行うにあたり、動作カウンタ１２０２、演算部１２０１、動作カウンタ２２０２、演算部２２０１のリセットを行う。動作カウンタ１２０２、演算部１２０１、動作カウンタ２２０２、演算部２２０１のリセットは、リセット生成部１３０２またはリセット生成部２３０２から発行されるリセットパケットにより行われる。
【００４８】
リセット生成部１３０２、または、リセット生成部２３０２は、演算部１２０１、または、演算部２２０２から、リセット要求パケットを受信すると、リセットパケットを発行する。リセット生成部１３０２またはリセット生成部２３０２のどちらを使用してリセットを行うかは、任意であって良い。ここでは、リセット生成部１３０２を使用して、動作カウンタ１２０２、演算部１２０１、動作カウンタ２２０２、演算部２２０１のリセットを行う場合の説明を行う。
【００４９】
演算部１２０１は、リセット生成部１３０２に対してリセット要求パケットを送信する（ステップＳ２０１）。比較器１２０４は、演算部１２０１により発行されたリセットパケットを受信する。この時点では、演算部１２０１と演算部２２０１は同期状態ではない為、比較器１２０４は演算部２２０１から同じパケットが送信されるのを待つことなく、リセット要求パケットをＩ／Ｏサブシステムのリセット生成部１３０２に送信する（ステップＳ２０２）。
【００５０】
リセット生成部１３０２は、リセット要求パケットを受信すると、リセットパケットを送信する（ステップＳ２０３）。パケット修飾部１２０５は、リセット生成部１３０２から発行されたリセットパケットを受信すると、タイミング調整部１２０６とクロスリンク制御部１２０７に送信する（ステップＳ２０４）。
【００５１】
タイミング調整部１２０６は、受信したリセットパケットの発行元を参照し、リセットパケットがクロスリンク３０００を経由したかどうか判断する。この場合、リセットパケットの発行元はリセット生成部１３０２であり、リセットパケットはクロスリンク３０００を経由していない為、タイミング調整部１２０６は、予め設定されたクロックサイクル間待った後（ステップＳ２０５）、動作カウンタ１２０２のリセットを行う（ステップＳ２０６）。これにより、リセット時点における動作カウンタ１２０２と動作カウンタの２２０２のズレを削減する。さらにその後、演算部１２０１のリセットを行う（ステップＳ２０７）。
【００５２】
一方、クロスリンク制御部１２０７は、パケット修飾部１２０５から受信したリセットパケットを、クロスリンク３０００を介してクロスリンク制御部２２０７に送信する（ステップＳ２０８）。
【００５３】
クロスリンク制御部２２０７は受信したリセットパケットをタイミング調整部２２０６に送信する（ステップＳ２０９）。
【００５４】
タイミング調整部２２０６は、受信したリセットパケットの発行元ＩＤを参照し、リセットパケットがクロスリンク３０００を経由したかどうか判断する。この場合、発行元がリセット生成部１３０２であり、リセットパケットがクロスリンク３０００を経由している。そのため、タイミング調整部２２０６は待ち状態に入らず、即座に動作カウンタ２２０２のリセットを行う（ステップＳ２１０）。さらにその後、演算部２２０１のリセットを行う（ステップＳ２１１）。
【００５５】
本動作により、動作カウンタ１２０２、演算部１２０１、動作カウンタ２２０２、演算部２２０１がリセットされ、これ以降同期動作を開始する。
【００５６】
図３は演算部１２０１と演算部２２０１からＩ／Ｏサブシステム１３００に対してリクエストを発行した場合の動作を示すシーケンス図である。以下に、図３を参照して本実施例における演算部によるリクエスト動作について説明する。
【００５７】
図３では、演算部１２０１は動作カウンタ１２０２が１０になった時点で、Ｉ／Ｏサブシステム１３００宛てのリクエストを送信している（ステップＳ３０１）。
【００５８】
演算部１２０１と演算部２２０１は、同一の命令列を同期して実行している。そのため、演算部２２０１は動作カウンタ２２０２が１０になった時点でＩ／Ｏサブシステム１３００宛てのリクエストを送信する（ステップＳ３０２）。
【００５９】
演算部１２０１が発行したリクエストは、比較器１２０４により受信される。演算部２２０２が発行したリクエストは、クロスリンク制御部２２０７により受信される。クロスリンク制御部２２０７は、受信したリクエストを、クロスリンク３０００を介してクロスリンク制御部１２０７に送信する（ステップＳ３０３）。
【００６０】
クロスリンク制御部１２０７は受信したリクエストを比較器１２０４に送信する（ステップＳ３０４）。
【００６１】
比較器１２０４は、演算部１２０１から発行されたリクエストと、演算部２２０２から発行されたリクエストを比較する（ステップＳ３０５）。データ処理装置に障害が発生していない場合には、この２つのリクエストは一致する。比較器１２０４は、このリクエストをＩ／Ｏサブシステム１３００に送信する（ステップＳ３０６）。
【００６２】
Ｉ／Ｏサブシステム１３００は、受信したリクエストがレスポンスを必要としているかどうか判断し、レスポンスが必要な場合にはレスポンスをパケット修飾部１２０５に送信する（ステップＳ３０７）。
【００６３】
パケット修飾部１２０５はレスポンスを受信すると、動作カウンタ１２０２を参照する（ステップＳ３０８）。
【００６４】
図３では、動作カウンタ１２０２の値が３０であるとしている。パケット修飾部１２０５は、動作カウンタ１２０２の値に、オフセット値レジスタ１２０３の値を加え、その値をタイミング値としてレスポンスに付加する。図３では、オフセット値レジスタの値が２０であるとしている為、タイミング値（図３ではＴＶと表記）として５０が設定される。パケット修飾部１２０５は、タイミング値を付加したレスポンスを、タイミング調整部１２０６とクロスリンク制御部１２０７に送信する（ステップＳ３０９）。
【００６５】
タイミング調整部１２０６は、レスポンスを受信すると、レスポンス付加されたタイミング値を参照し、動作カウンタ１２０２がタイミング値の値と等しくなるまで、待ち合わせを行う（ステップＳ３１０）。タイミング調整部１２０６は、動作カウンタ１２０２がタイミング値の値と等しくなると、レスポンスを演算部１２０１に送信する（ステップＳ３１１）。
【００６６】
一方で、クロスリンク制御部１２０７は、パケット修飾部１２０５より送信されたレスポンスを受信すると、クロスリンク３０００を介して、クロスリンク制御部２２０７に送信する（ステップＳ３１２）。
【００６７】
クロスリンク制御部２２０７は、受信したレスポンスをタイミング調整部２２０６に送信する（ステップＳ３１３）。
【００６８】
タイミング調整部２２０６は、レスポンスを受信すると、付加されたタイミング値を参照し、動作カウンタ２２０２がタイミング値の値と等しくなるまで、待ち合わせを行う（ステップＳ３１４）。タイミング調整部２２０６は、動作カウンタ２２０２がタイミング値の値と等しくなると、レスポンスを演算部２２０１に送信する（ステップＳ３１５）。
【００６９】
上記のようにして、演算部１２０１と演算部２２０１は、共に、動作カウンタ１２０２、動作カウンタ２２０２が１０の時点でリクエストを発行し、動作カウンタ１２０２、動作カウンタ２２０２が５０の時点でレスポンスを受信する。
【００７０】
図４は本実施例においてＩ／Ｏサブシステム１３００から演算部に対するリクエストが発行された場合の動作を示すシーケンス図である。以下に、図４を参照して本実施例のＩ／Ｏサブシステムによるリクエスト動作について説明する。
【００７１】
Ｉ／Ｏサブシステム１３００は、演算部に対するリクエストを発行する（ステップＳ４０１）。
【００７２】
パケット修飾部１２０５は、Ｉ／Ｏサブシステム１３００が発行したリクエストを受信すると、動作カウンタ１２０２を参照する（ステップＳ４０２）。図３では、動作カウンタ１２０２の値が３０であるとしている。パケット修飾部１２０５は、動作カウンタ１２０２の値に、オフセット値レジスタ１２０３の値を加え、その値をタイミング値としてリクエストに付加する。図３では、オフセット値レジスタの値が２０であるとしている為、タイミング値（図４中では、ＴＶと表記）として５０が設定される。パケット修飾部１２０５は、タイミング値を付加したリクエストを、タイミング調整部１２０６とクロスリンク制御部１２０７に送信する（ステップＳ４０３）。
【００７３】
タイミング調整部１２０６は、リクエストを受信すると、パケットに付加されたタイミング値を参照し、動作カウンタ１２０２がタイミング値の値と等しくなるまで、待ち合わせを行う（ステップＳ４０４）。タイミング調整部１２０６は、動作カウンタ１２０２がタイミング値の値と等しくなると、リクエストを演算部１２０１に送信する（ステップＳ４０５）。
【００７４】
一方で、クロスリンク制御部１２０７は、受信したリクエストを、クロスリンク３０００を介して、クロスリンク制御部２２０７に送信する（ステップＳ４０６）。
【００７５】
クロスリンク制御部２２０７は、受信したリクエストをタイミング調整部２２０６に送信する（ステップＳ４０７）。
【００７６】
タイミング調整部２２０６は、リクエストを受信すると、付加されたタイミング値を参照し、動作カウンタ２２０２がタイミング値の値と等しくなるまで、待ち合わせを行う（ステップＳ４０９）。タイミング調整部２２０６は、動作カウンタ２２０２がタイミング値の値と等しくなると、リクエストを演算部２２０１に送信する（ステップＳ４１０）。
【００７７】
演算部１２０１は、受信したリクエストがレスポンスを必要としているかどうか判断し、レスポンスが必要な場合にはレスポンスを比較器１２０４に送信する（ステップＳ４１０）。
【００７８】
一方で、演算部２２０１は、受信したリクエストがレスポンスを必要としているかどうか判断し、レスポンスが必要な場合にはレスポンスをクロスリンク制御部２２０７に送信する（ステップＳ４１１）。
【００７９】
クロスリンク制御部２２０７は、クロスリンク３０００を介して、レスポンスをクロスリンク制御部１２０７に送信する（ステップＳ４１２）。
【００８０】
クロスリンク制御部１２０７は受信したレスポンスを比較器１２０４に送信する（ステップＳ４１３）。
【００８１】
比較器１２０４は、演算部１２０１から発行されたレスポンスと、演算部２２０２から発行されたレスポンスを比較する（ステップＳ４１４）。
【００８２】
データ処理装置に障害が発生していない場合には、この２つのレスポンスは一致する。比較器１２０４は、このレスポンスをＩ／Ｏサブシステム１３００に送信する（ステップＳ４１５）。
【００８３】
上記のようにして、演算部１２０１と演算部２２０１は、共に、動作カウンタ１２０２、動作カウンタ２２０２が５０の時点でリクエストを受信する。
【００８４】
図５は、本実施例におけるＩ／Ｏサブシステム１３００に属するタイマー１３０３からタイマー割込みが発行された場合の動作を示すシーケンス図である。以下に、図５を参照して本実施例のタイマー割込みの動作について説明する。なお、ここでは、タイマー１３０３が予め指定された時刻毎にタイマー割込みを発行するように設定されているとする。
【００８５】
予め指定された時間が経過すると、タイマー１３０３はタイマー割込みを発行する（ステップＳ５０１）。発行されたタイマー割込みは、パケット修飾部１２０５により受信される。
【００８６】
パケット修飾部１２０５はタイマー割込みを受信すると、動作カウンタ１２０２を参照する（ステップＳ５０２）。図５では、動作カウンタ１２０２の値が１２であるとしている。パケット修飾部１２０５は、動作カウンタ１２０２の値に、オフセット値レジスタ１２０３の値を加え、その値をタイミング値としてタイマー割込みに付加する。図５では、オフセット値レジスタの値が２０であるとしている為、タイミング値として３２が設定される。パケット修飾部１２０５は、タイミング値を付加したタイマー割込みを、タイミング調整部１２０６とクロスリンク制御部１２０７に送信する（ステップＳ５０３）。
【００８７】
タイミング調整部１２０６は、タイマー割込みを受信すると、付加されたタイミング値を参照し、動作カウンタ１２０２がタイミング値の値と等しくなるまで、待ち合わせを行う（ステップＳ５０４）。タイミング調整部１２０６は、動作カウンタ１２０２がタイミング値の値と等しくなると、タイマー割込みを演算部１２０１に送信する（ステップＳ５０５）。
【００８８】
一方で、クロスリンク制御部１２０７は、受信したタイマー割込みを、クロスリンク３０００を介して、クロスリンク制御部２２０７に送信する（ステップＳ５０６）。
【００８９】
クロスリンク制御部２２０７は、受信したタイマー割込みをタイミング調整部２２０６に送信する（ステップＳ５０７）。
【００９０】
タイミング調整部２２０６は、タイマー割込みを受信すると、付加されたタイミング値を参照し、動作カウンタ２２０２がタイミング値の値と等しくなるまで、待ち合わせを行う（ステップＳ５０８）。タイミング調整部２２０６は、動作カウンタ２２０２がタイミング値の値と等しくなると、タイマー割込みを演算部２２０１に送信する（ステップＳ５０９）。
【００９１】
演算器１２０１は、タイマー割り込みを受信すると、まずコンテキストの退避を行う（ステップＳ５１０）。その後、リセット生成部１３０２に対してリセットリクエストを送信する（ステップＳ５１１）。送信したリセットリクエストは比較器１２０４により受信される。
【００９２】
一方、演算部２２０２も、タイマー割り込みを受信すると、コンテキストの退避を行う（ステップＳ５１２）。その後、リセット生成部１３０２に対してリセットリクエストを送信する（ステップＳ５１３）。送信したリセットリクエストは、クロスリンク制御部２２０７により受信される。
【００９３】
クロスリンク制御部２２０７は、受信したリセットリクエストを、クロスリンク３０００を介して、クロスリンク制御部１２０７に送信する（ステップＳ５１４）。
【００９４】
クロスリンク制御部１２０７は、受信したリセット要求リクエストを比較器１２０４に送信する（ステップＳ５１５）。
【００９５】
比較器１２０４は、演算部１２０１から発行されたリセットリクエストと、演算部２２０２から発行されたリセットリクエストを比較する（ステップＳ５１６）。データ処理装置に障害が発生していない場合には、この２つのリセットリクエストは一致する。その結果、リセットリクエストがＩ／Ｏサブシステム１３００に送信される（ステップＳ５１７）。
【００９６】
リセット生成部１３０２は、リセットリクエストを受信すると、発行元ＩＤを付与したリセットパケットを送信する（ステップＳ５１８）。
【００９７】
パケット修飾部１２０５は、リセット生成部１３０２から発行されたリセットパケットを受信すると、タイミング調整部１２０６とクロスリンク制御部１２０７に送信する（ステップＳ５１９）。
【００９８】
タイミング調整部１２０６は、受信したリセットパケットの発行元ＩＤを参照し、リセットパケットがクロスリンク３０００を経由したかどうか判断する。この場合、リセットパケットの発行元はリセット生成部１３０２であり、リセットパケットはクロスリンク３０００を経由していない為、タイミング調整部１２０６は、予め設定されたクロックサイクルの間待ち合わせを行った後（ステップ５２０）、動作カウンタ１２０２のリセットを行う（ステップＳ５２１）。さらにその後、演算部１２０１のリセットを行う（ステップＳ５２２）。
【００９９】
一方、クロスリンク制御部１２０７は、パケット修飾部１２０５から受信したリセットパケットを、クロスリンク３０００を介してクロスリンク制御部２２０７に送信する（ステップＳ５２３）。
【０１００】
クロスリンク制御部２２０７は受信したリセットパケットをタイミング調整部２２０６に送信する（ステップＳ５２４）。
【０１０１】
タイミング調整部２２０６は、受信したリセットパケットの発行元ＩＤを参照し、リセットパケットがクロスリンクを経由したかどうか判断する。この場合、発行元がリセット生成部１３０２であり、リセットパケットがクロスリンク３０００を経由している。その結果、タイミング調整部２２０６は待ち状態に入らず、即座に動作カウンタ２２０２のリセットを行う（ステップＳ５２５）。さらにその後、演算部２２０１のリセットを行う（ステップＳ５２６）。
【０１０２】
演算部１２０１は、リセット前に退避したコンテキストを復帰する（ステップＳ５２７）。演算部２２０１は、リセット前に退避したコンテキストを復帰する（ステップＳ５２８）。
【０１０３】
図５を参照して説明した、タイマー割込みによる演算部１２０１，２２０１と動作カウンタ１２０２，２２０２のリセットが必要になる理由を、図６、図７を参照して説明する。
【０１０４】
図６は、タイマー割込みによる演算部１２０１，２２０１と動作カウンタ１２０２，２２０２のリセットを行わない場合の問題を示す図である。
【０１０５】
図６では、横軸に時刻、縦軸に動作カウンタ１２０２と動作カウンタ２２０２のズレを示している。時刻ｔ０に演算部１２０１，２２０１と動作カウンタ１２０２，２２０２のリセットを行った場合、以後は平均的に、クロック源１１００の平均周波数と、クロック源２１００の平均周波数との比により、動作カウンタ１２０２と動作カウンタ２２０２のズレが広がっていく。
【０１０６】
例えば、図６の時刻ｔ０の時点で、動作カウンタ１２０２の値が０であり、パケット修飾部１２０５がＩ／Ｏサブシステム１３００からパケットを受信したとする。オフセット値レジスタ１２０３の値が２０である場合、パケット修飾部１２０５は、タイミング値を２０としてパケットを送信する。そして、タイミング調整部１２０６がこのパケットを受信した時点で、動作カウンタ１２０２の値が４、タイミング調整部２２０６がこのパケットを受信した時点で、動作カウンタ２２０２の値が１３であるとする。この場合、タイミング調整部１２０６、タイミング調整部２２０６は、それぞれ動作カウンタ１２０２、動作カウンタ２２０２の値が２０になるまで待ち合わせを行い、それぞれ演算部１２０１、演算部２２０１にパケットを送信する。この場合、正しく同期動作が行われている。
【０１０７】
次に、時刻ｔ１の時点での動作を考える。時刻ｔ１の時点での動作カウンタのズレは、時刻ｔ０の時点より９増加している。ここで、クロック源２１００の周波数がクロック源１１００の周波数より高い場合を考える。この場合、動作カウンタ１２０２の値が０の場合に、パケット修飾部１２０５がＩ／Ｏサブシステム１３００からパケットを受信したとすると、パケット修飾部１２０５は、タイミング値を２０としてパケットを送信する。タイミング調整部１２０６がこのパケットを受信した時点で、動作カウンタ１２０２の値が前記と同様に４である。
【０１０８】
一方で、タイミング調整部２２０６がこのパケットを受信した時点では、動作カウンタ２２０２の値は２２になる。この場合、タイミング調整部１２０６は、待ち合わせを行い動作カウンタ１２０２の値が２０の時点で、演算部１２０１に対してパケットを送信するが、タイミング調整部２２０６は、既に動作カウンタ２２０２の値が２０を超えている為、演算部２２０１に対して即座にパケットを送信したとしても、演算部１２０１と演算部２２０１の同期動作を継続できない。
【０１０９】
図７は、タイマー割込みによる演算部１２０１，２２０１と動作カウンタ１２０２，２２０２のリセットを行う場合の動作を示す図である。図７では、横軸に時刻、縦軸に動作カウンタ１２０２と動作カウンタ２２０２のズレを示している。
【０１１０】
時刻ｔ２にリセットが行われたとしている。演算部と動作カウントのリセットを行った後は、クロック源１１００の平均周波数と、クロック源２１００の平均周波数との比により、動作カウンタ１２０２と動作カウンタ２２０２のズレが広がっていくが、Δ周期毎に発行されるタイマー割込みにより、再び演算部と動作カウントのリセットが行われる。これにより、動作カウンタ１２０２と動作カウンタ２２０２のズレを一定の範囲内に押さえる。このようにして、演算部１２０１と演算部２２０２の同期動作を継続できる。
【０１１１】
図８は本発明の他の実施例の構成を示すブロック図である。
【０１１２】
本実施例では、図１に示した構成に加えて、演算サブシステム１２００に第２のパケット修飾部１２０８が設けられている。同様に、演算サブシステム２２００に第２のパケット修飾部２２０８が追加されている。
【０１１３】
第２のパケット修飾部１２０８、第２のパケット修飾部２２０８は、それぞれ演算部１２０１、演算部２２０１から発行されたパケットに、動作カウンタ１２０２、動作カウンタ２２０２の値を付加する。比較器１２０４、比較器２２０４は、同期動作をしている際に、演算部１２０１から発行されたパケットと、演算部２２０１から発行されたパケットを比較する際に、各々のパケットに付加された動作カウンタの値を比較する。これにより、何らかの要因により演算部１２０１と演算部２２０１の同期が外れた場合に、このことを早期に検出する事が出来る。
【０１１４】
なお、データ処理装置はシステムが二重化されたものを例として説明したが、さらに多くのシステムをクロスリンクで接続することとしても本発明は当然適用可能であり、このような構成としてもよい。
【図面の簡単な説明】
【０１１５】
【図１】本発明によるデータ処理装置の一実施例の構成を示すブロック図である。
【図２】図１に示した演算部１２０１と演算部２２０１を同期化する際の各部の動作を示すシーケンス図である。
【図３】図１に示した演算部１２０１と演算部２２０１からＩ／Ｏサブシステム１３００に対してリクエストを発行した場合の動作を示すシーケンス図である。
【図４】図１に示したＩ／Ｏサブシステム１３００から演算部に対するリクエストが発行された場合の動作を示すシーケンス図である。
【図５】図１に示したＩ／Ｏサブシステム１３００に属するタイマー１３０３からタイマー割込みが発行された場合の動作を示すシーケンス図である。
【図６】タイマー割込みによる図１に示した演算部１２０１，２２０１と動作カウンタ１２０２，２２０２のリセットを行わない場合の問題を示す図である。
【図７】タイマー割込みによる図１に示した演算部１２０１，２２０１と動作カウンタ１２０２，２２０２のリセットを行う場合の動作を示す図である。
【図８】本発明によるデータ処理装置の他の実施例の構成を示すブロック図である。
【符号の説明】
【０１１６】
１０００，２０００    システム
１１００，２１００    クロック源
１２００，２２００    演算サブシステム
１２０１，２２０１    演算部
１２０２，２２０２    動作カウンタ
１２０３，２２０３    オフセット値レジスタ
１２０４，２２０４    比較器
１２０５，１２０８．２２０５，２２０８    パケット修飾部
１２０６，２２０６    タイミング修飾部
１２０７，２２０７    クロスリンク制御部
１３００，２３００    Ｉ／Ｏサブシステム
１３０１，２３０１    Ｉ／Ｏブリッジ
１３０２，２３０２    リセット生成部
１３０３，２３０３    タイマー
１３０４，２３０４    Ｉ／Ｏデバイス
３０００クロスリンク
【図１】
0004752552.tif 000002
【図２】
0004752552.tif 000003
【図３】
0004752552.tif 000004
【図４】
0004752552.tif 000005
【図５】
0004752552.tif 000006
【図６】
0004752552.tif 000007
【図７】
0004752552.tif 000008
【図８】
0004752552.tif 000009