(57)【要約】【課題】フォールトトレラント機能を実現するためのエラー処理、同期化処理、再同期化処理をシステム状態に応じて適切に実行する。【解決手段】  ２つのシステム１００は、自他システム間でクロックステップ同期により同じタイミングで動作するＣＰＵサブシステム１１０と、これに接続されるＩＯサブシステム１２０と、両者間に接続されるＦＴコントローラ１３０と、ＦＴコントローラ１３０を介して自他システム間を接続するクロスリング１４０とを有する。ＦＴコントローラ１３０は、両システム１００によるフォールトトレラント用のエラー処理、二重化処理、及び再同期化処理を行うための複数のシステム動作をこれに対応する複数ステートとして所定のイベント信号に関連付けて管理し、イベント信号に応じて、システム毎にステートを遷移させながら複数のシステム動作を選択してＣＰＵサブシステム１１０に実行させる。【選択図】  図１
2006178616.tif 000002
【特許請求の範囲】
【請求項１】
互いに同一のコンピュータハードウェアで構成された複数のシステムを備えたフォールトトレラントシステムであって、
前記複数のシステムは、
自他システム間においてロックステップ同期の状態で動作可能なプロセッサ部と、
前記プロセッサ部に接続される入出力部と、
前記プロセッサ部及び前記入出力部間に接続される制御部と、
前記制御部を介して前記自他システム間を互いに接続する信号伝送路とを有し、
前記制御部は、
前記複数のシステムによるフォールトトレラント用のエラー処理、同期化処理、及び再同期化処理を行うための複数のシステム動作をこれに対応する複数のステートとして所定のイベント信号に関連付けて管理するステート管理手段と、
前記イベント信号に応じて、前記複数のシステム毎に前記複数のステートを遷移させながら前記複数のシステム動作を選択して前記プロセッサ部に実行させる制御手段とを備えたことを特徴とするフォールトトレラントシステム。
【請求項２】
前記複数のシステム動作は、
自システム内の前記プロセッサ部及び前記入出力部間のアクセス制御と、
自他システム間における前記プロセッサ部及び前記入出力部間のアクセス制御と、
前記自他システム間における前記プロセッサ部から前記入出力部へのアクセス比較と、
前記自他システム間における前記プロセッサ部内のバス上のアクセス比較と、
前記自他システム間における前記プロセッサ部の主記憶複写とを有することを特徴とする請求項１記載のフォールトトレラントシステム。
【請求項３】
前記主記憶複写は、部分複写を含むことを特徴とする請求項２記載のフォールトトレラントシステム。
【請求項４】
前記複数のステートは、
前記複数のシステムのうちサービスを提供するシステムに組み込まれている状態を示すオンライン系ステートと、
前記サービスを提供するシステムから切り離されている状態を示すオフライン系ステートと、
エラー検出により前記サービスを提供するシステムから切り離されている状態を示すフォールト系ステートとを有することを特徴とする請求項１から３のいずれか１項に記載のフォールトトレラントシステム。
【請求項５】
前記オンライン系ステートは、
電源投入時に前記プロセッサ部が自他システムで互いに非同期で動作している状態を示すオンライン分離ステートと、
前記プロセッサ部が前記自他システムで互いに非同期で動作している状態を示すオンライン準備ステートと、
前記プロセッサ部が前記自他システムで互いに同期して動作し当該プロセッサ部内の主記憶内容をチェックしている状態を示すオンライン同期前ステートと、
前記プロセッサ部が前記自他システムで互いに同期して動作している状態を示すオンライン同期ステートと、
前記オンライン同期ステートのときに前記プロセッサ部内のバス上の動作が前記自他システムで互いに不一致となったときの一時的な状態を示すオンライン非同期ステートとを有し、
前記オフライン系ステートは、
前記電源投入時に前記プロセッサ部が前記自他システムで互いに非同期で動作している状態を示し前記オンライン分離ステートと対を成すオフライン分離ステートと、
前記プロセッサ部が前記自他システムで互いに非同期で動作している状態を示し前記オンライン準備ステートと対を成すオフラインステートと、
前記自他システム間で前記プロセッサ部の主記憶複写を実行し当該プロセッサ部が前記自他システムで互いに非同期で動作している状態を示すオフライン複写ステートと、
前記プロセッサ部内のバス上の動作が前記自他システムで互いに不一致となったときに前記システムから切り離された状態を示すオフライン前ステートとを有することを特徴とする請求項４記載のフォールトトレラントシステム。
【請求項６】
互いに同一のプロセッサ部及び入出力部を有する複数のシステムを備えたフォールトトレラントシステムで用いる制御装置であって、
前記複数のシステムによるフォールトトレラント用のエラー処理、同期化処理、及び再同期化処理を行うための複数のシステム動作をこれに対応する複数のステートとして所定のイベント信号に関連付けて管理するステート管理手段と、
前記イベント信号に応じて、前記複数のシステム毎に前記複数のステートを遷移させながら前記複数のシステム動作を選択して前記プロセッサ部に実行させる制御手段とを備えたことを特徴とするフォールトトレラントシステムで用いる制御装置。
【請求項７】
前記複数のシステム動作は、
自システム内の前記プロセッサ部及び前記入出力部間のアクセス制御と、
自他システム間における前記プロセッサ部及び前記入出力部間のアクセス制御と、
前記自他システム間における前記プロセッサ部から前記入出力部へのアクセス比較と、
前記自他システム間における前記プロセッサ部内のバス上のアクセス比較と、
前記自他システム間における前記プロセッサ部の主記憶複写とを有することを特徴とする請求項６記載のフォールトトレラントシステムで用いる制御装置。
【請求項８】
前記主記憶複写は、部分複写を含むことを特徴とする請求項７記載のフォールトトレラントシステムで用いる制御装置。
【請求項９】
前記複数のステートは、
前記複数のシステムのうちサービスを提供するシステムに組み込まれている状態を示すオンライン系ステートと、
前記サービスを提供するシステムから切り離されている状態を示すオフライン系ステートと、
エラー検出により前記サービスを提供するシステムから切り離されている状態を示すフォールト系ステートとを有することを特徴とする請求項６から８のいずれか１項に記載のフォールトトレラントシステムで用いる制御装置。
【請求項１０】
前記オンライン系ステートは、
電源投入時に前記プロセッサ部が自他システムで互いに非同期で動作している状態を示すオンライン分離ステートと、
前記プロセッサ部が前記自他システムで互いに非同期で動作している状態を示すオンライン準備ステートと、
前記プロセッサ部が前記自他システムで互いに同期して動作し当該プロセッサ部内の主記憶内容をチェックしている状態を示すオンライン同期前ステートと、
前記プロセッサ部が前記自他システムで互いに同期して動作している状態を示すオンライン同期ステートと、
前記オンライン同期ステートのときに前記プロセッサ部内のバス上の動作が前記自他システムで互いに不一致となったときの一時的な状態を示すオンライン非同期ステートとを有し、
前記オフライン系ステートは、
前記電源投入時に前記プロセッサ部が前記自他システムで互いに非同期で動作している状態を示し前記オンライン分離ステートと対を成すオフライン分離ステートと、
前記プロセッサ部が前記自他システムで互いに非同期で動作している状態を示し前記オンライン準備ステートと対を成すオフラインステートと、
前記自他システム間で前記プロセッサ部の主記憶複写を実行し当該プロセッサ部が前記自他システムで互いに非同期で動作している状態を示すオフライン複写ステートと、
前記プロセッサ部内のバス上の動作が前記自他システムで互いに不一致となったときに前記システムから切り離された状態を示すオフライン前ステートとを有することを特徴とする請求項９記載のフォールトトレラントシステムで用いる制御装置。
【請求項１１】
互いに同一のプロセッサ部及び入出力部を有する複数のシステムを備えたフォールトトレラントシステムの動作方法であって、
前記複数のシステムによるフォールトトレラント用のエラー処理、同期化処理、及び再同期化処理を行うための複数のシステム動作をこれに対応する複数のステートとして所定のイベント信号に関連付けて管理するステップと、
前記イベント信号に応じて、前記複数のシステム毎に前記複数のステートを遷移させながら前記複数のシステム動作を選択して前記プロセッサ部に実行させるステップとを備えたことを特徴とするフォールトトレラントシステムの動作方法。
【請求項１２】
前記複数のシステム動作は、
自システム内の前記プロセッサ部及び前記入出力部間のアクセス制御と、
自他システム間における前記プロセッサ部及び前記入出力部間のアクセス制御と、
前記自他システム間における前記プロセッサ部から前記入出力部へのアクセス比較と、
前記自他システム間における前記プロセッサ部内のバス上のアクセス比較と、
前記自他システム間における前記プロセッサ部の主記憶複写とを有することを特徴とする請求項１１記載のフォールトトレラントシステムの動作方法。
【請求項１３】
前記主記憶複写は、部分複写を含むことを特徴とする請求項１２記載のフォールトトレラントシステムの動作方法。
【請求項１４】
前記複数のステートは、
前記複数のシステムのうちサービスを提供するシステムに組み込まれている状態を示すオンライン系ステートと、
前記サービスを提供するシステムから切り離されている状態を示すオフライン系ステートと、
エラー検出により前記サービスを提供するシステムから切り離されている状態を示すフォールト系ステートとを有することを特徴とする請求項１１から１３のいずれか１項に記載のフォールトトレラントシステムの動作方法。
【請求項１５】
前記オンライン系ステートは、
電源投入時に前記プロセッサ部が自他システムで互いに非同期で動作している状態を示すオンライン分離ステートと、
前記プロセッサ部が前記自他システムで互いに非同期で動作している状態を示すオンライン準備ステートと、
前記プロセッサ部が前記自他システムで互いに同期して動作し当該プロセッサ部内の主記憶内容をチェックしている状態を示すオンライン同期前ステートと、
前記プロセッサ部が前記自他システムで互いに同期して動作している状態を示すオンライン同期ステートと、
前記オンライン同期ステートのときに前記プロセッサ部内のバス上の動作が前記自他システムで互いに不一致となったときの一時的な状態を示すオンライン非同期ステートとを有し、
前記オフライン系ステートは、
前記電源投入時に前記プロセッサ部が前記自他システムで互いに非同期で動作している状態を示し前記オンライン分離ステートと対を成すオフライン分離ステートと、
前記プロセッサ部が前記自他システムで互いに非同期で動作している状態を示し前記オンライン準備ステートと対を成すオフラインステートと、
前記自他システム間で前記プロセッサ部の主記憶複写を実行し当該プロセッサ部が前記自他システムで互いに非同期で動作している状態を示すオフライン複写ステートと、
前記プロセッサ部内のバス上の動作が前記自他システムで互いに不一致となったときに前記システムから切り離された状態を示すオフライン前ステートとを有することを特徴とする請求項１４記載のフォールトトレラントシステムの動作方法。
【請求項１６】
互いに同一のプロセッサ部及び入出力部を有する複数のシステムを備えたフォールトトレラントシステムの動作プログラムであって、
前記複数のシステムによるフォールトトレラント用のエラー処理、同期化処理、及び再同期化処理を行うための複数のシステム動作をこれに対応する複数のステートとして所定のイベント信号に関連付けて管理するステップと、
前記イベント信号に応じて、前記複数のシステム毎に前記複数のステートを遷移させながら前記複数のシステム動作を選択して前記プロセッサ部に実行させるステップとをコンピュータに実行させることを特徴とするフォールトトレラントシステムの動作プログラム。
【請求項１７】
前記複数のシステム動作は、
自システム内の前記プロセッサ部及び前記入出力部間のアクセス制御と、
自他システム間における前記プロセッサ部及び前記入出力部間のアクセス制御と、
前記自他システム間における前記プロセッサ部から前記入出力部へのアクセス比較と、
前記自他システム間における前記プロセッサ部内のバス上のアクセス比較と、
前記自他システム間における前記プロセッサ部の主記憶複写とを有することを特徴とする請求項１６記載のフォールトトレラントシステムの動作プログラム。
【請求項１８】
前記主記憶複写は、部分複写を含むことを特徴とする請求項１７記載のフォールトトレラントシステムの動作プログラム。
【請求項１９】
前記複数のステートは、
前記複数のシステムのうちサービスを提供するシステムに組み込まれている状態を示すオンライン系ステートと、
前記サービスを提供するシステムから切り離されている状態を示すオフライン系ステートと、
エラー検出により前記サービスを提供するシステムから切り離されている状態を示すフォールト系ステートとを有することを特徴とする請求項１６から１８のいずれか１項に記載のフォールトトレラントシステムの動作プログラム。
【請求項２０】
前記オンライン系ステートは、
電源投入時に前記プロセッサ部が自他システムで互いに非同期で動作している状態を示すオンライン分離ステートと、
前記プロセッサ部が前記自他システムで互いに非同期で動作している状態を示すオンライン準備ステートと、
前記プロセッサ部が前記自他システムで互いに同期して動作し当該プロセッサ部内の主記憶内容をチェックしている状態を示すオンライン同期前ステートと、
前記プロセッサ部が前記自他システムで互いに同期して動作している状態を示すオンライン同期ステートと、
前記オンライン同期ステートのときに前記プロセッサ部内のバス上の動作が前記自他システムで互いに不一致となったときの一時的な状態を示すオンライン非同期ステートとを有し、
前記オフライン系ステートは、
前記電源投入時に前記プロセッサ部が前記自他システムで互いに非同期で動作している状態を示し前記オンライン分離ステートと対を成すオフライン分離ステートと、
前記プロセッサ部が前記自他システムで互いに非同期で動作している状態を示し前記オンライン準備ステートと対を成すオフラインステートと、
前記自他システム間で前記プロセッサ部の主記憶複写を実行し当該プロセッサ部が前記自他システムで互いに非同期で動作している状態を示すオフライン複写ステートと、
前記プロセッサ部内のバス上の動作が前記自他システムで互いに不一致となったときに前記システムから切り離された状態を示すオフライン前ステートとを有することを特徴とする請求項１９記載のフォールトトレラントシステムの動作プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フォールトトレラントシステム、これで用いる制御装置、動作方法、及び動作プログラムに係り、とくにコンピュータシステムにおけるフォールトトレラント実現のためのシステム動作を規定するステートの管理及びそのステートを用いた制御に関する。
【背景技術】
【０００２】
従来、コンピュータシステムにおいて、そのコンピュータハードウェアを構成するＣＰＵ（Central Processing Unit）、メモリ、ＰＣＩ（Peripheral Component Interconnect）、ディスク、電源等、全てのコンポーネントを多重化（例えば、二重化又は三重化）して、いずれかのコンポーネントに障害が発生してもコンピュータシステムを停止することなく連続稼動が可能なフォールトトレラントコンピュータシステム（以下、「フォールトトレラントシステム」と呼ぶ）が知られている。
【０００３】
フォールトトレラントシステムでは、多重化された複数のＣＰＵ（プロセッサ）が常に同期を取りながら同じタイミングで同一動作を実行する（このことを「ロックステップ同期」と言う）。このようにロックステップ同期で同一動作を実行している複数のＣＰＵでは、あるＣＰＵに障害が発生した場合でも、残りのＣＰＵが正常稼動を続ける。このため、フォールトトレラントシステムは、ＣＰＵにより実行されるオペレーティングシステム（ＯＳ）やアプリケーションソフトウェア等のソフトウェア動作には影響を与えず、稼動し続けることができる。
【０００４】
このようなフォールトトレラントシステムの先行技術として、特許文献１にはロックステップ同期での命令実行のための装置及び方法が、また特許文献２には、フォールトトレラントサーバにおける大規模記録デバイスへのアクセス装置及び方法が、特許文献３には、ロックステップ同期により動作するプロセッサを含む複数の処理セット間のメモリ部分複写による高速再同期化技術がそれぞれ開示されている。
【特許文献１】米国特許出願公開第２００２／０１５２４１８号明細書
【特許文献２】米国特許出願公開第２００２／０１５２４１９号明細書
【特許文献３】米国特許第５９５３７４２号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、前述した先行技術のフォールトトレラントシステムでは、フォールトトレラント機能を実現するためのエラー処理、二重化（同期化）処理、再同期化処理を、ＣＰＵの動作状態（ＣＰＵバスの動作一致又は不一致）やアクセス許可状態（ＩＯアクセスの一致又は不一致）等のシステム状態に応じて適切に実行することが困難であった。
【０００６】
本発明は、このような従来の事情を考慮してなされたもので、フォールトトレラント機能を実現するためのエラー処理、同期化処理、再同期化処理をシステム状態に応じて適切に実行することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、本発明に係るフォールトトレラントシステムは、互いに同一のコンピュータハードウェアで構成された複数のシステムを備えたものであって、前記複数のシステムは、自他システム間においてロックステップ同期の状態で動作可能なプロセッサ部と、前記プロセッサ部に接続される入出力部と、前記プロセッサ部及び前記入出力部間に接続される制御部と、前記制御部を介して前記自他システム間を互いに接続する信号伝送路とを有し、前記制御部は、前記複数のシステムによるフォールトトレラント用のエラー処理、同期化処理、及び再同期化処理を行うための複数のシステム動作をこれに対応する複数のステートとして所定のイベント信号に関連付けて管理するステート管理手段と、前記イベント信号に応じて、前記複数のシステム毎に前記複数のステートを遷移させながら前記複数のシステム動作を選択して前記プロセッサ部に実行させる制御手段とを備えことを特徴とする。
【０００８】
本発明において、前記複数のシステム動作は、自システム内の前記プロセッサ部及び前記入出力部間のアクセス制御と、自他システム間における前記プロセッサ部及び前記入出力部間のアクセス制御と、前記自他システム間における前記プロセッサ部から前記入出力部へのアクセス比較と、前記自他システム間における前記プロセッサ部内のバス上のアクセス比較と、前記自他システム間における前記プロセッサ部の主記憶複写とを有してもよい、好適には、前記主記憶複写は、部分複写を含む。
【０００９】
本発明において、前記複数のステートは、前記複数のシステムのうちサービスを提供するシステムに組み込まれている状態を示すオンライン系ステートと、前記サービスを提供するシステムから切り離されている状態を示すオフライン系ステートと、エラー検出により前記サービスを提供するシステムから切り離されている状態を示すフォールト系ステートとを有してもよい。
【００１０】
好適には、前記オンライン系ステートは、電源投入時に前記プロセッサ部が自他システムで互いに非同期で動作している状態を示すオンライン分離ステートと、前記プロセッサ部が前記自他システムで互いに非同期で動作している状態を示すオンライン準備ステートと、前記プロセッサ部が前記自他システムで互いに同期して動作し当該プロセッサ部内の主記憶内容をチェックしている状態を示すオンライン同期前ステートと、前記プロセッサ部が前記自他システムで互いに同期して動作している状態を示すオンライン同期ステートと、前記オンライン同期ステートのときに前記プロセッサ部内のバス上の動作が前記自他システムで互いに不一致となったときの一時的な状態を示すオンライン非同期ステートとを有し、前記オフライン系ステートは、前記電源投入時に前記プロセッサ部が前記自他システムで互いに非同期で動作している状態を示し前記オンライン分離ステートと対を成すオフライン分離ステートと、前記プロセッサ部が前記自他システムで互いに非同期で動作している状態を示し前記オンライン準備ステートと対を成すオフラインステートと、前記自他システム間で前記プロセッサ部の主記憶複写を実行し当該プロセッサ部が前記自他システムで互いに非同期で動作している状態を示すオフライン複写ステートと、前記プロセッサ部内のバス上の動作が前記自他システムで互いに不一致となったときに前記システムから切り離された状態を示すオフライン前ステートとを有してもよい。
【００１１】
本発明に係るフォールトトレラントシステムで用いる制御装置は、互いに同一のプロセッサ部及び入出力部を有する複数のシステムを備えたフォールトトレラントシステムで用いる制御装置であって、前記複数のシステムによるフォールトトレラント用のエラー処理、同期化処理、及び再同期化処理を行うための複数のシステム動作をこれに対応する複数のステートとして所定のイベント信号に関連付けて管理するステート管理手段と、前記イベント信号に応じて、前記複数のシステム毎に前記複数のステートを遷移させながら前記複数のシステム動作を選択して前記プロセッサ部に実行させる制御手段とを備えことを特徴とする。
【００１２】
本発明に係るフォールトトレラントシステムの動作方法は、互いに同一のプロセッサ部及び入出力部を有する複数のシステムを備えたフォールトトレラントコントローラの動作方法であって、前記複数のシステムによるフォールトトレラント用のエラー処理、同期化処理、及び再同期化処理を行うための複数のシステム動作をこれに対応する複数のステートとして所定のイベント信号に関連付けて管理するステップと、前記イベント信号に応じて、前記複数のシステム毎に前記複数のステートを遷移させながら前記複数のシステム動作を選択して前記プロセッサ部に実行させるステップとを備えたことを特徴とする。
【００１３】
本発明に係るフォールトトレラントシステムの動作プログラムは、互いに同一のプロセッサ部及び入出力部を有する複数のシステムを備えたフォールトトレラントシステムの動作プログラムであって、前記複数のシステムによるフォールトトレラント用のエラー処理、同期化処理、及び再同期化処理を行うための複数のシステム動作をこれに対応する複数のステートとして所定のイベント信号に関連付けて管理するステップと、前記イベント信号に応じて、前記複数のシステム毎に前記複数のステートを遷移させながら前記複数のシステム動作を選択して前記プロセッサ部に実行させるステップとをコンピュータに実行させることを特徴とする。
【発明の効果】
【００１４】
本発明によれば、フォールトトレラント機能を実現するためのエラー処理、同期化処理、再同期化処理をシステム状態に応じて適切に実行することができる。
【発明を実施するための最良の形態】
【００１５】
次に、本発明に係るフォールトトレラントシステム、これで用いる制御装置、動作方法、及び動作プログラムを実施するための最良の形態について図面を参照して詳細に説明する。
【００１６】
図１は、本実施例によるフォールトトレラントシステムの基本構成を示す。
【００１７】
図１に示すフォールトトレラントシステム（「フォールトトレラントコンピュータ」、「フォールトトレラントサーバ」等とも言う）は、互いに同一のコンピュータハードウェアから構成されている複数のシステムから成る多重化コンピュータシステムとして二重化コンピュータシステムを適用したもので、２つのシステム１００、１００、即ち「＃０システム」及び「＃１システム」を備えている。図１の例では、互いに独立した＃０システムと＃１システムが単一のフォールトトレラントシステムを構成している。以下の説明では、必要に応じて、２つのシステム１００、１００の一方（例えば、＃０システム）を「自システム（自系）」としたときに、その他方を「他システム（他系）」（例えば、＃１システム）として区別して使用する。
【００１８】
各システム１００、１００は、図示のように、プロセッサ部を成すＣＰＵサブシステム１１０と、入出力部を成すＩＯ（Input Output：入出力）サブシステム１２０と、ＣＰＵサブシステム１１０及びＩＯサブシステム１２０に接続され、本発明のステート管理手段及び制御手段の主要部を成す制御部（制御装置）としてのＦＴ（フォールトトレラント）コントローラ１３０と、自他システム間のＣＰＵサブシステム１１０及びＩＯサブシステム１２０を相互に接続する信号伝送路としてのクロスリンク１４０、１４０とを備えている。本実施例では、ＦＴコントローラ１３０は、ＣＰＵサブシステム１１０及びＩＯサブシステム１２０内の各種コントローラ（後述のメモリコントローラ１１３、ＩＯコントローラ１２１、ＤＭＡ／共有リソースコントローラ１２２）と共にフォールトトレラントシステム内のボードコントローラ（制御装置）１０１として搭載されている。
【００１９】
自システム内のＣＰＵサブシステム１１０とＩＯサブシステム１２０とは、ＦＴコントローラ１３０を介して互いにアクセス可能となっている。また、自システムのＣＰＵサブシステム１１０と他システムのＩＯサブシステム１２０とは、自システムのＦＴコントローラ１１０、クロスリンク１４０、及び他システムのＦＴコントローラ１１０を介して互いにアクセス可能となっている。
【００２０】
ＣＰＵサブシステム１１０は、ＣＰＵ１１１と、このＣＰＵ１１１の主記憶を成すメモリ１１２と、ＣＰＵ１１１及びメモリ１１２間にＣＰＵバスを介して接続されるメモリコントローラ１１３を有する。自他システムのＣＰＵサブシステム１１０、１１０間は、各々のメモリコントローラ１１３、１１３を介して接続されている。
【００２１】
自他システムのＣＰＵサブシステム１１０、１１０は、互いにロックステップ同期で同じ動作タイミングで同一動作を行い、ハードウェアの故障検出によりサービス中のＣＰＵサブシステム１１０が切り離されると、同一動作中のＣＰＵサブシステム１１０がそのままサービスを継続するようになっている。
【００２２】
ＩＯサブシステム１２０は、ＣＰＵサブシステム１１０のＣＰＵ１１１で実行されるソフトウェアによるミラーリングの処理によって両システム１００、１００間で冗長性を持つよう構成されている。図１の例では、ＣＰＵ１１１とＩＯデバイス１２６とを接続するための複数（図中の例では２つ）のＩＯコントローラ１２１、１２１と、自他システム間でＣＰＵサブシステム１１０、１１０の二重化のため、両メモリ１１２、１１２の主記憶領域の内容を複写するためのＤＭＡ（Direct Memory Access）コントローラ及び両システム１００、１００間での情報共有を行うための共有メモリやシステム間通信機能を持つ共有リソースコントローラを含むＤＭＡ／共有リソースコントローラ１２２とを有する。
【００２３】
２つのＩＯコントローラ１２１、１２１の一方には、ＩＯブリッジ１２３を介して図示しないハードディスクドライブ（ＨＤＤ）等のＩＯデバイス１２６が、またその他方には、レガシーＩＯブリッジ１２４を介してＲＯＭ１２５がそれぞれ接続されている。各ＩＯコントローラ１２１、１２１は、自システムのＣＰＵサブシステム１１０と、他システムのＣＰＵサブシステム１１０からそれぞれアクセス可能となっている。ＩＯブリッジ１２３は、例えばＰＣＩ（Peripheral Component Interconnect）バス、ＵＳＢ（Universal Serial Bus）、ＩＥＥＥ（Institute of Electrical and Electronic Engineers）１３９４等のインターフェースブリッジが、またレガシーＩＯブリッジ１２４は、例えばＰＳ（Personal System）／２ポートやＲＳ−２３２Ｃ（Recommended Standard 232 version C）ポート等のインターフェースブリッジが例示できる。
【００２４】
ＦＴコントローラ１３０は、フォールトトレラント機能、即ち１）自システム内及び自他システム間におけるＣＰＵサブシステム１１０とＩＯサブシステム１２０の接続及びその切り離し、２）エラー検出、３）自他システム間におけるＣＰＵサブシステム１１０、１１０の二重化を実現するための諸機能を有する。以下、図２〜図６を参照して、ＦＴコントローラ１３０の諸機能を説明する。
【００２５】
ＦＴコントローラ１３０は、自システム内及び自他システム間におけるＣＰＵサブシステム１１０とＩＯサブシステムとの間のアクセスを許可又は制限することで、自他システム間のＣＰＵサブシステム１１０とＩＯサブシステム１２０の接続及びその切り離しを行う。図２は、自システム内におけるＣＰＵサブシステム１１０及びＩＯサブシステム１２０間のアクセス動作（ＣＰＵサブシステム１１０からＩＯサブシステム１２０へのアウトバウンド（outbound）アクセスと、ＩＯサブシステム１２０からＣＰＵサブシステム１１０へのインバウンド（inbound）アクセスとの両方を含む）による動作信号の流れ（図中の矢印Ａ１、Ａ１参照）の様子、図３は、クロスリンク１４０、１４０を経由した自システム内のＣＰＵサブシステム１１０と他システム内のＩＯサブシステム１２０との間のアクセス動作（アウトバウンドアクセス及びインバウンドアクセス）による動作信号の流れ（図中の矢印Ａ２、Ａ２参照）の様子をそれぞれ示す。
【００２６】
また、ＦＴコントローラ１３０は、フォールトトレラント機能実現のためのエラー検出機構として、図４に示すように、自システムのＣＰＵサブシステム１１０から自システムのＩＯサブシステム１２０へのアクセス動作による動作信号と、他システムのＣＰＵサブシステム１１０から自システムのＩＯサブシステム１２０へのアクセス動作による動作信号との比較機能（比較回路）を有している。
【００２７】
このＦＴコントローラ１３０内の比較回路は、機能上、自システム内のメモリコントローラ１１３に接続されるバッファ（ＢＵＦ）１３１と、他システム内のメモリコントローラ１１３にクロスリンク１４０経由で接続されるバッファ（ＢＵＦ）１３２と、両バッファ１３１、１３２の出力に接続される比較部１３２とを備えている。
【００２８】
この比較回路において、比較部１３２により自システムのＣＰＵサブシステム１１０からのアクセス動作による動作信号と、他システムのＣＰＵサブシステム１１０からのアクセス動作による動作信号とが互いに比較され、その結果、両アクセス動作による動作信号に不一致が発生している場合は、両ＣＰＵサブシステム１１０、１１０のいずれか一方を切り離し、その残りの動作を継続する。本実施例では、比較回路がバッファ１３１、１３２を用いて構成されているため、両信号の不一致が発生した後でも、バッファ１３１、１３２の容量の許す限りにおいて、ＣＰＵサブシステム１１０を切り離さずにある程度の期間に亘って、その動作継続が可能となっている。
【００２９】
図４は、＃０システム側のＦＴコントローラ１３０において、一方のバッファ１３１に入力される＃０システム内におけるＣＰＵサブシステム１１０からＩＯサブシステム１２０へのアクセス動作による動作信号（図中の矢印Ａ３参照）と、他方のバッファ１３２に入力される＃１システムのＣＰＵサブシステム１１０から＃０システムのＩＯサブシステム１２０へのアクセス動作による動作信号（図中の矢印Ａ４参照）とを比較部１３３にて比較し、その結果（両信号の一致又は不一致）を比較部１３３から出力している様子（図中の矢印Ａ５参照）を示す。
【００３０】
ＣＰＵサブシステム１１０は、ＤＭＡ／共有リソースコントローラ１２２のＤＭＡコントローラを用いて、サービスを提供している側のＣＰＵサブシステム１１０におけるメモリ１１２の主記憶領域の内容の全てあるいは一部を、待機している側のＣＰＵサブシステム１１０におけるメモリ１１２の主記憶領域に複写し、同時にＣＰＵリセットを行うことで自他システム間のＣＰＵサブシステム１１０、１１０の二重化を実現している。
【００３１】
ここで、メモリ１１２の主記憶領域の内容は、基本的に全ての領域に亘って複写されなければ、両ＣＰＵサブシステム１１０、１１０の二重化動作を保障できない。しかし、二重化を一旦行うと、両ＣＰＵサブシステム１１０、１１０内のＣＰＵバス上のアクセス動作による動作信号を比較し、その結果、両信号に不一致が発生した後のメモリ１１２の主記憶内容に対するアクセス動作をトレースすることで自他システムのメモリ１１２、１１２間の主記憶内容の差分情報を得ることができる。この差分情報を用いることで、複写すべきメモリ１１２の主記憶内容を削減し、複写時間を大幅に短縮し、両ＣＰＵサブシステム１１０、１１０の二重化後に両ＣＰＵバスの動作信号に不一致が生じた場合の再同期化をより高速に行える。
【００３２】
このような動作を行うため、ＣＰＵサブシステム１１０内のメモリコントローラ１１３は、図５に示すように、両システム１００、１００のＣＰＵサブシステム１１０、１１０間でのＣＰＵバスの動作信号の比較機能（ＣＰＵバス比較機能）を備えている。図５の例では、自システムのＣＰＵサブシステム１１０内のＣＰＵバスの動作信号（図中の矢印Ａ６参照）と、他システムのＣＰＵサブシステム１１０内のＣＰＵバスの動作信号（図中の矢印Ａ７参照）とを比較し、その結果（一致・不一致）をＦＴコントローラ１３０に出力する比較部１１４を備えている。
【００３３】
また、ＦＴコントローラ１３０は、前述のように両ＣＰＵサブシステム１１０、１１０内のＣＰＵバス上のアクセス動作による両動作信号に不一致が発生した後のメモリ１１２の主記憶アクセス動作をトレースし、自他システムのメモリ１１２、１１２間の主記憶内容の差分情報を得る機能（以下、「主記憶アクセストレース機能」と呼ぶ）を備える。
【００３４】
図６の例は、ＤＭＡ／共有リソースコントローラ１２２による＃０システムから＃１システムへの主記憶内容の全体又は一部を複写する場合を示す。
【００３５】
まず、自システム側において、ＤＭＡ／共有リソースコントローラ１２２からＦＴコントローラ１３０、メモリコントローラ１１２を介してメモリ１１２へＤＭＡ読み取り要求が出され（図中の矢印Ａ８、Ａ９参照）、メモリ１１２の主記憶内容の全部又は一部がメモリコントローラ１１２、ＦＴコントローラ１３０を介してＤＭＡ／共有リソースコントローラ１２２内の共有メモリへ送られる（図中の矢印Ａ１０、Ａ１１参照）。
【００３６】
同時に、自システム側のメモリコントローラ１１２からＦＴコントローラ１３０、クロスリンク１４０を介して、他システム側のＦＴコントローラ１３０、ＤＭＡ／共有リソースコントローラ１２２経由で他システム側のメモリコントローラ１１２にＤＭＡ書き込み要求が出され（図中の矢印Ａ１２、Ａ１３参照）、自システム側のＤＭＡ／共有リソースコントローラ１２２内の共有メモリに一時格納されたメモリ１１２の主記憶内容の全部又は一部がＦＴコントローラ１３０、クロスリンク１４０を介して、他システム側のＦＴコントローラ１３０、メモリコントローラ１１２経由で、メモリ１１２に複写される（図中の矢印Ａ１４、Ａ１５参照）。
【００３７】
以上のような諸機能を実現するために、本実施例のＦＴコントローラ１３０では、システム動作状態を示すステートを定義し、当該ステート状態からエラー処理、二重化処理、及び再同期処理を実行するソフトウェア動作を規定し、これによりフォールトトレラント実現のためのステート管理を行う。
【００３８】
基本的に、エラー検出によるサブシステム１１０、１２０の切り離し（ステート遷移）は、ハードウェアによって即時行うが、サブシステム１１０、１２０の組み込みはソフトウェアによって開始される。エラー検出の通知によってＣＰＵ１１１により呼び出されたソフトウェアは、検出されたエラーの内容とそのときのステートの情報に従って、システムの動作情報（ＣＰＵサブシステム１１０の同期・非同期の状態、アクセス可否等）を認識し、処理を選択するようになっている。
【００３９】
ここで、ＦＴコントローラ１３０で管理されるステートについて説明する。
【００４０】
ＦＴコントローラ１３０で管理されるステートは、ＣＰＵ１１１の状態、ＣＰＵサブシステム１１０とＩＯサブシステム１２０との間のアクセス許可状態、両システム１００、１００間のリンクの状態をまとめて示しており、ソフトウェア制御やハードウェアエラー検出イベントなどによって状態遷移が可能となっている。
【００４１】
また、ステートの予備情報として、システム毎に排他的な動作モードである「ＡＣＴ（active：アクティブ）」モードと「ＳＢＹ（stand-by：スタンバイ）」モードとが定義される。いくつかのエラー検出機構として、ＦＴコントローラ１３０では、自システムのＣＰＵサブシステム１１０から自システムへのＩＯサブシステム１２０へのアクセス比較や、ＣＰＵサブシステム１１０内のＣＰＵバスの動作比較を行う。これにより比較不一致のように具体的なエラー箇所が特定不可能な場合は、動作モードが「ＡＣＴ」モードのＣＰＵサブシステム１１０でサービスを継続し、動作モードが「ＳＴＢ」モードのＣＰＵサブシステム１１０を切り離す。
【００４２】
表１及び表２は、定義されるステート及び動作モードの内容を示す。
【００４３】
【表１】
2006178616.tif 000003
【００４４】
【表２】
2006178616.tif 000004
ここで、上記表を参照して、ステートの詳細について説明する。
【００４５】
本実施例で定義されるステートには、１）サービスを提供するシステムに組み込まれている状態（Online（オンライン）系）、２）システムから切り離されている状態（offline（オフライン）系）、及び３）システムから閉塞している状態（Fault（フォールト）系）の３つに大別される。以下、これについて順次説明する。
【００４６】
１）サービスを提供するシステムに組み込まれている状態（Online系）
このシステム動作状態を示すステートは、ステート名に「Online」が付く。このステートのＣＰＵサブシステム１１０（ＣＰＵ１１１）は、実際にサービスを提供しているものを示している。これに加え、同期状態やアクセスの制限によって、以下の１−１）〜１−５）の複数ステートＳＴ１〜ＳＴ５に派生している。
【００４７】
１−１）「Online divide（オンライン分離）」ステートＳＴ１
これは、最初に電源投入されたＣＰＵサブシステム１１０に設定されるステートである。このステートＳＴ１になるＣＰＵサブシステム１１０は、フォールトトレラントシステムでは１つだけであり、これと対になるＣＰＵサブシステム１１０は、後述の「Offline divide」ステートとなる。ＣＰＵサブシステム１１０は、「Online divide」ステートＳＴ１のときに、自システムのＩＯサブシステム１２０しかアクセスできないが、フルアクセスが可能で、このＣＰＵサブシステム１００上で動作するＢＩＯＳ（Basic Input Output System）は、ＯＳをブートする段階まで進む。
【００４８】
１−２）「Online ready（オンライン準備）」ステートＳＴ２
これは、「Online divide」ステートＳＴ１からクロスリンク１４０を接続状態としたときのステートである。また、後述の「Online async」ステートの対を成すＣＰＵサブシステム１１０、１１０において、前述のＩＯアクセス不一致やＣＰＵバス不一致時の主記憶アクセストレース機能で得られる情報を一時格納するバッファが所定しきい値を超えて「ほぼ満杯（Almost Full）」の状態となった時、ソフトウェア指示によって動作モードが「ＡＣＴ」モードのＣＰＵサブシステム１１０が「Online ready」ステートＳＴ２になる（このとき、動作モードが「ＳＢＹ」モードのＣＰＵサブシステム１１０は、後述の「Pre offline」ステートになる）。「Online divide」ステートＳＴ１から「Online ready」ステートＳＴ２に遷移するとき、これと対になっているＣＰＵサブシステム１１０は、後述の「Offline divide」ステートから「Offline」ステートに遷移する。このステートＳＴ２のＣＰＵサブシステム１１０は、他システム上のＩＯサブシステム１２０へのフルアクセスが可能で、これと逆に、そのＩＯサブシステム１２０から当該ＣＰＵサブシステム１１０へのフルアクセスも可能である。
【００４９】
１−３）「Pre online sync（オンライン同期前）」ステートＳＴ３
これは、同期化処理における同期リセット解除後の状態であり、実質的に両システム１００、１００が同期状態にある。この「Pre online sync」ステートＳＴ３と、後述の「Online sync」ステートのとき、ＣＰＵサブシステム１１０からＩＯサブシステム１２０へのＩＯアウトバウンドアクセス動作による動作信号の比較が有効になる。
【００５０】
同期化処理における両システム間の主記憶内容比較チェックが終了していない状態であり、両システム間の主記憶の内容の完全一致が保証されないことから完全な同期状態として扱わず、高速再同期化処理の対象外となる。故障の発生や不一致発生の場合には、動作モードが「ＳＢＹ」モードのＣＰＵサブシステム１１０はフォールトにされ、動作モードが「ＡＣＴ」モードのＣＰＵサブシステム１１０は、両システムのどちらで故障が発生してもフォールトにできない。このステートＳＴ３のとき、ＣＰＵサブシステム１１０の動作モード（「ＡＣＴ」モード／「ＳＢＹ」モード）の切り替えできない。
【００５１】
１−４）「Online sync（オンライン同期）」ステートＳＴ４
これは、完全な同期状態（二重化）を示すステートである。この場合、両システム１００、１００のステートは、いずれも「Online sync」ステートＳＴ４である。このステートＳＴ４は、同期状態であるため、故障が発生すれば、故障状態の切り離し機能が働き、ＦＳＢ（Front Sid Bus）比較を行っていれば高速再同期が可能となる。
【００５２】
１−５）「Online async（オンライン非同期）」ステートＳＴ５
これは、「Online sync」ステートＳＴ４の状態でＣＰＵバス不一致の検出が行われた場合に遷移する一時的なステートである。この時点では、まだ同期を維持しているように扱われるため、故障箇所が明示的な故障が発生すれば故障部分の切り離しの機構が働く。この場合、両システム１００、１００とも「Online sync」ステートＳＴ５となっている。
【００５３】
ＣＰＵバス不一致の結果、主記憶アクセストレース機能による動作が開始される。これにより、ＩＯアクセスバッファが「満杯（Full）」であったり、主記憶アクセストレースのサイズが限界に達したりすると、動作モードが「ＡＣＴ」モードのＣＰＵサブシステム１１０は後述の「Offline ready」となり、動作モードが「ＳＢＹ」モードのＣＰＵサブシステム１１０は「Pre offline」ステートとなる。また、動作モードが「ＳＢＹ」モードのＣＰＵサブシステム１１０側は、具体的に故障が特定されるエラー検出を行った場合は、後述の「Fault」ステートになる。
【００５４】
２）システムから切り離されている状態（offline系）
このシステム動作状態を示すステートは、ステート名に「offline」が付く。このステートのＣＰＵサブシステム１１０（ＣＰＵ１１１）は、実際のサービスから切り離されているものを示している。これに加え、アクセスの制限や同期化処理状態によって、以下の２−１）〜２−４）に示す複数ステートＳＴ６〜ＳＴ９に派生している。
【００５５】
２−１）「Offline divide（オフライン分離）」ステートＳＴ６
これは、電源が投入されてパワーオンリセット直後の状態を示すステートである。即ち、「Online divide」ステートＳＴ１にならなかったシステム１００側のＣＰＵサブシステム１１０のステートである。他システムのＩＯサブシステム１２０へのアクセスはできないが、自系システムのＩＯサブシステム１２０にフルアクセスが可能であり、ＩＯサブシステム１２０から当該ＣＰＵサブシステム１１０へのアクセスもフルアクセスが可能である。
【００５６】
２−２）「Offline（オフライン）」ステートＳＴ７
これは、「Offline divide」ステートＳＴ６からクロスリンク１４０を接続状態にしたステートである。また、後述の「Fault」ステートにあったＣＰＵサブシステム１１０にリセット実行後のステートである。「Offline state」ステートＳＴ６から遷移するとき、対になっている「Online divide」ステートＳＴ１のＣＰＵサブシステム１１０が「Online ready」ステートＳＴ２に遷移している。これは、「Offline divide」ステートＳＴ６とは異なり、自他システムを問わず、ＩＯサブシステム１２０へのアクセスが可能であるが、非同期アクセスとなっているため、他システムのＣＰＵ１１１とのアクセス競合は、ソフトウェアで管理されるようになっている。
【００５７】
２−３）「Recover offline（オフライン複写）」ステートＳＴ８
これは、「Offline」ステートＳＴ７からＤＭＡ／共有リソースコントローラ１２２のＤＭＡコントローラによってメモリ１１２の主記憶複写を行う二重化処理に入る時のリカバーモード設定時である。また、後述の「Pre offline」ステートＳＴ９のときに、システムマネージメント割り込み要求であるＳＭＩ（System Management Interrupt）進入信号によって全ＣＰＵ１１１からＳＭＭ（System Management Mode）に入り、これに応答して全ＣＰＵ１１１からＳＭＩ  ＡＣＫ（ACKnowledgement）が返り、再同期化処理の準備が完了することで、このステートＳＴ８に遷移する。このステートＳＴ８において、ＣＰＵサブシステム１１０からＩＯサブシステム１２０へのアクセスは、非同期リクエストのみが可能である。このステートＳＴ８では、ＩＯサブシステム１２０からＣＰＵサブシステム１１０への非同期リクエストに対するコンプリーションと、ＩＯサブシステム１２０からのリクエストとが通過する。
【００５８】
２−４）「Pre offline（オフライン前）」ステートＳＴ９
これは、「Online async」ステートＳＴ５のＣＰＵサブシステム１１０で明示的なエラーが検出されることはなく、ＩＯアクセス不一致やＣＰＵバス不一致時の主記憶アクセストレースバッファが「ほぼ満杯（Almost Full）」の発生時、ソフトウェア指示によって動作モードが「ＳＢＹ」モードのＣＰＵサブシステム１１０が遷移する（動作モードが「ＳＢＹ」モードのＣＰＵサブシステム１１０は「Online ready」ステートＳＴ２に遷移する）。この時点で、システムの二重化が解除される。このステートＳＴ９に遷移するとき、動作モードが「ＳＢＹ」モードのＣＰＵサブシステム１１０の全てのＣＰＵ１１１にＳＭＩが出され、全てのＣＰＵ１１１からＳＭＩ  ＡＣＫが返されて再同期化処理準備が整うまで、このステートＳＴ９が継続される。このステートＳＴ９にあるとき、当該ＣＰＵサブシステム１１０は、システムから切り離されており、ＩＯサブシステム１２０へのアクセスは破棄され、ＣＰＵサブシステム１１０にはマスタ・アボートで応答する。
３）システムから閉塞している状態（Fault系）
３−１）「Fault（フォールト）」ステートＳＴ１０
これは、ＣＰＵサブシステム１１０の故障と判断され、システムから切り離されている状態、あるいはＣＰＵサブシステム１１０の切り離しのためにソフトウェアから強制的に落とされるステートである。このステートＳＴ９にあるとき、外部からも内部からもアクセスは不可能であり、ＣＰＵサブシステム１１０からＩＯサブシステム１２０へのアクセスはマスタ・アボートとして処理される。
【００５９】
表３及び表４は、ＣＰＵサブシステム１１０とＩＯサブシステム１２０との間でやり取りされるリクエストを透過するか抑止するかの状態を表す。ここで、リクエストに対するコンプリーションは、全て透過する。表中、○はアクセス可能であり、△はアクセス制限があり、×はマスタ・アボートとして返されることをそれぞれ示す。
【００６０】
【表３】
2006178616.tif 000005
【００６１】
【表４】
2006178616.tif 000006
ＣＰＵサブシステム１１０からＩＯサブシステム１２０へのアウトバウンド（outbound）アクセスは、通常は、サービスを行っているＣＰＵサブシステム１１０からのアクセスのみが有効となる。そのため、対応するコンプリーションもサービス中のＣＰＵサブシステム１１０のみ返されるため、サービス外のＣＰＵサブシステム１１０からＩＯシステム１２０へのアクセスができない。
【００６２】
そこで、本実施例では、サービス外のＣＰＵサブシステム１１０であっても、非同期リクエストによってＩＯサブシステム１２０へアクセスする方法が用意されている。非同期リクエストは、ＣＰＵ１１１が「Offline」ステートＳＴ７、「Offline divide」ステートＳＴ６、「Recover offline」ステートＳＴ８のときに、システム１００内の図示しないルータで設定可能となっている。非同期リクエストは、各システム１００で異なるリクエストとして処理し、これに対するコンプリーションは、非同期リクエストを出したシステム１００に返される。これは、同一リソースにもアクセスできしまうため、ソフトウェアによって排他制御などの方法で競合を回避する必要がある。
【００６３】
図７は、ＦＴコントローラ１３０による上記ステートＳＴ１〜ＳＴ１０を用いた処理を示すフローチャートである。
【００６４】
ＦＴコントローラ１３０は、上記ステートＳＴ１〜ＳＴ１０に関連付けられたステート遷移イベント、エラー検出イベント、又はソフトウェア指示（予め設定されたイベント信号）を受けると（ステップＳ１）、これに応じてＣＰＵサブシステム１１０のステートＳＴ１〜ＳＴ１０を遷移させ（ステップＳ２：後述の図８〜図１１参照）、遷移させたステートＳＴ１〜ＳＴ１０に応じてフォールトトレラント用のエラー処理、二重化処理（同期化処理）、及び再同期化処理（ソフトウェア動作）を選択し（ステップＳ３）、選択された処理をＣＰＵサブシステム１１０（ＣＰＵ１１１）に実行させる（ステップＳ４）。
【００６５】
図８は、上記ステートＳＴ１〜ＳＴ１０の遷移状態図を示す。図８に示すように、ＦＴコントローラ１３０で管理されるステートＳＴ１〜ＳＴ１０は、ステート遷移イベント、エラー検出イベント、ソフトウェア指示（予め設定されたイベント信号）によって遷移が行われる。
【００６６】
図９〜図１１は、ＣＰＵ１１１のステート遷移イベントによるステート遷移を説明するタイミングチャートを示す。
【００６７】
図９は、システムの電源ＯＮ時の処理シーケンスを示す。
【００６８】
まず、＃０システム側にて、＃０システムのパワーオンリセットを行う（Ｔ１００）。このときのステートは、「Offline divide」ステートＳＴ６である。次いで、ボードコントローラ１０１により＃０システムを「ＡＣＴ」モードにセットする（Ｔ１０１）。これにより、＃０システムは、「Online divide」ステートＳＴ１に遷移する。そして、リセットを解除して、ＢＩＯＳを実行し、ＯＳをブートする（Ｔ１０２〜Ｔ１０４）。
【００６９】
次いで、＃１システム側にて、＃１システムのパワーオンリセットを行う（Ｔ２００）。このときのステートは、「Offline divide」ステートＳＴ６である。次いで、ボードコントローラ１０１により＃１システムを「ＳＢＹ」モードにセットする（Ｔ２０１）。このとき、＃０システムは、「Offline divide」ステートＳＴ６のままである。そして、リセットを解除して、ＢＩＯＳを実行する（Ｔ２０２、Ｔ２０３）。
【００７０】
次いで、両システムをクロスリンク１４０、１４０を介して接続すると（ＳＴ２０４）、＃０システムは、「Online ready」ステートＳＴ２に遷移し、＃１システムは、「Offline」ＳＴＳＴ７に遷移する。
【００７１】
次いで、＃１システム側では、ＢＩＯＳ処理をループさせながらＣＰＵサブシステム１１０のシステム同期プロセスを待機する（ＳＴ２０５）。
【００７２】
図１０は、ＣＰＵサブシステム１１０のシステム同期化処理を行う場合の処理シーケンスを示す。
【００７３】
次いで、＃０システム側にて、システム同期化処理を開始すると（ＳＴ１０５）、＃１システム側では、ＢＩＯＳループ（ＳＴ２０５）後、「Offline」ステートＳＴ７から「Recover offline」ステートＳＴ８にセットされる。このとき、＃０システム側では、「Online ready」ステートＳＴ２のままである。
【００７４】
次いで、＃０システム側にて、ＤＭＡコントローラによりメモリの複写を開始し（Ｔ１０６）、このＤＭＡメモリ複写が完了すると（Ｔ１０７）、ＳＭＩ  ＢＩＯＳによってＣＰＵ１１１の割り込み処理を行い（Ｔ１０８）、ＣＰＵ１１１のキャッシュ／コンテキストを＃１システムへ複写する（Ｔ１０９）。
【００７５】
次いで、両システムにて同期リセットを行う（Ｔ１１０）。これにより、＃０システム側は「Online ready」ステートＳＴ２から「Pre online sync」ステートＳＴ３に、＃１システム側は「Recover offline」ステートＳＴ８から「Pre online sync」ステートＳＴ３にそれぞれ遷移する。このとき、＃０システム側の動作モードは、「ＡＣＴ」モードに、＃１システム側の動作モードは、「ＳＢＹ」モードとなっている。
【００７６】
次いで、＃０システム側では、ＢＩＯＳを起動し（Ｔ１１１）、ＣＰＵ１１１のコンテキストを復元し（Ｔ１１２）、ＯＳに戻り（Ｔ１１３）、ＤＭＡコントローラによりメモリのチェックを開始する（Ｔ１１４）。このメモリのチェックが完了すると（Ｔ１１５）、＃０システムは、「Pre online sync」ステートＳＴ３から「online sync」ステートＳＴ４に遷移する。
【００７７】
同様に、＃１システム側でも、ＢＩＯＳを起動し（Ｔ２０７）、ＣＰＵ１１１のコンテキストを復元し（Ｔ２０８）、ＯＳに戻り（Ｔ２０９）、ＤＭＡコントローラによりメモリのチェックを開始する（Ｔ２１０）。このメモリのチェックを完了すると（Ｔ２１１）、＃１システムは、「Pre online sync」ステートＳＴ３から「online sync」ステートＳＴ４に遷移する。
【００７８】
このとき、＃０システム側の動作モードは、「ＡＣＴ」モードに、＃１システム側の動作モードは、「ＳＢＹ」モードとなっている。
【００７９】
図１１は、両システムのＣＰＵバス動作の不一致の発生から再同期処理が行われる場合の処理シーケンスを示す。
【００８０】
まず、両システムのＣＰＵバス動作の不一致による同期外れが発生すると（Ｔ１１６、Ｔ２１２）、いずれも「online sync」ステートＳＴ４から「online async」ステートＳＴ５に遷移する。そして、エラーチェックのため、メモリアクセストレースが行われ、アクセストレースが「ほぼ満杯（Almost full）」になると（Ｔ１１７、Ｔ２１３）、＃０システム側では、「online async」ステートＳＴ４から「Online ready」ステートＳＴ２に、＃１システム側では、「online async」ステートＳＴ４から「Pre offline」ステートＳＴ９にそれぞれ遷移する。
【００８１】
次いで、両システムにて、ＳＭＩ  ＢＩＯＳによってＣＰＵ１１１の割り込み処理を行い（Ｔ１１８、Ｔ２１４）、＃１システム側では、「Pre offline」ステートＳＴ９から「Recover offline」ステートＳＴ８に遷移する。このとき、＃０システム側では、「Online ready」ステートＳＴ２のままである。
【００８２】
次いで、両システムにて、ＤＭＡコントローラによりメモリ１１２の部分複写が開始され（Ｔ１１９、Ｔ２１５）、これが完了すると（Ｔ１２０、Ｔ２１６）、ＣＰＵ１１１のキャッシュ／コンテキストが＃１システムに複写される（Ｔ１２１、Ｔ２１７）。
【００８３】
次いで、両システムにて同期リセットを行う（Ｔ１２２）。これにより、＃０システム側は「Online ready」ステートＳＴ２から「Pre online sync」ステートＳＴ３に、＃１システム側は「Recover offline」ステートＳＴ８から「Pre online sync」ステートＳＴ３にそれぞれ遷移する。このとき、＃０システム側の動作モードは、「ＡＣＴ」モードに、＃１システム側の動作モードは、「ＳＢＹ」モードとなっている。
【００８４】
次いで、＃０システム側では、ＢＩＯＳを起動し（Ｔ１２３）、ＣＰＵ１１１のコンテキストを復元し（Ｔ１２４）、ＯＳに戻り（Ｔ１２５）、ＤＭＡコントローラによりメモリのチェックを開始する（Ｔ１２６）。このメモリのチェックが完了すると（Ｔ１２７）、＃０システムは、「Pre online sync」ステートＳＴ３から「online sync」ステートＳＴ４に遷移する。
【００８５】
同様に、＃１システム側でも、ＢＩＯＳを起動し（Ｔ２１８）、ＣＰＵ１１１のコンテキストを復元し（Ｔ２１９）、ＯＳに戻り（Ｔ２２０）、ＤＭＡコントローラによりメモリのチェックを開始する（Ｔ２２１）。このメモリのチェックを完了すると（Ｔ２２２）、＃１システムは、「Pre online sync」ステートＳＴ３から「online sync」ステートＳＴ４に遷移する。
【００８６】
従って、本実施例では、フォールトトレラント機能に必要とされるシステム動作を示す複数のステートを定義し、これらステートの状態からエラー処理、二重化処理（同期化処理）、及び再同期化処理を実行するためのソフトウェア動作を規定することにより、フォールトトレラント機能を実現している。即ち、本実施例によれば、ステート状態に従いＦＴコントローラのシステムの分離・接続とサブシステムの切り離し・接続を規定し、各システムのＣＰＵで実行されているソフトウェアは、エラー通知およびステート状態から、自身のＣＰＵの状態を確認し、エラー検出や再同期化処理の処理選択を行うことで、フォールトトレラント機能を実現することができる。
【００８７】
なお、上記実施例では、フォールトトレラントシステムとして二重化コンピュータシステムを例示しているが、本発明はこれに限らず、例えば三重化等、多重化した場合も適用可能である。
【図面の簡単な説明】
【００８８】
【図１】本発明の実施例に係るフォールトトレラントシステムの全体構成を示す概略ブロック図である。
【図２】フォールトトレラントコントローラによる自システム内のＣＰＵサブシステムとＩＯサブシステムとの間のアクセス制御を説明する図である。
【図３】フォールトトレラントコントローラによるクロスリンクを経由したシステム間のアクセス制御を説明する図である。
【図４】フォールトトレラントコントローラによるＣＰＵサブシステムからＩＯサブシステムへのアクセス比較を説明する図である。
【図５】メモリコントローラによるＣＰＵバスのアクセス比較を説明する図である。
【図６】ＤＭＡ／共有リソースコントローラによる主記憶複写を説明する図である。
【図７】フォールトトレラントシステムの処理を示す概略フォローチャートである。
【図８】フォールトトレラントシステムのステート遷移を説明する図である。
【図９】電源ＯＮ時の処理シーケンスを説明するタイミングチャートである。
【図１０】ＣＰＵサブシステムの同期化処理の処理シーケンスを説明するタイミングチャートである。
【図１１】ＣＰＵバスの動作不一致による同期外れ発生から再同期化処理までの処理シーケンスを説明するタイミングチャートである。
【符号の説明】
【００８９】
１１０  ＣＰＵサブシステム
１１１  ＣＰＵ
１１２  メモリ
１１３  メモリコントローラ
１２０  ＩＯサブシステム
１２１  ＩＯコントローラ
１２２  ＤＭＡ／共有リソースコントローラ
１２３  ＩＯブリッジ
１２４  レガシーＩＯブリッジ
１２５  ＲＯＭ
１２６  ＩＯデバイス
１３０  ＦＴ（フォールトトレラント）コントローラ
１４０  クロスリンク
【図１】
2006178616.tif 000007
【図２】
2006178616.tif 000008
【図３】
2006178616.tif 000009
【図４】
2006178616.tif 000010
【図５】
2006178616.tif 000011
【図６】
2006178616.tif 000012
【図７】
2006178616.tif 000013
【図８】
2006178616.tif 000014
【図９】
2006178616.tif 000015
【図１０】
2006178616.tif 000016
【図１１】
2006178616.tif 000017