(57)【要約】【課題】同期外れが検出された場合、再同期化処理を開始する前に同期外れの要因を特定する。【解決手段】ＣＰＵバスコントローラ１１３0，１１３1は、ＣＰＵサブシステム１１0，１１1が同期動作している状態において同期外れが検出された場合でも、ＣＰＵ１１１0，１１１1を停止せずに継続動作させる。また、ＤＭＡコントローラ１２６0，１２６1は、同期外れが検出されてから一定期間が経過するまでは、ＤＭＡ転送を開始せずに待機する。この一定期間は、当該期間内に主記憶装置１１２0，１１２1に格納されたデータについてはＤＭＡコントローラ１２６0，１２６1によるＤＭＡ転送が可能であることを示す期間である。【選択図】図１
2006178636.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵおよび主記憶装置を備えたＣＰＵサブシステムを含むシステムが二重化に構成され、前記ＣＰＵサブシステムがロックステップ同期で同一の動作を行うフォールトトレラントコンピュータであって、
前記システムの各々は、
前記ＣＰＵサブシステムがロックステップ同期している状態において同期外れを検出した場合、自系のＣＰＵを停止せずに継続動作させるＣＰＵバスコントローラと、
前記ＣＰＵバスコントローラにより同期外れが検出された場合、以降、自系の主記憶装置にデータが書き込まれる度に当該主記憶装置におけるデータの書き込み場所の情報が格納されるトレースメモリと、
前記ＣＰＵバスコントローラにより同期外れが検出された場合、自系または他系の主記憶装置のデータのうち前記トレースメモリに書き込み場所が格納されているデータの他系または自系の主記憶装置へのＤＭＡ転送を、同期外れが検出されてから所定のタイミングとなるまで待機するＤＭＡコントローラとを有するフォールトトレラントコンピュータ。
【請求項２】
前記システムの各々は、
入力されるデータを一時的に格納してから出力するバッファと、
自系のＣＰＵおよび他系のＣＰＵからの前記バッファを介したアクセスの内容とを比較して両者が不一致であることを検出した場合、および前記バッファの使用容量が所定値を超えたことを検出した場合に、前記ＣＰＵに対して割り込み信号を通知するアクセス比較器とをさらに有し、
前記ＤＭＡコントローラにおける前記所定のタイミングを、前記アクセス比較器から前記ＣＰＵに割り込み信号が通知されたタイミングとする、請求項１に記載のフォールトトレラントコンピュータ。
【請求項３】
前記ＤＭＡコントローラは、前記トレースメモリの使用容量が所定値を超えたことを検出した場合に、前記ＣＰＵに対して割り込み信号を通知することとし、
前記ＤＭＡコントローラにおける前記所定のタイミングを、前記ＤＭＡコントローラから前記ＣＰＵに割り込み信号が通知されたタイミングとする、請求項１または２に記載のフォールトトレラントコンピュータ。
【請求項４】
前記ＣＰＵバスコントローラは、自系のＣＰＵバスの動作状態を監視し、その監視結果を示すＣＰＵバス動作情報を他系のＣＰＵバスコントローラに送信し、自系のＣＰＵバス動作情報と他系のＣＰＵバス動作情報とを比較することにより同期外れを検出する、請求項１から３のいずれか１項に記載のフォールトトレラントコンピュータ。
【請求項５】
ＣＰＵおよび主記憶装置を備えたＣＰＵサブシステムを含むシステムが二重化に構成され、前記ＣＰＵサブシステムがロックステップ同期で同一の動作を行うフォールトトレラントコンピュータの制御方法であって、
前記システムの各々にて、前記ＣＰＵサブシステムがロックステップ同期している状態において同期外れを検出した場合、自系のＣＰＵを停止せずに継続動作させる第１のステップと、
前記システムの各々にて、同期外れが検出された場合、以降、自系の主記憶装置にデータが書き込まれる度に当該主記憶装置におけるデータの書き込み場所の情報をトレースメモリに格納する第２のステップと、
前記システムの各々にて、同期外れが検出された場合、自系または他系の主記憶装置のデータのうち前記トレースメモリに書き込み場所が格納されているデータの他系または自系の主記憶装置へのＤＭＡ転送を、同期外れが検出されてから所定のタイミングとなるまで待機する第３のステップとを有するフォールトトレラントコンピュータの制御方法。
【請求項６】
前記システムの各々にて、自系のＣＰＵおよび他系のＣＰＵからの前記バッファを介したアクセスの内容とを比較して両者が不一致であることを検出した場合、および前記バッファの使用容量が所定値を超えたことを検出した場合に、前記ＣＰＵに対して割り込み信号を通知するステップをさらに有し、
前記第３のステップにおける前記所定のタイミングを、前記ＣＰＵに割り込み信号が通知されたタイミングとする、請求項５に記載のフォールトトレラントコンピュータの制御方法。
【請求項７】
前記システムの各々にて、前記トレースメモリの使用容量が所定値を超えたことを検出した場合に、前記ＣＰＵに対して割り込み信号を通知するステップをさらに有し、
前記第３のステップにおける前記所定のタイミングを、前記ＣＰＵに割り込み信号が通知されたタイミングとする、請求項５または６に記載のフォールトトレラントコンピュータの制御方法。
【請求項８】
前記第１のステップでは、前記システムの各々にて、自系のＣＰＵバスの動作状態を監視し、その監視結果を示すＣＰＵバス動作情報を他系のＣＰＵバスコントローラに送信し、自系のＣＰＵバス動作情報と他系のＣＰＵバス動作情報とを比較することにより同期外れを検出する、請求項５から７のいずれか１項に記載のフォールトトレラントコンピュータの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵおよび主記憶装置を備えたＣＰＵサブシステムとＩＯサブシステムとからなるシステムを二重冗長構成（ＤＭＲ：Ｄｏｕｂｌｅ  Ｍｏｄｕｌａｒ  Ｒｅｄｕｎｄａｎｃｙ）としたフォールトトレラントコンピュータ（Ｆａｕｌｔ  Ｔｏｌｅｒａｎｔ  Ｃｏｍｐｕｔｅｒ）およびその制御方法に関する。
【背景技術】
【０００２】
近年、コンピュータの多機能化に伴い、様々な分野でコンピュータが利用されるようになってきている。そのため、障害発生時においても、コンピュータを継続して動作させることが要求され、それに対して、システムを二重化したフォールトトレラント技術が採用されている。
【０００３】
このようなフォールトトレラント技術が採用されたフォールトトレラントコンピュータの中には、例えば、ＣＰＵおよび主記憶装置を備えたＣＰＵサブシステムとＩＯサブシステムとからなるシステムが二重化され、２つのＣＰＵサブシステムがクロックを同期させて全く同一の動作を行うロックステップ方式が採られたものがある。
【０００４】
ロックステップ方式のフォールトトレラントコンピュータにおいては、２つのＣＰＵサブシステム間で同一動作性が崩れる同期外れが発生し、２つのＣＰＵサブシステムの主記憶装置の内容が不一致になってしまうことがある。同期外れの要因としては、ＣＰＵ故障の他、放射線の影響で主記憶装置のデータ内容が変わるソフトエラーの発生、ロックステップ方式で保証されていない動作が行われることなどの比較的小規模な故障が挙げられる。
【０００５】
ロックステップ方式のフォールトトレラントコンピュータにおいては、上述のような同期外れが発生した場合、２つのＣＰＵサブシステムを再度同期化させる再同期化処理が行われる。この再同期化処理は、幾つかのフェーズに分かれており、その中のフェーズの１つに、一方のＣＰＵサブシステムの主記憶装置の内容を他方のＣＰＵサブシステムの主記憶装置に複写して、主記憶装置の内容を一致させるものがある。
【０００６】
上述の再同期化処理の高速化を図るためのフォールトトレラントコンピュータは、例えば、特許文献１に開示されている。
【０００７】
特許文献１に開示されたフォールトトレラントコンピュータにおいては、各ＣＰＵサブシステムにおいて、同期動作中に主記憶装置への書き込みイベントが発生すると、この書き込みイベントにより記録内容が更新された主記憶装置の位置（ページ）および時間の情報が記録される。そして、同期外れが検出されると、上記で記録した情報を基に、一方のＣＰＵサブシステムの主記憶装置の更新部分となる一部のデータのみを他方のＣＰＵサブシステムの主記憶装置に複写することが行われる。
【０００８】
このように、特許文献１に開示されたフォールトトレラントコンピュータによれば、主記憶装置の全てのデータを複写するのではなく、更新部分となる一部のデータのみを複写して複写時間を短縮することにより、再同期化処理の時間を短縮することができるという利点がある。
【特許文献１】特開平１０−１７７４９８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、特許文献１に開示されたフォールトトレラントコンピュータにおいては、同期外れが検出された場合、その同期外れの要因を特定することなく、即座に再同期化処理が開始されて、一方のＣＰＵサブシステムの主記憶装置の一部のデータが他方のＣＰＵサブシステムの主記憶装置に複写することが行われる。
【００１０】
そのため、同期外れが発生した要因が、例えば、複写元のＣＰＵサブシステム側のＣＰＵ故障であった場合には、再同期化処理が全て完了した後もフォールトトレラントコンピュータの動作は保証されないことになる。
【００１１】
このように、フォールトトレラントコンピュータの制御においては、同期外れが検出された場合、同期外れの要因を特定してから再同期化処理を開始することが必要である。
【００１２】
ただし、同期外れの要因を特定する時間が長くなると、その間は同期外れが生じているため、ＣＰＵサブシステム間の主記憶装置の不一致度が大きくなることになり、その後に行われる再同期化処理の短縮化を図ることは困難になる。
【００１３】
よって、再同期化処理を開始する前に同期外れの要因を特定する場合には、ＣＰＵサブシステム間の主記憶装置の不一致度を最小限に抑えることも必要である。
【００１４】
そこで、本発明の目的は、同期外れが検出された場合、再同期化処理を開始する前に同期外れの要因を特定することができるフォールトトレラントコンピュータおよびその制御方法を提供することにある。
【００１５】
また、本発明の他の目的は、再同期化処理を開始する前に同期外れの要因を特定することにより生じる、ＣＰＵサブシステム間の主記憶装置の不一致度を最小限に抑えることができるフォールトトレラントコンピュータおよびその制御方法を提供することにある。
【課題を解決するための手段】
【００１６】
上記目的を達成するために本発明は、
ＣＰＵおよび主記憶装置を備えたＣＰＵサブシステムを含むシステムが二重化に構成され、前記ＣＰＵサブシステムがロックステップ同期で同一の動作を行うフォールトトレラントコンピュータであって、
前記システムの各々は、
前記ＣＰＵサブシステムがロックステップ同期している状態において同期外れを検出した場合、自系のＣＰＵを停止せずに継続動作させるＣＰＵバスコントローラと、
前記ＣＰＵバスコントローラにより同期外れが検出された場合、以降、自系の主記憶装置にデータが書き込まれる度に当該主記憶装置におけるデータの書き込み場所の情報が格納されるトレースメモリと、
前記ＣＰＵバスコントローラにより同期外れが検出された場合、自系または他系の主記憶装置のデータのうち前記トレースメモリに書き込み場所が格納されているデータの他系または自系の主記憶装置へのＤＭＡ転送を、同期外れが検出されてから所定のタイミングとなるまで待機するＤＭＡコントローラとを有することを特徴とする。
【００１７】
この構成によれば、同期外れが検出された場合に、再同期化処理となるＤＭＡ転送を開始する前にソフトウェアやハードウェアにより同期外れの要因を特定するための時間を確保することが可能となる。
【００１８】
また、前記システムの各々は、
入力されるデータを一時的に格納してから出力するバッファと、
自系のＣＰＵおよび他系のＣＰＵからの前記バッファを介したアクセスの内容を比較して両者が不一致であることを検出した場合、および前記バッファの使用容量が所定値を超えたことを検出した場合に、前記ＣＰＵに対して割り込み信号を通知するアクセス比較器とをさらに有し、
前記ＤＭＡコントローラにおける前記所定のタイミングを、前記アクセス比較器から前記ＣＰＵに割り込み信号が通知されたタイミングとしても良い。
【００１９】
また、前記ＤＭＡコントローラは、前記トレースメモリの使用容量が所定値を超えたことを検出した場合に、前記ＣＰＵに対して割り込み信号を通知することとし、
前記ＤＭＡコントローラにおける前記所定のタイミングを、前記ＤＭＡコントローラから前記ＣＰＵに割り込み信号が通知されたタイミングとしても良い。
【００２０】
これらの構成によれば、ＤＭＡコントローラにおける所定のタイミングを、ＤＭＡコントローラまたはＩＯアクセス比較器からＣＰＵに対して割り込み通知がなされるタイミングとしている。この割り込み通知は、割り込み通知を発したタイミング以降に主記憶装置に格納されたデータについてはＤＭＡコントローラによるＤＭＡ転送不可となることを、ＣＰＵに通知する信号として代用されるものである。従って、同期外れの要因を特定するための時間を、ＤＭＡ転送が実行できる程度の最小限に抑えることができるため、同期外れの要因を特定する時間を確保しつつ、それにより生じる主記憶装置の不一致度を最小限に抑えることが可能となり、再同期化処理の短縮化を図ることが可能となる。
【００２１】
また、前記ＣＰＵバスコントローラは、自系のＣＰＵバスの動作状態を監視し、その監視結果を示すＣＰＵバス動作情報を他系のＣＰＵバスコントローラに送信し、自系のＣＰＵバス動作情報と他系のＣＰＵバス動作情報とを比較することにより同期外れを検出することとしても良い。
【００２２】
この構成によれば、ＣＰＵバスコントローラ同士でＣＰＵバスの動作を直接比較することにより、主記憶装置の不一致度が大きくなる前に早期に同期外れを検出することが可能となるため、再同期化処理の短縮化に寄与することが可能となる。
【発明の効果】
【００２３】
以上説明したように本発明によれば、同期動作している状態において同期外れが検出された場合でも、ＣＰＵを停止せずに継続動作させ、同期外れが検出されてから所定のタイミングとなるまでは、ＤＭＡコントローラによるＤＭＡ転送を開始せずに待機させるため、再同期化処理を開始する前にソフトウェアやハードウェアにより同期外れの要因を特定するための時間を確保することができるという効果を奏する。
【発明を実施するための最良の形態】
【００２４】
以下に、本発明を実施するための最良の形態について図面を参照して説明する。
【００２５】
図１を参照すると、本発明の一実施形態のフォールトトレラントコンピュータは、ＣＰＵサブシステム１１0およびＩＯサブシステム１２0からなる０系のシステム１０0と、ＣＰＵサブシステム１１1およびＩＯサブシステム１２1からなる１系のシステム１０0とを二重化した構成であり、ＣＰＵサブシステム１１0およびＣＰＵサブシステム１１1は、ロックステップ同期（以下、単に「同期」と呼ぶ）で全く同一の動作を行っている。
【００２６】
０系のＣＰＵサブシステム１１0は、ＣＰＵ１１１0と、主記憶装置１１２0と、ＣＰＵバスコントローラ１１３0と、メモリバスコントローラ１１４0と、ルータ１１５0とを備えている。また、０系のＩＯサブシステム１２0は、クロスリンクＩ／Ｆ１２１0と、ＩＯコントローラ１２２0と、ＩＯアクセス比較器１２３0と、バッファ１２４0と、メモリアクセストレースメモリ１２５0と、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）コントローラ１２６0とを備えている。
【００２７】
同様に、１系のＣＰＵサブシステム１１1は、ＣＰＵ１１１1と、主記憶装置１１２1と、ＣＰＵバスコントローラ１１３1と、メモリバスコントローラ１１４1と、ルータ１１５1とを備えている。また、１系のＩＯサブシステム１２1は、クロスリンクＩ／Ｆ１２１1と、ＩＯコントローラ１２２1と、ＩＯアクセス比較器１２３1と、バッファ１２４1と、メモリアクセストレースメモリ１２５1と、ＤＭＡコントローラ１２６1とを備えている。
【００２８】
ここで、システム１０0，１０1内の構成要素の動作について説明する。以下では、０系のシステム１０0内の構成要素の動作について説明するが、１系のシステム１０1内の構成要素も同様の動作を行う。
【００２９】
ＣＰＵバスコントローラ１１３0は、自系のＣＰＵ１１１0との間のＣＰＵバスの動作状態を監視し、その監視結果を示すＣＰＵバス動作情報を他系のＣＰＵバスコントローラ１１３1に送信し、自系のＣＰＵバス動作情報と他系のＣＰＵバス動作情報とを比較し、両者が不一致であること、すなわち同期外れが発生したことを検出する。そして、ＣＰＵバスの不一致を検出すると、ＣＰＵバスコントローラ１１３0は、ＣＰＵバスの不一致を示す信号をルータ１１５0経由でＤＭＡコントローラ１２６0に通知する。なお、ＣＰＵバスコントローラ１１３0は、ＣＰＵバスが動作していない状態も含め、常にＣＰＵバス動作情報を送信している。また、ＣＰＵバス自体のバンド幅が大きいため、ＣＰＵバス動作情報は、ＣＰＵバスコントローラ１１３0によりＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）コード変換が施されてデータ量が削減された情報となっている。
【００３０】
また、ＣＰＵバスコントローラ１１３0は、主記憶装置１１２0のアドレス／ページを指定して主記憶装置１１２0への書き込み指示をメモリバスコントローラ１１４0に対して行う。この書き込み指示は、ＤＭＡコントローラ１２６0にも通知される。また、ＣＰＵバスコントローラ１１３0は、ＤＭＡコントローラ１２６0からの指示を受けた場合等において、主記憶装置１１２0のアドレス／ページを指定して主記憶装置１１２0への読み出し指示をメモリバスコントローラ１１４0に対して行う。
【００３１】
メモリバスコントローラ１１４0は、ＣＰＵバスコントローラ１１３0からの書き込み指示または読み出し指示を受けて、主記憶装置１１２0の該当するアドレス／ページへの書き込みまたは主記憶装置１１２0の該当するアドレス／ページからの読み出しを行う。
【００３２】
ルータ１１５0は、ＣＰＵサブシステム１１0とＩＯサブシステム１２0との境界部分に配置されて、ＣＰＵサブシステム１１0とＩＯサブシステム１２0との間でデータを中継する。
【００３３】
クロスリンクＩ／Ｆ１２１0は、ＩＯサブシステム１２0とＩＯサブシステム１２1との間の通信に利用される高速インタフェースであり、システム１０0内の内部クロックとは非同期に動作するシリアルリンクが一般に使用される。
【００３４】
ＩＯコントローラ１２２0は、自系のＣＰＵ１１１0と他系のＣＰＵ１１１1の双方からアクセスを受ける。この２つのアクセスは、ＣＰＵサブシステム１１0，１１1が同期動作中である場合、同一のアクセスとなる。また、ＩＯコントローラ１２２0は、自系のＣＰＵ１１１0と他系のＣＰＵ１１１1の双方へアクセスを行う。
【００３５】
ＩＯアクセス比較器１２３0は、自系のＣＰＵ１１１0から自系のＩＯコントローラＣＰＵ１２２0へのアクセス内容と、他系のＣＰＵ１１１1から自系のＩＯコントローラ１２２0へのアクセス内容とを比較し、両者が不一致であることを検出すると、その旨を示す信号をルータ１１５0経由でＣＰＵ１１１0に割り込みで通知する。このとき、自系のＣＰＵ１１１0からのアクセスが内部パスのみを介して行われるのに対して、他系のＣＰＵ１１１1からのアクセスは外部パスを介して行われるため、他系のＣＰＵ１１１1からのアクセスは到着時間が遅れる。そのため、ＩＯアクセス比較器１２３0の入力段にはバッファ１２４0が設けられており、自系のＣＰＵ１１１0からのアクセスデータをバッファ１２４0で一時的に格納してからＩＯアクセス比較器１２３0に出力する。それによって、アクセスデータの順序の入れ替えを調整することができるとともに両系からのアクセスが到着するまでアクセス不一致を判定せずに待機することができる。
【００３６】
ＩＯアクセス比較器１２３0は、バッファ１２４0の使用容量が所定値を超えたことを検出すると、その旨を示す信号をルータ１１５0経由でＣＰＵ１１１0に割り込みで通知する。
【００３７】
ＤＭＡコントローラ１２６0は、ＣＰＵバスコントローラ１１３0から主記憶装置１１２0に対して行われた書き込み指示を基にして、データが書き込まれた主記憶装置１１２0のアドレス／ページ情報を、メモリアクセストレースメモリ１２５0にＦＩＦＯ（Ｆｉｒｓｔ−Ｉｎ  Ｆｉｒｓｔ−Ｏｕｔ）形式で格納する動作を行う。この動作は、ＣＰＵバスコントローラ１１３0からＣＰＵバス不一致を示す信号が通知されてから開始される。なお、ＤＭＡコントローラ１２６0からＣＰＵバスコントローラ１１３0に対してなされる指示により主記憶装置１１２0に対する書き込みが行われる場合もあるが、この場合にはＤＭＡコントローラ１２６0では主記憶装置１１２0のトレースを行わない。そのようにするために、ＣＰＵバスコントローラ１１３0において、主記憶装置１１２0に対して行う書き込み指示に所定のマークを付ける等の処理を行うことが望ましい。
【００３８】
ＤＭＡコントローラ１２６0は、メモリアクセストレースメモリ１２５0の使用容量が所定値を超えたことを検出すると、その旨を示す信号をルータ１１５0経由で自系のＣＰＵ１１１0に割り込みで通知するとともに、クロスリンクＩ／Ｆ１２１0経由で他系のＣＰＵ１１１1に割り込みで通知する。
【００３９】
ＤＭＡコントローラ１２６0は、メモリアクセストレースメモリ１２５0に格納されているアドレス／ページ情報に基づく主記憶装置１１２0の該当するアドレス／ページのデータを自系の主記憶装置１１２0および他系の主記憶装置１１２1の双方にＤＭＡ転送する動作を行う。この動作は、ソフトウェアからの指示を受けて開始される。
【００４０】
以下、図１に示した本実施形態のフォールトトレラントコンピュータの動作について説明する。なお、ここで説明する動作は、その動作の開始時に、ＣＰＵサブシステム１１0，１１1が同期動作を行っていることが前提となる。
【００４１】
図２を参照すると、ＣＰＵバスコントローラ１１３0，１１３1が、ＣＰＵサブシステム１１0，１１1が同期動作している状態において、ＣＰＵバスの不一致により同期外れが発生したことを検出したとする（ステップ２０１）。すると、ＣＰＵバスコントローラ１１３0は、その旨を示す信号をＤＭＡコントローラ１２６0に通知し、また、ＣＰＵバスコントローラ１１３1は、ＣＰＵバスの不一致を示す信号をＤＭＡコントローラ１２６1に通知する（ステップ２０２）。その様子を図３に示す。
【００４２】
また、ＣＰＵバスコントローラ１１３0，１１３1は、ＣＰＵバスの不一致を示す信号を、同期外れの要因がＣＰＵ故障であるか否かを診断するソフトウェアやハードウェア（不図示）にも通知する。
【００４３】
ただし、同期外れが発生しても、ＣＰＵバスコントローラ１１３0は、ＣＰＵ１１１0を停止せずに継続して動作させ、また、ＣＰＵバスコントローラ１１３1は、ＣＰＵ１１１1を停止せずに継続して動作させる。このように、同期外れが発生した後も、ＣＰＵ１１１0，１１１1を継続して動作させることにより、ソフトウェアやハードウェアの診断により同期外れの要因がＣＰＵ故障であるか否かを特定できる可能性が高まる。
【００４４】
ＤＭＡコントローラ１２６0は、ＣＰＵバスコントローラ１１３0からのＣＰＵバス不一致を示す信号の通知を受けると、主記憶装置１１２0のトレースを開始し、また、ＤＭＡコントローラ１２６1は、ＣＰＵバスコントローラ１１３1からのＣＰＵバス不一致を示す信号の通知を受けると、主記憶装置１１２1のトレースを開始する（ステップ２０３）。
【００４５】
具体的には、ＤＭＡコントローラ１２６0は、ＣＰＵバスコントローラ１１３0から主記憶装置１１２0に対して行われた書き込み指示を基にして、データが書き込まれた主記憶装置１１２0のアドレス／ページ情報をメモリアクセストレースメモリ１２５0に格納する。また、ＤＭＡコントローラ１２６1は、ＣＰＵバスコントローラ１１３1から主記憶装置１１２1に対して行われた書き込み指示を基にして、データが書き込まれた主記憶装置１１２1のアドレス／ページ情報をメモリアクセストレースメモリ１２５1に格納する。その様子を図４に示す。
【００４６】
以降、ＤＭＡコントローラ１２６0が、メモリアクセストレースメモリ１２５0の使用容量が所定値を超えたことを検出し、また、ＤＭＡコントローラ１２６1が、メモリアクセストレースメモリ１２５1の使用容量が所定値を超えたことを検出したとする（ステップ２０４）。すると、ＤＭＡコントローラ１２６0は、その旨を示す信号を自系のＣＰＵ１１１0と他系のＣＰＵ１１１1に割り込みで通知し、また、ＤＭＡコントローラ１２６1は、その旨を示す信号を自系のＣＰＵ１１１1と他系のＣＰＵ１１１0に割り込みで通知する（ステップ２０６）。その様子を図５に示す。
【００４７】
また、ＩＯアクセス比較器１２３0が、自系のＣＰＵ１１１0からのアクセス内容と他系のＣＰＵ１１１1からのアクセス内容とが不一致であることを検出したか、もしくはバッファ１２４0の使用容量が所定値を超えたことを検出したとする。また、ＩＯアクセス比較器１２３1が、自系のＣＰＵ１１１1からのアクセス内容と、他系のＣＰＵ１１１0からのアクセス内容とが不一致であることを検出したか、もしくは、バッファ１２４1の使用容量が所定値を超えたことを検出したとする（ステップ２０５）。すると、ＤＭＡコントローラ１２６0は、その旨を示す信号を自系のＣＰＵ１１１0と他系のＣＰＵ１１１1に割り込みで通知し、また、ＤＭＡコントローラ１２６1は、その旨を示す信号を自系のＣＰＵ１１１1と他系のＣＰＵ１１１0に割り込みで通知する（ステップ２０６）。その様子を図６に示す。
【００４８】
ところで、ステップ２０２以降の時間は、ＣＰＵ１１１0，１１１1に継続動作させて、ソフトウェアやハードウェアの診断により同期外れの要因がＣＰＵ故障であるかを特定させるための時間となる。しかし、上述のように、同期外れの要因を特定する時間を長くすると、それだけ主記憶装置１１２0，１１２1の不一致度が大きくなることになるため、その後に行われる再同期化処理の短縮化を図ることは困難になる。
【００４９】
そこで、本実施形態においては、ステップ２０２以降、ステップ２０６でＣＰＵ１１１0，１１１1への割り込み通知が発生した場合、割り込み通知が発生したタイミング以降に主記憶装置１１２0，１１２1に格納されるデータについてはＤＭＡコントローラ１２６0，１２６1によるＤＭＡ転送が不可能であると判断する。言い換えれば、ステップ２０６で割り込み通知が発生したタイミングまでの期間に主記憶装置１１２0，１１２1に格納されたデータのみがＤＭＡ転送可能であると判断し、その期間に限定して同期外れの要因を特定させ、その後に再同期化処理に移行する。したがって、同期外れの要因を特定するための時間を、ＤＭＡ転送が実行できる程度の最小限の時間に抑えることができるため、同期外れの要因を特定する時間を確保しつつ、それにより生じる主記憶装置１１２0，１１２1の不一致度を最小限に抑えることができる。
【００５０】
なお、ステップ２０６においては、ＤＭＡコントローラ１２６0，１２６1またはＩＯアクセス比較器１２３0，１２３1が、ＣＰＵ１１１0，１１１1への割り込み通知を行う例について示したが、ステップ２０６またはそれ以前において、ソフトウェアからＣＰＵ１１１0，１１１1に割り込み通知がなされた場合にも、以降の動作は同様である。
【００５１】
ステップ２０６の割り込み通知イベントが発生すると、再同期化処理が開始される。再同期化処理においては、まず、ソフトウェアやハードウェアの診断により同期外れの要因がＣＰＵ１１１0，１１１1のいずれかの故障であると特定されたか否かが判定される（ステップ２０７）。
【００５２】
ステップ２０７において、同期外れの要因がＣＰＵ１１１0，１１１1のいずれかの故障であると特定されなかった場合は、ソフトウェアでは同期外れの要因がソフトエラーの発生等による小規模な故障であるものと判断される。この場合は、ＤＭＡコントローラ１２６0，１２６1は、ソフトウェアからの指示によりＤＭＡ転送を開始する（ステップ２０８）。
【００５３】
具体的には、まず、ＤＭＡコントローラ１２６0は、メモリアクセストレースメモリ１２５0からアドレス／ページ情報を読み出し、主記憶装置１１２0の該当するアドレス／ページからの読み出し指示をＣＰＵバスコントローラ１１３0経由でメモリバスコントローラ１１４0に対して行う。同様に、ＤＭＡコントローラ１２６1は、メモリアクセストレースメモリ１２５1からアドレス／ページ情報を読み出し、主記憶装置１１２0の該当するアドレス／ページからの読み出し指示をＣＰＵバスコントローラ１１３0経由でメモリバスコントローラ１１４0に対して行う。その様子を図７に示す。続いて、メモリバスコントローラ１１４0は、主記憶装置１１２0の該当するアドレス／ページからデータを読み出し、読み出したデータをＤＭＡコントローラ１２６0，１２６1に転送する。その様子を図８に示す。続いて、ＤＭＡコントローラ１２６0は、主記憶装置１１２0から転送されてきたデータの書き込み指示をＣＰＵバスコントローラ１１３1経由でメモリバスコントローラ１１４1に対して行う。同様に、ＤＭＡコントローラ１２６1は、主記憶装置１１２0から転送されてきたデータの書き込み指示をＣＰＵバスコントローラ１１３1経由でメモリバスコントローラ１１４1に対して行う。その様子を図９に示す。その後、メモリバスコントローラ１１４1は、主記憶装置１１２1にデータの書き込みを行い、それにより、主記憶装置１１２0，１１２1の内容が一致することになる。
【００５４】
なお、主記憶装置１１２0の該当する全てのデータを主記憶装置１１２1に転送しても、ＤＭＡコントローラ１２６0，１２６1は、動作を停止せず、以後、主記憶装置１１２0への書き込みが行われる度に、主記憶装置１１２0の該当するアドレス／ページのデータの主記憶装置１１２1への転送を実行することになる。
【００５５】
その後、再同期化処理の中でＤＭＡ転送のフェーズが終了すると（ステップ２０９）、再同期化処理の次のフェーズに移行する（ステップ２１０）。
【００５６】
一方、ステップ２０７において、同期外れの要因がＣＰＵ１１１0，１１１1のいずれかの故障であると特定された場合、ソフトウェアからの指示により、故障が発生したＣＰＵ側のシステムが論理的に切り離されて（ステップ２１１）、再同期化処理の次のフェーズに移行する（ステップ２１２）。
【００５７】
上述したように本実施形態においては、同期動作している状態において同期外れが検出された場合でも、ＣＰＵ１１１0，１１１1を停止せずに継続動作させ、同期外れが検出されてから一定のタイミングに達するまでは、ＤＭＡコントローラ１２６0，１２６1によるＤＭＡ転送を開始させずに待機させる。
【００５８】
それにより、同期外れが検出された場合に、再同期化処理を開始する前にソフトウェアやハードウェアにより同期外れの要因を特定するための時間を確保することができる。
【００５９】
なお、上記のタイミングは、ＤＭＡコントローラ１２６0，１２６1またはＩＯアクセス比較器１２３0，１２３1からＣＰＵ１１１0，１１１1に対して割り込み通知がなされるタイミングである。この割り込み通知は、割り込み通知を発したタイミング以降に主記憶装置１１２0，１１２1に格納されたデータについてはＤＭＡコントローラ１２６0，１２６1によるＤＭＡ転送不可となることを、ＣＰＵ１１１0，１１１1に通知する信号として代用されるものである。
【００６０】
従って、同期外れの要因を特定するための時間を、ＤＭＡ転送が実行できる程度の最小限に抑えることができるため、同期外れの要因を特定する時間を確保しつつ、それにより生じる主記憶装置１１２0，１１２1の不一致度を最小限に抑えることができ、再同期化処理の短縮化を図ることができる。
【００６１】
また、本実施形態においては、ＣＰＵバスコントローラ１１３0，１１３1同士でＣＰＵバス動作情報を互いに送受信し、ＣＰＵバス動作を直接比較することで同期外れを早期に検出している。
【００６２】
それにより、主記憶装置の不一致度が大きくなる前に早期に同期外れを検出することができるため、再同期化処理の短縮化に寄与することができる。
【図面の簡単な説明】
【００６３】
【図１】本発明の一実施形態のフォールトトレラントコンピュータの構成を示す図である。
【図２】図１に示したフォールトトレラントコンピュータの動作の一例を説明するフローチャートである。
【図３】図２に示したステップ２０１，２０２の処理を説明する図である。
【図４】図２に示したステップ２０３の処理を説明する図である。
【図５】図２に示したステップ２０４，２０６の処理を説明する図である。
【図６】図２に示したステップ２０５，２０６の処理を説明する図である。
【図７】図２に示したステップ２０８の処理を説明する図である。
【図８】図２に示したステップ２０８の処理を説明する図である。
【図９】図２に示したステップ２０８の処理を説明する図である。
【符号の説明】
【００６４】
１０0，１０1    システム
１１0，１１1    ＣＰＵサブシステム
１２0，１２1    ＩＯサブシステム
１１１0，１１１1    ＣＰＵ
１１２0，１１２1    主記憶装置
１１３0，１１３1    ＣＰＵバスコントローラ
１１４0，１１４1    メモリバスコントローラ
１１５0，１１５1    ルータ
１２１0，１２１1    クロスリンクＩ／Ｆ
１２２0，１２２1    ＩＯコントローラ
１２３0，１２３1    ＩＯアクセス比較器
１２４0，１２４1    バッファ
１２５0，１２５1    メモリアクセストレースメモリ
１２６0，１２６1    ＤＭＡコントローラ
【図１】
2006178636.tif 000003
【図２】
2006178636.tif 000004
【図３】
2006178636.tif 000005
【図４】
2006178636.tif 000006
【図５】
2006178636.tif 000007
【図６】
2006178636.tif 000008
【図７】
2006178636.tif 000009
【図８】
2006178636.tif 000010
【図９】
2006178636.tif 000011