(57)【要約】【課題】複数のＣＰＵモジュールの出力の順序が互いに異なっていてもこれら複数のＣＰＵモジュールの動作が一致しているか否かを判別することができる情報処理装置を提供する。【解決手段】互いに同期して同一の処理を行うＣＰＵモジュール１００および２００と、これらＣＰＵモジュール１００および２００に接続されたＩ／Ｏモジュール３００とを有する。Ｉ／Ｏモジュール３００は、ＣＰＵモジュール１００および２００からの出力を受け取り、ＣＰＵモジュール１００からの複数個数の出力とＣＰＵモジュール２００からの複数個数の出力との順序を対応させて比較し一致しているか否かを判別する。【選択図】  図１
2004318702.tif 000002
【特許請求の範囲】
【請求項１】
互いに同期して同一の処理を行う第１および第２の処理手段と、
前記第１および第２の処理手段からの出力を受け取り、前記第１の処理手段からの複数個数の出力と前記第２の処理手段からの複数個数の出力との順序を対応させて比較し一致しているか否かを判別する第３の処理手段とを含むことを特徴とする情報処理装置。
【請求項２】
前記第３の処理手段は、前記第１の処理手段からの複数個数の出力を格納する第１の格納手段と、前記第２の処理手段からの複数個数の出力を格納する第２の格納手段とを含むことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記第３の処理手段は、前記第１および第２の格納手段のうちいずれか一方において格納する複数個数の出力の格納量が所定量に達したときに、前記第１の格納手段に格納された前記第１の処理手段からの複数個数の出力と前記第２の格納手段に格納された前記第２の処理手段からの複数個数の出力との順序を対応させて比較し一致しているか否かを判別することを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記第３の処理手段は、上記第１および第２の処理手段の出力を受け取る頻度よりも低い頻度で上記判別を行うよう指定する指定手段をさらに含むことを特徴とする請求項１記載の情報処理装置。
【請求項５】
互いに同期して同一の処理を行う第１および第２の処理手段と、
前記第１および第２の処理手段からの出力を受け取る第３の処理手段と、
この第３の処理手段に設けられ、前記第１の処理手段からの複数個数の出力に基づいて、前記第２の処理手段からの複数個数の出力を再構成する再構成手段と、
前記第３の処理手段に設けられ、前記第１の処理手段からの複数個数の出力と前記再構成手段により再構成された前記第２の処理手段からの複数個数の出力とを比較する比較手段とを含むことを特徴とする情報処理装置。
【請求項６】
前記第３の処理手段は、前記第１の処理手段からの複数個数の出力を格納する第１の格納手段と、前記第２の処理手段からの複数個数の出力を格納する第２の格納手段とを含み、
前記再構成手段は、前記第２の格納手段に格納された前記第２の処理手段からの複数個数の出力の順序を、前記第１の格納手段に格納された前記第１の処理手段からの複数個数の出力の順序に基づいて並べ替えることを特徴とする請求項５記載の情報処理装置。
【請求項７】
前記第３の処理手段は、前記第１の処理手段からの複数個数の出力を格納する第１の格納手段と、前記第２の処理手段からの複数個数の出力を格納する第２の格納手段とを含み、
前記再構成手段は、前記第２の格納手段に格納された前記第２の処理手段からの複数個数の出力を、前記第１の格納手段に格納された複数個数の前記第１の処理手段からの複数個数の出力に基づいて分割し再結合することを特徴とする特徴とする請求項５記載の情報処理装置。
【請求項８】
互いに同期して同一の処理を行う第１および第２の処理手段と、
前記第１および第２の処理手段からの出力を受け取り、前記第１の処理手段からの第１の出力に対応する前記第２の処理手段からの第２の出力を選び、前記第１の出力と前記第２の出力とを比較し一致しているか否かを判別する第３の処理手段とを含むことを特徴とする情報処理装置。
【請求項９】
前記第３の処理手段は、前記第１の処理手段からの出力を格納する第１の格納手段と、前記第２の処理手段からの出力を格納する第２の格納手段とを含み、
前記第３の処理手段は、前記第１の格納手段に格納された前記第１の処理手段からの前記第１の出力に対応する前記第２の出力を前記第２の格納手段を探索して求めることを特徴とする請求項８記載の情報処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、情報処理装置に関し、特に、フォールトトレーラントシステムに用いられる情報処理装置に関する。
【０００２】
【従来の技術】
従来、フォールトトレーラントシステムに用いられる情報処理装置は、二重化されたプロセッサに共通のクロック信号を分配して同一の処理を行わせ、２つのプロセッサの出力をそれらが得られる度に比較して二重化プロセッサの出力の不一致を検出する。
【０００３】
【特許文献１】
特開平８−９５８１６号公報（第１図）
【０００４】
【発明が解決しようとする課題】
上述の従来の情報処理装置では、たとえ二重化されたプロセッサの各々が正常に動作しているとしても、経年変化や製造上のばらつき、あるいは、一方のプロセッサの割り込み処理などの割り込みタイミングが他方のプロセッサのそれに対してずれることなどにより、２つのプロセッサの出力のタイミングや順序が異なることがある。出力の順序が入れ替わると、ある時点で２つのプロセッサからの出力が異なってしまうため、従来のフォールトトレーラントシステムに用いられる情報処理装置では、２つのプロセッサの出力の不一致を検出してしまうという問題がある。
【０００５】
そこで、本発明の目的は、複数のＣＰＵモジュールからの出力の順序が互いに異なる場合でも複数のＣＰＵモジュールの動作が一致しているか否かを判別することができる情報処理装置を提供することにある。
【０００６】
また、本発明の他の目的は、複数のＣＰＵモジュールからの出力に分断されているものが含まれている場合でも複数のＣＰＵモジュールの動作が一致しているか否かを判別することができる情報処理装置を提供することにある。
【０００７】
【課題を解決するための手段】
上記課題を解決するために本発明の情報処理装置は、互いに同期して同一の処理を行う第１および第２の処理手段と、前記第１および第２の処理手段からの出力を受け取り、前記第１の処理手段からの複数個数の出力と前記第２の処理手段からの複数個数の出力との順序を対応させて比較し一致しているか否かを判別する第３の処理手段とを含むことを特徴とする。
【０００８】
また、本発明の他の情報処理装置は、前記第３の処理手段は、前記第１の処理手段からの複数個数の出力を格納する第１の格納手段と、前記第２の処理手段からの複数個数の出力を格納する第２の格納手段とを含むことを特徴とする。
【０００９】
さらに、本発明の他の情報処理装置は、前記第３の処理手段は、前記第１および第２の格納手段のうちいずれか一方において格納する複数個数の出力の格納量が所定量に達したときに、前記第１の格納手段に格納された前記第１の処理手段からの複数個数の出力と前記第２の格納手段に格納された前記第２の処理手段からの複数個数の出力との順序を対応させて比較し一致しているか否かを判別することを特徴とする。
【００１０】
また、本発明の他の情報処理装置は、前記第３の処理手段は、上記第１および第２の処理手段の出力を受け取る頻度よりも低い頻度で上記判別を行うよう指定する指定手段をさらに含むことを特徴とする。
【００１１】
上記課題を解決するために本発明の情報処理装置は、互いに同期して同一の処理を行う第１および第２の処理手段と、前記第１および第２の処理手段からの出力を受け取る第３の処理手段と、この第３の処理手段に設けられ、前記第１の処理手段からの複数個数の出力に基づいて、前記第２の処理手段からの複数個数の出力を再構成する再構成手段と、前記第３の処理手段に設けられ、前記第１の処理手段からの複数個数の出力と前記再構成手段により再構成された前記第２の処理手段からの複数個数の出力とを比較する比較手段とを含む。
【００１２】
また、本発明の他の情報処理装置は、前記第３の処理手段は、前記第１の処理手段からの複数個数の出力を格納する第１の格納手段と、前記第２の処理手段からの複数個数の出力を格納する第２の格納手段とを含み、前記再構成手段は、前記第２の格納手段に格納された前記第２の処理手段からの複数個数の出力の順序を、前記第１の格納手段に格納された前記第１の処理手段からの複数個数の出力の順序に基づいて並べ替えることを特徴とする。
【００１３】
また、本発明の他の情報処理装置は、前記第３の処理手段は、前記第１の処理手段からの複数個数の出力を格納する第１の格納手段と、前記第２の処理手段からの複数個数の出力を格納する第２の格納手段とを含み、前記再構成手段は、前記第２の格納手段に格納された前記第２の処理手段からの複数個数の出力を、前記第１の格納手段に格納された複数個数の前記第１の処理手段からの複数個数の出力に基づいて分割し再結合することを特徴とする特徴とする。
【００１４】
上記課題を解決するために本発明の情報処理装置は、互いに同期して同一の処理を行う第１および第２の処理手段と、前記第１および第２の処理手段からの出力を受け取り、前記第１の処理手段からの第１の出力に対応する前記第２の処理手段からの第２の出力を選び、前記第１の出力と前記第２の出力とを比較し一致しているか否かを判別する第３の処理手段とを含む。
【００１５】
さらに、本発明の他の情報処理装置は、前記第３の処理手段は、前記第１の処理手段からの出力を格納する第１の格納手段と、前記第２の処理手段からの出力を格納する第２の格納手段とを含み、前記第３の処理手段は、前記第１の格納手段に格納された前記第１の処理手段からの前記第１の出力に対応する前記第２の出力を前記第２の格納手段を探索して求めることを特徴とする。
【００１６】
【発明の実施の形態】
次に本発明の情報処理装置の実施の形態について図面を参照して詳細に説明する。
【００１７】
図１を参照すると、本発明の情報処理装置１はＣＰＵモジュール１００および２００と、Ｉｎｐｕｔ／Ｏｕｔｐｕｔ（Ｉ／Ｏ）モジュール３００と、共通クロック生成部１０とを含む。本実施の形態では、１つのＩ／Ｏモジュール３００がＣＰＵモジュール１００および２００に接続されている。ＣＰＵモジュール１００および２００の各々が複数のＩ／Ｏモジュール３００に接続されていてもよい。ＣＰＵモジュール１００および２００とＩ／Ｏモジュール３００との接続は、例えば、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔｓ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  （ＰＣＩ）−Ｅｘｐｒｅｓｓなどによる。
【００１８】
ＣＰＵモジュール１００は、演算要素１０１およびインタフェース制御部１０２を有する。ＣＰＵモジュール２００は、ＣＰＵモジュール１００と同様の構成を有する。ＣＰＵモジュール２００は、演算要素２０１およびインタフェース制御部２０２を有する。
【００１９】
ＣＰＵモジュール１００および２００は、同一の動作を同時に実行するよう構成されている。ＣＰＵモジュール１００および２００には共通クロック生成部１０からの共通クロックが供給されている。ＣＰＵモジュール１００および２００のうち、一方がマスタとなり、他方がパートナーとなって動作する。本実施の形態では、ＣＰＵモジュール１００がマスタであり、ＣＰＵモジュール２００がパートナーである。
【００２０】
演算要素１０１および２０１は、共通クロック生成部１０からの共通クロックに同期して同一の処理を実行する。演算要素１０１および２０１は、単一のプロセッサにより構成しても良いし、複数のプロセッサにより構成しても良い。
【００２１】
インタフェース制御部１０２は、ＣＰＵモジュール１００からＩ／Ｏモジュール３００へのインタフェースを果たす。インタフェース制御部１０２は、パリティ／Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ（ＥＣＣ）の生成や、複数のＩ／Ｏモジュール３００に接続されていればこれらへのブリッジも行う。インタフェース制御部２０２は、インタフェース制御部１０２と同様の構成を有している。
【００２２】
Ｉ／Ｏモジュール３００は、命令解析部３１０、バッファ３２１および３２２、バッファ監視部３３０、比較器３４０、エラー制御部３５０、エラー検出部３６０、マルチプレクサ３７０およびＩ／Ｏインタフェース３８０を含む。
【００２３】
命令解析部３１０は、バッファ監視部３３０から比較開始信号を受け取ると、バッファ３２１に格納されたマスタＣＰＵモジュール１００からの複数個数の出力の順序に対応するよう、バッファ３２２に格納されたパートナーＣＰＵモジュール２００からの複数個数の出力を再構成する。再構成の１つは、具体的には、命令解析部３１０が、バッファ３２２に格納されたＣＰＵモジュール２００からの複数個数の出力の順序を、バッファ３２１に格納されたＣＰＵモジュール１００からの複数個数の出力の順序に基づいて並べ替えることである。再構成の他の１つとしては、具体的には、命令解析部３１０が、バッファ３２１に格納されたＣＰＵモジュール１００からの複数個数の出力に基づいて、バッファ３２２に格納されたＣＰＵモジュール２００からの複数個数の出力を分割し再結合することである。命令解析部３１０は、バッファ３２１から読み出したＣＰＵモジュール１００からの複数個数の出力とバッファ３２２から読み出し再構成したＣＰＵモジュール２００からの複数個数の出力とを比較器３４０に送出する。命令解析部３１０は、バッファ３２２に格納されたパートナーＣＰＵモジュール２００からの複数個数の出力を、バッファ３２１に格納されたマスタＣＰＵモジュール１００からの複数個数の出力の順序に対応させることができない場合、順序不一致である旨をエラー制御部３５０に通知する。
【００２４】
バッファ３２１および３２２は、ＣＰＵモジュール１００および２００にそれぞれ対応して設けられている。バッファ３２１は、ＣＰＵモジュール１００からの複数個数の出力を格納する。バッファ３２２は、ＣＰＵモジュール２００からの複数個数の出力を格納する。ＣＰＵモジュール１００および２００からの各々の出力は、コマンドおよびアドレスなどからなるコマンド部と少なくとも１つのデータからなるデータ部とを含んでおり、バッファ３２１および３２２の各エントリに格納される情報はコマンド部およびデータ部を含む。本実施の形態では、ＣＰＵモジュール１００および２００からの１つの出力単位はパケットである。１つのパケットは、演算要素１０１および２０１から出力される読み出しや書き込みなどのコマンドを単位として、該コマンドとそれに付随するデータなどを含んでいる。データは複数の単位からなる。
【００２５】
バッファ３２１および３２２は、それぞれ複数のエントリを有する。バッファ３２１および３２２の各エントリはＣＰＵモジュール１００および２００からの各パケットを格納する。バッファ３２１および３２２のエントリの数は、本実施の形態では１０から２０個である。バッファ３２１および３２２の各々は、パケットのコマンド部を格納するコマンド領域と、パケットのデータ部を格納するデータ領域とに分かれていても良い。
【００２６】
バッファ監視部３３０は、バッファ３２１および３２２のそれぞれの使用量、すなわち、ＣＰＵモジュール１００および２００からの出力の格納エントリ数を監視する。バッファ監視部３３０は、バッファ３２１および３２２のうち少なくとも一方の使用量が所定量に達したか否かを監視する。バッファ監視部３３０は、バッファ３２１および３２２の少なくとも一方の使用量が所定量に達したことを検出したとき、命令解析部３１０に対して比較開始信号を送出する。
【００２７】
比較器３４０は、命令解析部３１０からバッファ３２１から読み出したＣＰＵモジュール１００からの複数個数の出力とバッファ３２２から読み出し再構成したＣＰＵモジュール２００からの複数個数の出力とを受け取り、これらを比較する。比較器３４０は、ＣＰＵモジュール１００からの出力とＣＰＵモジュール２００からの出力とに含まれるデータ部同士を比較する。データ比較の結果、データが一致していない場合、比較器３４０はエラー制御部３５０にＣＰＵモジュール１００および２００からの出力が不一致である旨を通知する。データが一致している場合、情報処理装置１の状態を変化させる必要が無いため、比較器３４０は何もしなくてもよい。あるいは、この場合、ＣＰＵモジュール１００および２００からの出力が一致している旨の通知をエラー制御部３５０に送り、エラー制御部３５０に、マルチプレクサ３７０が引き続きマスタＣＰＵモジュール１００からの出力をＩ／Ｏインタフェース３８０に送出するよう制御させてもよい。
【００２８】
エラー制御部３５０は、命令解析部３１０から順序が一致しているか否かの通知を、比較器３４０から出力が一致しているか否かの通知を、エラー検出部３６０からハードウェア故障のエラーが存在するか否かの通知を受け取り、これらの通知に基づいてマルチプレクサ３７０がＣＰＵモジュール１００および２００のいずれの出力を出力すべきかを制御する。
【００２９】
エラー検出部３６０は、ＣＰＵモジュール１００および２００からＩ／Ｏモジュール３００に送出されたパケットのパリティエラー、プロトコルエラーやタイムアウトを検出し、ハードウェア故障としてエラー制御部３５０に通知する。
【００３０】
マルチプレクサ３７０は、エラー制御部３５０からの指示に基づき、ＣＰＵモジュール１００および２００の一方からの出力をＩ／Ｏインタフェース３８０に出力する。
【００３１】
Ｉ／Ｏインタフェース３８０は、マルチプレクサ３７０からＣＰＵモジュール１００および２００のうちの一方からの出力を受け取り、Ｉ／Ｏモジュール３００に接続されたＩ／Ｏ装置に出力する。
【００３２】
次に、本発明の動作について図面を参照して説明する。
【００３３】
図１を参照すると、ＣＰＵモジュール１００および２００は共に同一の処理を共通クロック生成部１０からの共通クロックに同期して実行する。ＣＰＵモジュール１００および２００の出力のいずれかがＩ／Ｏモジュール３００のＩ／Ｏインタフェース３８０を介してＩ／Ｏ装置に送られる。ＣＰＵモジュール１００の故障が検出されない限り、マスタであるＣＰＵモジュール１００からの出力がＩ／Ｏインタフェース３８０に送られる。ＣＰＵモジュール２００は二重化構成を実現するため設けられている。ＣＰＵモジュール１００の故障が検出されると、ＣＰＵモジュール１００が切り離されＣＰＵモジュール２００が代替ＣＰＵモジュールとなり、ＣＰＵモジュール２００の出力がＩ／Ｏインタフェース３８０に送られる。ＣＰＵモジュール２００が故障していることが検出される場合は、ＣＰＵモジュール２００が切り離され、ＣＰＵモジュール１００の出力が継続してＩ／Ｏインタフェース３８０に送られる。
【００３４】
ＣＰＵモジュール１００の演算要素１０１およびＣＰＵモジュール２００の演算要素２０１は共通クロックに同期して同一の動作を実行する。演算要素１０１および２０１は各クロックサイクルにおいて同一の処理の結果を同時に出力する。演算要素１０１は処理の結果のパケットをインタフェース制御部１０２に出力する。演算要素２０１は処理の結果のパケットをインタフェース制御部２０２に出力する。
【００３５】
インタフェース制御部１０２は、演算要素１０１からの出力をＩ／Ｏモジュール３００に送出する。インタフェース制御部２０２は、演算要素２０１からの出力をＩ／Ｏモジュール３００に送出する。
【００３６】
Ｉ／Ｏモジュール３００において、命令解析部３１０は、ＣＰＵモジュール１００から受け取ったパケットをコマンド部とデータ部とに分割しバッファ３２１に格納する。命令解析部３１０は、ＣＰＵモジュール２００から受け取ったパケットをコマンド部とデータ部とに分割しバッファ３２２に格納する。
【００３７】
バッファ３２１はＣＰＵモジュール１００からの複数個数のパケットを複数のエントリのそれぞれに格納する。バッファ３２２はＣＰＵモジュール２００からの複数個数のパケットを複数のエントリのそれぞれに格納する。
【００３８】
バッファ監視部３３０は、バッファ３２１および３２２のそれぞれについて、パケットが格納されているエントリの数を監視している。バッファ監視部３３０は、バッファ３２１または３２２の少なくともいずれか一方でパケットを格納するエントリの数が所定値に達したことを検出すると、比較開始信号を生成し命令解析部３１０に送出する。このとき、所定値に達したバッファでは、対応するＣＰＵモジュールに対し再送信が要求され、直後に続くパケットは受け取らない。所定値に達していないバッファでは、所定値に達したバッファが受け取ったパケット数と同数になるまで対応するＣＰＵモジュールからのパケットを受け取る。
【００３９】
命令解析部３１０は、バッファ監視部３３０から比較開始信号を受信すると、バッファ３２１に格納された複数個数のパケットとバッファ３２２に格納された複数個数のパケットとの順序の一致を判別するとともに、バッファ３２２に格納された複数個数のパケットの順序を変更してバッファ３２１に格納された複数個数のパケットの順序に対応させる。より詳細には、命令解析部３１０は、各パケットに含まれるコマンド部（コマンドおよびアドレス）を用いて、バッファ３２１の何れのパケットがバッファ３２２の何れのパケットに対応するかを見極め、バッファ３２２のパケットを並べ替える。命令解析部３１０は、バッファ３２１から読み出した複数個数のパケットとバッファ３２２から読み出し必要に応じ順序を変更した複数個数のパケットとを比較部３４０に出力する。
【００４０】
命令解析部３１０がバッファ３２１に格納された複数のパケットとバッファ３２２に格納された複数のパケットとの順序を一致させることができないと判別した場合、命令解析部３１０は順序が不一致である旨を示す信号をエラー制御部３５０に通知する。
【００４１】
比較器３４０は、命令解析部３１０から、バッファ３２１に格納された複数のパケットとバッファ３２１に格納された複数のパケットを必要に応じて並び変えられたものとを受け取り、対応するパケット同士を比較する。比較器３４０は、パケットのデータ部を用いて比較する。
【００４２】
比較器３４０は、データ部の一致を検出した場合、情報処理装置１の状態を変化させる必要が無いため、何もしなくてもよい。必要であれば、この場合、比較器３４０は出力が一致している旨の通知をエラー制御部３５０に送る。この通知を受け取り、エラー制御部３５０は、マルチプレクサ３７０が引き続きマスタＣＰＵモジュール１００からの出力をＩ／Ｏインタフェース３８０に送出するよう制御する。
【００４３】
比較器３４０は、少なくとも一組の対応するパケットが不一致であると検出した場合、不一致である旨をエラー制御部３５０に通知する。
【００４４】
エラー制御部３５０は、命令解析部３１０から順序不一致の通知を受け取っているまたは比較器３４０から出力不一致の通知を受け取っているが、エラー検出部３６０からハードウェア故障のエラーが存在する旨の通知を受け取っていない場合、ＣＰＵモジュール１００および２００の同期復旧処理を実行する。同期復旧処理は、マスタＣＰＵモジュール１００からパートナーＣＰＵモジュール２００へ、全てのメモリの内容や全てのレジスタの内容をコピーし、ＣＰＵモジュール１００および２００を同時にリセットして再同期化させる処理である。
【００４５】
ハードウェア故障のエラーが存在する場合、すなわち、エラー検出部３６０からハードウェア故障のエラーが存在する旨の通知を受け取った場合は、エラー制御部３５０は、故障と診断されたＣＰＵモジュール１００または２００の切り離し処理を行う。ＣＰＵモジュール１００が故障と診断された場合、エラー制御部３５０は、マルチプレクサ３７０を切り替えＣＰＵモジュール２００からの出力をＩ／Ｏインタフェース３８０に送出するよう制御し、ＣＰＵモジュール１００からＣＰＵモジュール２００への切り替え処理を実行し、ＣＰＵモジュール１００の切り離し処理を実行する。ＣＰＵモジュール２００が故障と診断された場合、エラー制御部３５０は、マルチプレクサ３７０が引き続きＣＰＵモジュール１００からの出力をＩ／Ｏインタフェース３８０に送出するよう制御し、ＣＰＵモジュール２００の切り離し処理を実行する。
【００４６】
図２を参照すると、ＣＰＵモジュール１００からの出力とＣＰＵモジュール２００からの出力とがＩ／Ｏモジュール３００に入力されるタイミングがずれている場合、ＣＰＵモジュール１００からの複数個数の出力とＣＰＵモジュール２００からの複数個数の出力とがタイミングのずれの影響を受けず比較される。
【００４７】
ＣＰＵモジュール１００から出力されたパケット＃１とＣＰＵモジュール２００から出力されたパケット＃１とは同一のタイミングでＩ／Ｏモジュール３００に受信され、バッファ３２１および３２２にそれぞれ格納される。Ｉ／Ｏモジュール３００において、ＣＰＵモジュール１００から出力されたパケット＃２を受け取るタイミングとＣＰＵモジュール２００から出力されたパケット＃２を受け取るタイミングとは異なっている。さらに、Ｉ／Ｏモジュール３００がパケット＃３を受け取るタイミングも、ＣＰＵモジュール１００から受け取る場合とＣＰＵモジュール２００から受け取る場合とではずれが生じている。このようにパケット＃２以降のパケットは、ＣＰＵモジュール１００から受け取るものとＣＰＵモジュール２００から受け取るものとではタイミングがずれている。しかし、これらのパケットは、一旦、バッファ３２１および３２２に格納され比較器３４０に送られるため、タイミングのずれの影響は無く、並べ替えをすること無く比較器３４０において同一のパケットである旨が検出される。
【００４８】
この例では、パケット３がバッファ３２１および３２２に入りきらない。バッファに格納できなかったパケットは再送信が要求され、次の回の並び替えおよび比較の対象となる。
【００４９】
図３を参照すると、ＣＰＵモジュール１００からの出力の順序に対してＣＰＵモジュール２００からの出力の順序が異なっている場合、命令解析部３１０がＣＰＵモジュール２００からの出力の順序をＣＰＵモジュール１００からの出力の順序に対応させて入れ替えることにより、ＣＰＵモジュール１００からの出力とＣＰＵモジュール２からの出力とが一致するものと検出される。このようなＣＰＵモジュール１００からの出力の順序とＣＰＵモジュール２００からの出力の順序との相違は、タイマ割り込みによりＣＰＵモジュール１００および２００の各々の割り込み処理のタイミングがずれることなどにより生じる。
【００５０】
ＣＰＵモジュール１００において、パケット＃１の処理の後タイマ割り込みによりパケット＃２の処理が行われ、その後通常のパケット＃３の処理が実行される。Ｉ／Ｏモジュール３００は、ＣＰＵモジュール１００からの出力を、パケット＃１、パケット＃２およびパケット＃３の順に連続して受け取る。これに対し、ＣＰＵモジュール２００ではタイマ割り込み処理のタイミングがずれてパケット＃２とパケット＃３との順序が逆になっている。すなわち、ＣＰＵモジュール２００は、パケット＃１をまず処理し、次にパケット＃３を処理し、その後、タイマ割り込み処理を受け付けパケット＃２の処理を実行する。Ｉ／Ｏモジュール３００は、ＣＰＵモジュール２００からの出力を、パケット＃１、パケット＃３およびパケット＃２の順に連続して受け取る。命令解析部３１０は、ＣＰＵモジュール１００からの出力、パケット＃１、パケット＃２およびパケット＃３の順序に基づいて、ＣＰＵモジュール２００からの出力、パケット＃１、パケット＃３およびパケット＃２の順序をパケット＃１、パケット＃２およびパケット＃３の順に並び替える。比較器３４０は、ＣＰＵモジュール１００からの複数個数の出力とＣＰＵモジュール２００からの複数個数の出力との一致を検出する。
【００５１】
図４を参照すると、ＣＰＵモジュール２００からの出力がＣＰＵモジュール１００からの出力に対して分断されている場合、ＣＰＵモジュール２００からの複数個数の出力のそれぞれをＣＰＵモジュール１００からの複数個数の出力のそれぞれに対応するよう再構成する。
【００５２】
ＣＰＵモジュール１００において、パケット＃１、パケット＃２の順に通常の処理が行なわれ、その後タイマ割り込みでパケット＃３の処理が実行される。Ｉ／Ｏモジュール３００は、ＣＰＵモジュール１００からの出力を、パケット＃１、パケット＃２およびパケット＃３の順に連続して受け取る。一方、ＣＰＵモジュール２００では、パケット＃１の処理の後のパケット＃２の処理中に割り込みが発生しパケット＃３の処理が行われる。パケット＃２はパケット＃２（１）とパケット＃２（２）とに分割されてしまう。Ｉ／Ｏモジュール３００は、ＣＰＵモジュール２００からの出力を、パケット＃１、パケット＃２（１）とパケット＃３からなるパケットおよびパケット＃２（２）の順に連続して受け取る。
【００５３】
命令解析部３１０は、パケット＃２（１）とパケット＃３とからなるパケットを、パケット＃２（１）とパケット＃３とに切断する。さらに、命令解析部３１０は、パケット＃３とパケット＃２（２）との順序を入れ替え、パケット＃２（１）とパケット＃２（２）とを結合する。比較器３４０は、ＣＰＵモジュール１００からの複数個数の出力、パケット＃１、パケット＃２およびパケット＃３、とＣＰＵモジュール２００からの複数個数の出力、パケット＃１、パケット＃２（１）とパケット＃２（２）とが再結合されたパケット＃２およびパケット＃３、とが一致するものであると検出する。
【００５４】
このように、本発明では、ある期間において、バッファ３２１に格納された複数個数のパケットのそれぞれと同一のパケットがバッファ３２２に過不足なく格納されていればよい。
【００５５】
以上のように、ＣＰＵモジュール１００からの複数個数の出力の順序に対応させてＣＰＵモジュール２００からの複数個数の出力の順序を並び替え、これらの出力を比較するＩ／Ｏモジュール３００を設けたため、複数のＣＰＵモジュールからの出力の順序が互いに異なっている場合であっても、複数のＣＰＵモジュールの動作が一致しているか否かを判別することができる。
【００５６】
また、本実施の形態では、ＣＰＵモジュール１００からの複数個数の出力の順序に対応させてＣＰＵモジュール２００からの複数個数の出力を分割し再結合させ、これらの出力を比較するＩ／Ｏモジュール３００を設けた。このため、複数のＣＰＵモジュールからの出力の中に分断され別のものと結合しているものが存在する場合であっても、複数のＣＰＵモジュールの動作が一致しているか否かを判別することができる。
【００５７】
次に、本発明の第２の実施の形態について図面を参照して詳細に説明する。本発明の第２の実施の形態は、ＣＰＵモジュール１００および２００のそれぞれにクロック要素２０および３０を設けた点で第１の実施の形態と異なる。他の構成は、第１の実施例と同様である。
【００５８】
図５を参照すると、ＣＰＵモジュール１００はクロック要素２０を含む。ＣＰＵモジュール２００はクロック要素３０を含む。クロック要素２０および３０は同一のクロックレートである。クロック要素２０および３０は、情報処理装置２の初期化時などのリセット信号によって同期がとられる。
【００５９】
演算要素１０１はクロック要素２０からクロック信号を受け取り動作する。演算要素２０１はクロック要素３０からクロック信号を受け取り動作する。
【００６０】
次に、本発明の第３の実施の形態について図面を参照して詳細に説明する。本発明の第３の実施の形態は、ＣＰＵモジュール１００および２００からの出力を受け取る度に、順序が一致するか否かを判別させる点にある。本実施の形態において、上述の実施の形態の要素と同一の符号を有する要素は同一の構成を有する。
【００６１】
図６を参照すると、Ｉ／Ｏモジュール４００は、命令解析部４１０、バッファ４２１および４２２、バッファ監視部４３０、比較器４４０、エラー制御部３５０、エラー検出部３６０、マルチプレクサ３７０およびＩ／Ｏインタフェース３８０を含む。エラー制御部３５０、エラー検出部３６０、マルチプレクサ３７０およびＩ／Ｏインタフェース３８０は第１の実施の形態のものと同様の構成を有する。
【００６２】
次に、本発明の動作について図面を参照して説明する。
【００６３】
図６を参照すると、Ｉ／Ｏモジュール４００において、命令解析部４１０は、ＣＰＵモジュール１００から受け取ったパケットをコマンド部とデータ部とに分割しバッファ４２１に格納する。命令解析部４１０は、ＣＰＵモジュール２００から受け取ったパケットをコマンド部とデータ部とに分割しバッファ４２２に格納する。
【００６４】
命令解析部４１０は、マスタＣＰＵモジュール１００に対応するバッファ４２１の先頭エントリのコマンド部を読み出し、バッファ４２２を探索して該コマンド部と同一のコマンド部を探す。同一のコマンド部がバッファ４２２から発見された場合、命令解析部４１０は、このコマンド部に対応するデータ部をバッファ４２１および４２２からそれぞれ読み出し、比較器４４０に出力する。
【００６５】
比較器４４０では、命令解析部４１０から受け取ったバッファ４２１から読み出されたデータ部とバッファ４２１から読み出されたデータ部とを比較する。このとき、命令解析部４１０がＣＰＵモジュール２００から受け取った出力の順序と、比較器４４０が命令解析部４１０から受け取った出力の順序とは、必要に応じ異なっている。具体的には、命令解析部４１０が比較器４４０に送る出力の順序は、ＣＰＵモジュール１００から受け取る出力の順序に対応するよう並び替えられている。
【００６６】
本第３の実施の形態において、命令解析部４１０は、ＣＰＵモジュール１００および２００から受け取ったパケットをバッファに格納する前に、各パケットのコマンド部が対応するか否かを判別するようにしても良い。
【００６７】
このように本実施の形態では、一致しているパケットはバッファに貯まらずＩ／Ｏインタフェース３８０に送られるため、パケットを格納するバッファの容量を小さくすることができる。
【００６８】
次に、上述の実施の形態の実施様態について説明する。
【００６９】
上述の実施の形態では１つのＣＰＵモジュールに対して１つのバッファを対応付けたが、本実施の第１乃至第３の形態において、１つのＣＰＵモジュールに対して複数のバッファを対応付けるようにしても良い。この場合、パケットの並べ替えのスループットを向上させることができる。
【００７０】
また、上記実施の形態では、ＣＰＵモジュール１００および２００からの出力の順序の一致をその出力に元々備えられている情報を用いて判別したが、ＣＰＵモジュール１００および２００のそれぞれにおいて、各出力に順序を示す情報を付加させても良い。この場合、命令解析部は各出力の順序を示す情報を用いて順序の一致を判別する。
【００７１】
【発明の効果】
以上説明したように、本発明では、第１のＣＰＵモジュールからの複数個数の出力の順序に対応させて第２のＣＰＵモジュールからの複数個数の出力の順序を並び替え、これらの出力を比較するＩ／Ｏモジュールを設けた。このため、複数のＣＰＵモジュールからの出力の順序が互いに異なっている場合であっても、複数のＣＰＵモジュールの動作が一致しているか否かを判別することができる。
【００７２】
また、本発明では、第１のＣＰＵモジュールからの複数個数の出力の順序に対応させて第２のＣＰＵモジュールからの複数個数の出力を分割し再結合させ、これらの出力を比較するＩ／Ｏモジュールを設けた。このため、複数のＣＰＵモジュールからの出力の中に分断され別のものと結合しているものが存在する場合であっても、複数のＣＰＵモジュールの動作が一致しているか否かを判別することができる。
【図面の簡単な説明】
【図１】本発明の実施の形態を示す図である。
【図２】本発明の実施の形態の動作の一例を示す図である。
【図３】本発明の実施の形態の動作の一例を示す図である。
【図４】本発明の実施の形態の動作の一例を示す図である。
【図５】本発明の第２の実施の形態を示す図である。
【図６】本発明の第３の実施の形態を示す図である。
【符号の説明】
１００  ＣＰＵモジュール
２００  ＣＰＵモジュール
３００、４００  Ｉ／Ｏモジュール
【図１】
2004318702.tif 000003
【図２】
2004318702.tif 000004
【図３】
2004318702.tif 000005
【図４】
2004318702.tif 000006
【図５】
2004318702.tif 000007
【図６】
2004318702.tif 000008