(57)【特許請求の範囲】
【請求項１】
第１プロセッサと、
第２プロセッサと、
デバッガーと、
前記第１プロセッサ及び前記第２プロセッサのいずれか一方からの出力を前記デバッガーに入力するための第１切替スイッチと、
前記デバッガーからの出力を前記第１プロセッサ及び前記第２プロセッサの少なくとも一方に入力するための第２切替スイッチと
を具備し、
前記第１プロセッサ及び前記第２プロセッサは、同期して動作し、
前記デバッガーは、前記第１プロセッサと前記第２プロセッサとの同期状態を保ったままＪＴＡＧアクセスを行い、前記第１プロセッサと前記第２プロセッサとの同期ずれが発生した時に、ＪＴＡＧによるデバッグを行う
フォールトトレラント情報処理システム。
【請求項２】
請求項１に記載のフォールトトレラント情報処理システムであって、
前記第１切替スイッチは、前記第１プロセッサを前記デバッガーに接続し、
前記第２切替スイッチは、前記第１プロセッサ及び前記第２プロセッサの両方を前記デバッガーに接続し、
前記第１プロセッサ及び前記第２プロセッサの各々は、内部で動作するマイクロ命令を１ステップ毎に実行し、
前記デバッガーは、前記第１プロセッサの内部状態監視を行い、前記第１プロセッサの内部で動作するマイクロ命令が１ステップ完了した場合、前記第２切替スイッチを介して、前記第１プロセッサ及び前記第２プロセッサの両方に、動作停止を指示し、前記第１切替スイッチを介して前記第１プロセッサの状態を取得し、
前記第１プロセッサ及び前記第２プロセッサは、動作停止の指示に応じて、動作を停止し、
前記第１切替スイッチは、前記第２プロセッサを前記デバッガーに接続し、
前記デバッガーは、前記第１切替スイッチを介して前記第２プロセッサの状態を取得し、前記第２切替スイッチを介して、前記第１プロセッサ及び前記第２プロセッサの両方に、動作再開を指示し、
前記第１プロセッサ及び前記第２プロセッサは、動作再開の指示に応じて、動作を再開する
フォールトトレラント情報処理システム。
【請求項３】
請求項１又は２に記載のフォールトトレラント情報処理システムであって、
前記デバッガーは、同期ずれの要因となる条件をトリガー条件として設定し、
前記第２切替スイッチは、前記第１プロセッサを前記デバッガーに接続し、
前記第１切替スイッチは、前記第１プロセッサを前記デバッガーに接続し、
前記デバッガーは、前記第１切替スイッチを介して前記第１プロセッサの状態を取得し、
前記第１切替スイッチは、前記第２プロセッサを前記デバッガーに接続し、
前記デバッガーは、前記第１切替スイッチを介して前記第２プロセッサの状態を取得し、前記第１プロセッサの状態と前記第２プロセッサの状態とを参照し、同期ずれの要因となるトリガー条件を満たしたか確認し、同期ずれの要因となるトリガー条件を満たした場合、前記第２切替スイッチを介して、前記第１プロセッサに停止を指示し、
前記第１プロセッサは、動作停止の指示に応じて、動作を停止し、
前記第２プロセッサは、動作を継続し、
前記第１切替スイッチは、前記第１プロセッサを前記デバッガーに接続し、
前記デバッガーは、前記第１プロセッサと前記第２プロセッサとを同期させ、前記第２切替スイッチを介して、前記第１プロセッサに動作再開を指示する
フォールトトレラント情報処理システム。
【請求項４】
請求項１乃至３のいずれか一項に記載のフォールトトレラント情報処理システムにおけるデバッガーとして使用されるデバッグ機器。
【請求項５】
請求項１乃至３のいずれか一項に記載のフォールトトレラント情報処理システムにおける第１切替スイッチ及び第２切替スイッチを具備する切替器。
【請求項６】
フォールトトレラント情報処理システムにおけるデバッグ方法であって、
第１切替スイッチが、第１プロセッサ及び第２プロセッサのいずれか一方からの出力をデバッガーに入力することと、
第２切替スイッチが、前記デバッガーからの出力を前記第１プロセッサ及び前記第２プロセッサの少なくとも一方に入力することと、
前記第１プロセッサ及び前記第２プロセッサが、同期して動作することと、
前記デバッガーが、前記第１プロセッサと前記第２プロセッサとの同期状態を保ったままＪＴＡＧアクセスを行い、前記第１プロセッサと前記第２プロセッサとの同期ずれが発生した時に、ＪＴＡＧによるデバッグを行うことと
を含む
デバッグ方法。
【請求項７】
請求項６に記載のデバッグ方法であって、
前記第１切替スイッチが、前記第１プロセッサを前記デバッガーに接続することと、
前記第２切替スイッチが、前記第１プロセッサ及び前記第２プロセッサの両方を前記デバッガーに接続することと、
前記第１プロセッサ及び前記第２プロセッサの各々が、内部で動作するマイクロ命令を１ステップ毎に実行することと、
前記デバッガーが、前記第１プロセッサの内部状態監視を行い、前記第１プロセッサの内部で動作するマイクロ命令が１ステップ完了した場合、前記第２切替スイッチを介して、前記第１プロセッサ及び前記第２プロセッサの両方に、動作停止を指示し、前記第１切替スイッチを介して前記第１プロセッサの状態を取得することと、
前記第１プロセッサ及び前記第２プロセッサが、動作停止の指示に応じて、動作を停止することと、
前記第１切替スイッチが、前記第２プロセッサを前記デバッガーに接続することと、
前記デバッガーが、前記第１切替スイッチを介して前記第２プロセッサの状態を取得し、前記第２切替スイッチを介して、前記第１プロセッサ及び前記第２プロセッサの両方に、動作再開を指示することと、
前記第１プロセッサ及び前記第２プロセッサが、動作再開の指示に応じて、動作を再開することと
を更に含む
デバッグ方法。
【請求項８】
請求項６又は７に記載のデバッグ方法であって、
前記デバッガーが、同期ずれの要因となる条件をトリガー条件として設定することと、
前記第１切替スイッチが、前記第１プロセッサを前記デバッガーに接続することと、
前記第２切替スイッチが、前記第１プロセッサを前記デバッガーに接続することと、
前記デバッガーが、前記第１切替スイッチを介して前記第１プロセッサの状態を取得することと、
前記第１切替スイッチが、前記第２プロセッサを前記デバッガーに接続することと、
前記デバッガーが、前記第１切替スイッチを介して前記第２プロセッサの状態を取得し、前記第１プロセッサの状態と前記第２プロセッサの状態とを参照し、同期ずれの要因となるトリガー条件を満たしたか確認し、同期ずれの要因となるトリガー条件を満たした場合、前記第２切替スイッチを介して、前記第１プロセッサに停止を指示することと、
前記第１プロセッサが、動作停止の指示に応じて、動作を停止することと、
前記第２プロセッサが、動作を継続することと、
前記第１切替スイッチが、前記第１プロセッサを前記デバッガーに接続することと、
前記デバッガーが、前記第１プロセッサと前記第２プロセッサとを同期させ、前記第２切替スイッチを介して、前記第１プロセッサに動作再開を指示することと
を更に含む
デバッグ方法。
【請求項９】
請求項６乃至８のいずれか一項に記載のデバッグ方法におけるデバッガーとしての動作を、計算機に実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フォールトトレラント情報処理システムに関し、特にフォールトトレラント情報処理システムにおけるＪＴＡＧによるデバッグ方法に関する。
【背景技術】
【０００２】
システムを構成する装置を多重化（冗長化）し、これらの装置を運用系（Ａｃｔｉｖｅ）と待機系（Ｓｔａｎｄｂｙ）とに分け、運用系と待機系とを切り替えることで、システムに障害が発生した場合でも正常な動作を保ち続ける能力を持つ情報処理システムを、フォールトトレラント（Ｆａｕｌｔ−Ｔｏｒｅｒａｎｔ：ＦＴ）情報処理システムと呼ぶ。
【０００３】
一般的に、フォールトトレラント情報処理システムは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を備える情報処理装置を複数台使って構成され、ＣＰＵの冗長性を確保するため、複数の情報処理装置のＣＰＵをクロックレベルで同期して動作させている。もし何らかの理由により、ＣＰＵ間で同期が取れない状態（同期ずれ）となった場合、異常が発生したＣＰＵを同期動作から切り離すことにより、そのＣＰＵの属する情報処理装置をフォールトトレラント情報処理システムから切り離し、フォールトトレラント情報処理システム自体は正常に稼動させ続ける仕組みとなっている。
【０００４】
このようなフォールトトレラント情報処理システムの例として、ＦＴサーバシステムや、ＦＴコンピュータシステム等が存在する。
【０００５】
従来、ＣＰＵ間の同期ずれの原因を探る方法として、ＣＰＵから出力されるフロントサイドバス（Ｆｒｏｎｔ  Ｓｉｄｅ  Ｂｕｓ：ＦＳＢ）の信号のように、ＣＰＵのコアから論理的に近いＣＰＵからの外部信号を、運用系と待機系の両系で同時に観測し、その差分を見比べ、ＣＰＵ内部で発生している事象を推測するという方法をとっていた。
【０００６】
しかし、近年は、ＣＰＵと、メモリコントローラやＰＣＩブリッジとの統合が進み、ＣＰＵの外部で観測可能な信号はＰＣＩｅ（ＰＣＩ  Ｅｘｐｒｅｓｓ）等の信号のみとなっている。ＰＣＩｅ（ＰＣＩ  Ｅｘｐｒｅｓｓ）等の信号は、ＣＰＵのコアから論理的に階層を経ているため、これらの信号比較では同期ずれの原因を見つけることが困難になっている。
【０００７】
他にＣＰＵのコアの内部動作を直接参照できる方法として、一般的な情報処理システムでは、ＩＣＥ（Ｉｎ−Ｃｉｒｃｕｉｔ  Ｅｍｕｌａｔｏｒ）／ＩＴＰ（Ｉｃｅ−Ｔｅｔｈｅｒｅｄ  Ｐｒｏｆｉｌｅｒ）等のデバッガー（ｄｅｂｕｇｇｅｒ）をＣＰＵのＪＴＡＧ（Ｊｏｉｎｔ  Ｔｅｓｔ  Ａｃｔｉｏｎ  Ｇｒｏｕｐ）端子に接続し、ＣＰＵ内部で動作するマイクロ命令を１ステップ（ＳＴＥＰ）毎に実行しながら、或いは、ある条件が発生した時点でＣＰＵを止めて、ＣＰＵの内部状態を参照する方法がある。
【０００８】
しかし、フォールトトレラント情報システムで、このデバッガーを用いてＣＰＵ同期ずれの原因を探るには、デバッガーによる同期ずれ発生を防ぐため、各ＣＰＵにそれぞれデバッガーを接続して両方のＣＰＵを同時に操作する必要があり、実現が非常に困難となっている。
【０００９】
関連する技術として、特許文献１（特開２００７−１２２５４３号公報）に半導体集積回路装置が開示されている。この導体集積回路装置は、プロセッサを含むサブシステムを複数有する半導体集積回路装置であって、複数のサブシステムのいずれかのプロセッサによるプログラムの実行が所定のブレーク条件と一致したことを検出するブレーク検出部と、ブレーク検出部の検出に応じて、複数のサブシステムのうち選択されたサブシステムの動作を停止させる停止制御部とを有する。
【００１０】
また、特許文献２（特開２００８−０４６９４２号公報）にフォールトトレラントコンピュータが開示されている。このフォールトトレラントコンピュータは、冗長化される演算処理部と、冗長化される入出力部と、検出部とを具備する。演算処理部は、ロックステップ動作し、その同期外れを検出部が検出する。入出力部は、検出部が同期外れを検出した時、演算処理部から出力されるトランザクションのフローを制御するトランザクション比較制御部を備える。
【００１１】
また、特許文献３（特開２００９−１４０４２４号公報）にフォールトトレラントコンピュータシステムが開示されている。このフォールトトレラントコンピュータシステムは、ネットワークを介して相互に接続された複数のノードを備え、複数のノードの各ノードにおいて同じ処理を独立に並列実行させるフォールトトレラントコンピュータシステムである。各ノードは、システム内の稼働中のノード（以下「稼働中ノード」という。）は無停止かつ処理を継続させた状態で、停止状態から再起動したノード（以下「組込みノード」という。）を稼働中ノードとの間で処理タイミングを合わせてシステムへ再度組込む、という再同期稼働化処理を行う駆動管理部と、稼働中ノードと組込みノードとの間で、データ内容を含むノードの状態を一致させるデータ一致化処理を行うデータ同期処理部とを備える。駆動管理部は、ノードが稼働中ノードである場合には、ユーザプログラムの処理を実行開始する度に、組込みノードに対して処理開始の通知を行い、ノードが組込みノードである場合には、データ同期処理部によって稼働中ノードと当該組込みノードとの間でのデータ一致化処理が完了していた場合に、当該組込みノードが稼働中ノードから受信した処理開始通知を参照して、ユーザプログラムの処理を開始する。
【００１２】
更に、特許文献４（特開２０１０−１７６３９２号公報）に不良解析装置が開示されている。この不良解析装置では、ホストＰＣ（パソコン）上でデバッガーが動作し、デバッガーの操作に応じて２つのマイクロプロセッサＡ、ＢがデバッグＩ／Ｆ装置Ａ、Ｂを介して同一のデバッグ動作を並行して実行し、マイクロプロセッサＡ、Ｂから得られた内部情報はホストＰＣに転送され、ホストＰＣで比較し不良解析を行う。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開２００７−１２２５４３号公報
【特許文献２】特開２００８−０４６９４２号公報
【特許文献３】特開２００９−１４０４２４号公報
【特許文献４】特開２０１０−１７６３９２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１４】
フォールトトレラント情報処理システムにおいては、従来、ＣＰＵ間の同期ずれの原因を探る方法として、ＣＰＵから出力されるＦＳＢの信号や、ＰＣＩｅ（ＰＣＩ  Ｅｘｐｒｅｓｓ）等の信号を、運用系と待機系の両系で同時に観測し比較する方法を用いているが、ＦＳＢの信号及びＰＣＩｅ（ＰＣＩ  Ｅｘｐｒｅｓｓ）の信号のどちらの測定機器も非常に高価であり、セットアップ（ｓｅｔｕｐ：導入・設定作業）も複雑である。
【００１５】
ＢＩＯＳやファームウェアのデバッガーとして用いられるＩＣＥ／ＩＴＰを使用できれば、デバック用機器は現在あるものを流用できるので、開発費を抑え、操作も容易になる効果が期待できる。
【課題を解決するための手段】
【００１６】
本発明に係るフォールトトレラント情報処理システムは、第１プロセッサと、第２プロセッサと、デバッガーと、第１プロセッサ及び第２プロセッサのいずれか一方からの出力をデバッガーに入力するための第１切替スイッチと、デバッガーからの出力を第１プロセッサ及び第２プロセッサの少なくとも一方に入力するための第２切替スイッチとを具備する。第１プロセッサ及び第２プロセッサは、同期して動作する。デバッガーは、第１プロセッサと第２プロセッサとの同期状態を保ったままＪＴＡＧアクセスを行い、第１プロセッサと第２プロセッサとの同期ずれが発生した時に、ＪＴＡＧによるデバッグを行う。
【００１７】
本発明に係るデバッグ方法は、フォールトトレラント情報処理システムにおけるデバッグ方法であり、次のような動作を行う。第１切替スイッチは、第１プロセッサ及び第２プロセッサのいずれか一方からの出力をデバッガーに入力する。第２切替スイッチは、デバッガーからの出力を第１プロセッサ及び第２プロセッサの少なくとも一方に入力する。第１プロセッサ及び第２プロセッサは、同期して動作する。デバッガーは、第１プロセッサと第２プロセッサとの同期状態を保ったままＪＴＡＧアクセスを行い、第１プロセッサと第２プロセッサとの同期ずれが発生した時に、ＪＴＡＧによるデバッグを行う。
【００１８】
本発明に係るプログラムは、上記のデバッグ方法におけるデバッガーとしての動作を、デバッグ機器に実行させるためのプログラムである。なお、本発明に係るプログラムは、記憶装置や記憶媒体に格納することが可能である。
【発明の効果】
【００１９】
フォールトトレラントコンピュータにおけるデバッグが、デバック機器１台で容易に行えるようになる。
【図面の簡単な説明】
【００２０】
【図１】本発明に係るフォールトトレラント情報処理システムの構成例を示す図である。
【図２】デバッガーが１ステップ毎にＣＰＵ状態を監視する際の手順を示すフローチャートである。
【図３】ＣＰＵの同期ずれ発生時に状態を取得する際の手順を示すフローチャートである。
【発明を実施するための形態】
【００２１】
＜第１実施形態＞
以下に、本発明の第１実施形態について添付図面を参照して説明する。
【００２２】
［システム構成］
図１を参照して、本発明に係るフォールトトレラント情報処理システムの構成例について説明する。
【００２３】
本発明に係るフォールトトレラント情報処理システムは、ＦＴサーバシステム１と、デバッガー２を含む。
【００２４】
ＦＴサーバシステム１は、サーバシステム１０と、サーバシステム２０と、切替器３０を備える。
【００２５】
サーバシステム１０及びサーバシステム２０は、多重化（冗長化）されたサーバ装置である。従って、サーバシステム１０及びサーバシステム２０は、同様に構成されている。
【００２６】
サーバシステム１０は、ＣＰＵ１１（第１プロセッサ）を備える。サーバシステム２０は、ＣＰＵ２１（第２プロセッサ）を備える。
【００２７】
ＣＰＵ１１は、サーバシステム１０全体を制御する。ＣＰＵ２１は、サーバシステム２０全体を制御する。また、ＣＰＵ１１及びＣＰＵ２１の各々は、当該ＣＰＵのデバッグ用途に使用するＪＴＡＧポートを備える。
【００２８】
ＪＴＡＧポートは、ＪＴＡＧ信号を出力する。なお、ＣＰＵ１１のＪＴＡＧポートは、パス（経路）１０１、切替器３０、及びパス１００を介して、デバッガー２に接続される。また、ＣＰＵ２１のＪＴＡＧポートは、パス１０２、切替器３０、及びパス１００を介して、デバッガー２に接続される。すなわち、それぞれのＪＴＡＧポートは、デバッガー２にＪＴＡＧ信号を入力する。
【００２９】
デバッガー２は、ＣＰＵのデバッグ用のプログラムを実行するデバッグ機器である。デバッガー２は、ＣＰＵ１１及びＣＰＵ２１のデバッグ用途に使用するＪＴＡＧポートと、ＩＣＥ／ＩＴＰマネージメントコントローラを備える。デバッガー２は、ＪＴＡＧポート経由で、ＣＰＵ１１やＣＰＵ２１の内部状態の監視や、ＣＰＵ１１やＣＰＵ２１の動作停止等を行う。
【００３０】
切替器３０は、切替スイッチ３１（第１切替スイッチ）と、切替スイッチ３２（第２切替スイッチ）を備える。
【００３１】
切替スイッチ３１は、デバッガー２と固定的に接続し、ＣＰＵ１１又はＣＰＵ２１のいずれか一方と排他的に接続する。すなわち、切替スイッチ３１は、ＣＰＵ１１をデバッガー２に接続するか、ＣＰＵ２１をデバッガー２に接続するか、を選択できる。これにより、切替スイッチ３１は、ＣＰＵ１１又はＣＰＵ２１のいずれか一方から出力された信号をデバッガー２へ入力することができる。
【００３２】
切替スイッチ３２は、デバッガー２と固定的に接続し、ＣＰＵ１１及びＣＰＵ２１の各々と選択的に接続する。すなわち、切替スイッチ３１は、ＣＰＵ１１及びＣＰＵ２１の両方をデバッガー２に接続するか、ＣＰＵ１１又はＣＰＵ２１のいずれか一方をデバッガー２に接続するか、を選択できる。これにより、切替スイッチ３２は、デバッガー２から出力された信号をＣＰＵ１１及びＣＰＵ２１のうち少なくとも一方（いずれか一方、又は両方）へ入力することができる。
【００３３】
切替器３０は、切替スイッチ３１を切り替えて、ＣＰＵ１１又はＣＰＵ２１のいずれか一方から出力される入力データ信号（ＴＤＩ）をデバッガー２へ入力することができる。デバッガー２は、入力データ信号（ＴＤＩ）に基づいて、ＣＰＵ１１又はＣＰＵ１２の内部情報を監視することができる。
【００３４】
また、切替器３０は、切替スイッチ３２を切り替えて、デバッガー２から出力されるリセット信号（ＴＲＳＴ）、テストモードセレクト信号（ＴＭＳ）、クロック信号（ＴＣＫ）、或いは出力データ信号（ＴＤＯ）を、ＣＰＵ１１及びＣＰＵ２１の両方に同時に入力、もしくはＣＰＵ１１又はＣＰＵ２１のいずれか一方に入力することができる。
【００３５】
切替器３０は、切替スイッチ３２を切り替えて、デバッガー２から出力される信号を、ＣＰＵ１１及びＣＰＵ２１に同時に入力するよう切り替えた場合には、ＣＰＵ１１及びＣＰＵ１２を同時に制御できる。従って、例えば、ＣＰＵ内部で実行されるマイクロ命令を１ステップ（ＳＴＥＰ）毎に止める場合に、ＣＰＵ１１及びＣＰＵ２１でのマイクロ命令の実行を同時に止めることができる。
【００３６】
切替器３０は、切替スイッチ３２を切り替えて、デバッガー２から出力される信号を、ＣＰＵ１１又はＣＰＵ２１のいずれか一方に入力するよう切り替えた場合には、一方のＣＰＵを稼動させたまま、他方のＣＰＵを停止させることができる。従って、ＦＴサーバシステム１全体としては、停止することなく情報採取することができる。
【００３７】
なお、実際には、切替スイッチ３１や切替スイッチ３２の切替処理については、切替器３０がデバッガー２からの信号に応じて行うようにしても良い。すなわち、デバッガー２は、切替器３０を介して、切替スイッチ３１や切替スイッチ３２を切り替えることもできる。
【００３８】
［１ステップ毎のＣＰＵ状態の監視］
次に、図２のフローチャートを参照して、デバッガー２が、１ステップ毎にＣＰＵ状態を監視する際の手順について説明する。
【００３９】
ここでは、ＦＴサーバシステム１は、電源が投入された際に、サーバシステム１０及びサーバシステム２０を起動する。サーバシステム１０及びサーバシステム２０は、ＣＰＵ１１とＣＰＵ２１とが同期して動作しているものとする。
【００４０】
（１）ステップＳ１
ＦＴサーバシステム１の切替器３０は、切替スイッチ３２をＣＰＵ１１とＣＰＵ２１の両方に接続する。これにより、デバッガー２は、切替器３０の切替スイッチ３２を介して、ＣＰＵ１１とＣＰＵ２１の両方に物理的／電気的に接続する。
【００４１】
（２）ステップＳ２
切替器３０は、切替スイッチ３１をＣＰＵ１１に接続する。これにより、デバッガー２は、切替器３０の切替スイッチ３１を介して、ＣＰＵ１１に物理的／電気的に接続する。
【００４２】
（３）ステップＳ３
デバッガー２は、ＣＰＵ１１の状態監視を行う。
【００４３】
（４）ステップＳ４
デバッガー２は、ＣＰＵ１１の状態監視の際、ＣＰＵ１１内部で動作するマイクロ命令が１ステップ（ＳＴＥＰ）完了したか確認する。
【００４４】
（５）ステップＳ５
デバッガー２は、ＣＰＵ１１内部で動作するマイクロ命令が１ステップ（ＳＴＥＰ）完了した場合、ＣＰＵ停止を指示する。すなわち、デバッガー２は、切替器３０の切替スイッチ３２にＣＰＵ停止信号を入力する。
【００４５】
（６）ステップＳ６
切替器３０の切替スイッチ３２はＣＰＵ１１とＣＰＵ２１の両方に接続されているので、ＣＰＵ１１とＣＰＵ１２の両方が同時に停止する。
【００４６】
（７）ステップＳ７
このとき、切替器３０の切替スイッチ３１はＣＰＵ１１に接続されているので、デバッガー２は、切替スイッチ３１を介して、ＣＰＵ１１の状態（状態情報：Ｓｔａｔｕｓ）を取得する。
【００４７】
（８）ステップＳ８
次に、切替器３０は、切替スイッチ３１を切り替えて、切替スイッチ３１をＣＰＵ２１に接続する。デバッガー２は、切替スイッチ３１を介して、ＣＰＵ２１の状態を取得する。
【００４８】
（９）ステップＳ９
次に、デバッガー２は、ＣＰＵ動作再開を指示する。すなわち、デバッガー２は、切替器３０の切替スイッチ３２にＣＰＵ動作再開信号を入力する。
【００４９】
（１０）ステップＳ１０
切替器３０の切替スイッチ３２は、ＣＰＵ１１とＣＰＵ２１の両方に接続されているので、ＣＰＵ１１とＣＰＵ１２の両方が同時に動作を再開する。ここでは、ＣＰＵ１１とＣＰＵ１２は、上記のＣＰＵ停止の指示に応じて停止したステップの次のステップから、マイクロ命令の動作を再開する。
【００５０】
［本実施形態の利点］
本発明では、複数のＣＰＵの同期状態を保ったまま、各ＣＰＵ内部の状態の参照、及び各ＣＰＵの操作を行うことが可能になるため、フォールトトレラントコンピュータにおけるデバッグが容易になる。
【００５１】
また、フォールトトレラントコンピュータ内部に１台のデバッグ機器と一方の系統のＣＰＵ、もしくは両方のＣＰＵに切り替える切替器を設けているため、デバック機器が１台で済む。
【００５２】
＜第２実施形態＞
以下に、本発明の第２実施形態について説明する。
【００５３】
［システム構成］
本実施形態におけるシステム構成については、第１実施形態と同じく、図１に示すとおりである。
【００５４】
［同期ずれ発生時の状態取得］
次に、図３のフローチャートを参照して、ＣＰＵの同期ずれ発生時に状態を取得する際の手順について説明する。
【００５５】
ここでは、ＦＴサーバシステム１は、電源が投入され、ＣＰＵ間（ＣＰＵ１１とＣＰＵ２１の間）で同期して動作しているものとする。
【００５６】
（１）ステップＳ１１
デバッガー２は、同期ずれの要因となる条件をトリガー（契機）条件として設定する。
【００５７】
（２）ステップＳ１２
切替器３０は、切替スイッチ３２をＣＰＵ１１に接続する。ここでは、切替器３０は、切替スイッチ３２をＣＰＵ２１に接続しない。これにより、デバッガー２は、切替器３０の切替スイッチ３２を介して、ＣＰＵ１１のみに物理的／電気的に接続する。
【００５８】
（３）ステップＳ１３
また、切替器３０は、切替スイッチ３１をＣＰＵ１１に接続する。これにより、デバッガー２は、切替器３０の切替スイッチ３１を介して、ＣＰＵ１１に物理的／電気的に接続する。デバッガー２は、切替スイッチ３１を介して、ＣＰＵ１１の状態を取得する。
【００５９】
（４）ステップＳ１４
続いて、切替器３０は、切替スイッチ３１を切り替えて、ＣＰＵ２１に接続する。これにより、デバッガー２は、切替器３０の切替スイッチ３１を介して、ＣＰＵ２１に物理的／電気的に接続する。デバッガー２は、切替スイッチ３１を介して、ＣＰＵ２１の状態を取得する。
【００６０】
（５）ステップＳ１５
デバッガー２は、取得したＣＰＵ１１とＣＰＵ２１の状態について、同期ずれの要因となるトリガー条件を満たしたか確認する。
【００６１】
（６）ステップＳ１６
デバッガー２は、同期ずれの要因となるトリガー条件を満たした場合、ＣＰＵ停止を指示する。すなわち、デバッガー２は、切替器３０の切替スイッチ３２にＣＰＵ停止信号を入力する。
【００６２】
（７）ステップＳ１７
切替器３０の切替スイッチ３２はＣＰＵ１１に接続されているのでＣＰＵ１１が停止するが、切替スイッチ３２はＣＰＵ２１に接続されていないのでＣＰＵ２１は動作を継続する。ＣＰＵ２１は動作しているので、ＦＴサーバシステム１自体は動作を継続している。
【００６３】
（８）ステップＳ１８
切替器３０は、切替スイッチ３１を切り替えて、ＣＰＵ１１に接続する。これにより、デバッガー２は、切替器３０の切替スイッチ３１を介して、ＣＰＵ１１に物理的／電気的に接続する。デバッガー２は、切替スイッチ３１を介して、ＣＰＵ１１の状態を取得する。
【００６４】
（９）ステップＳ１９
デバッガー２は、ＣＰＵ１１をＣＰＵ２１に同期させる。例えば、デバッガー２は、ＣＰＵ１１の状態をＣＰＵ２１の状態に同期させるように、ＣＰＵ動作再開を指示する。すなわち、デバッガー２は、切替器３０の切替スイッチ３２にＣＰＵ動作再開信号を入力する。切替器３０の切替スイッチ３２は、ＣＰＵ１１にのみ接続されているので、ＣＰＵ１１が動作を再開する。このとき、ＦＴサーバシステム１自体（ＣＰＵ２１）は動作しているので、ＣＰＵ１１をＣＰＵ２１に再同期させることができる。従って、ＦＴサーバシステム１を止めることなく、トリガー条件を設定し、引き続きＣＰＵ状態監視を継続できる。
【００６５】
＜各実施形態の関係＞
なお、上記の各実施形態は、組み合わせて実施することも可能である。例えば、同一のシステムにおいて、いずれかの実施形態を、デバッグ機能として選択できるようにすることが考えられる。
【００６６】
＜ハードウェアの例示＞
以下に、本発明に係るフォールトトレラント情報処理システムを実現するための具体的なハードウェアの例について説明する。
【００６７】
ＦＴサーバシステム１（サーバシステム１０及びサーバシステム２０）やデバッガー２の例として、ＰＣ（パソコン）、アプライアンス（ａｐｐｌｉａｎｃｅ）、シンクライアントサーバ、ワークステーション、メインフレーム、スーパーコンピュータ等の計算機を想定している。なお、実際には、計算機に限らず、中継機器や周辺機器、その他の電子機器でも良い。
【００６８】
また、ＦＴサーバシステム１の例として、ラックマウントサーバ（ｒａｃｋ  ｍｏｕｎｔ  ｓｅｒｖｅｒ）が考えられる。この場合、サーバシステム１０及びサーバシステム２０の例として、ラックマウント型のハードウェア（ＰＣ、ＲＡＩＤストレージ、ファイアウォール専用機等）が考えられる。
【００６９】
また、サーバシステム１０及びサーバシステム２０は、計算機等に搭載される拡張ボードや、物理マシン上に構築された仮想マシン（ＶＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）でも良い。
【００７０】
なお、ＣＰＵ１１やＣＰＵ２１は、プロセッサの一例に過ぎない。プロセッサの例として、ＣＰＵの他にも、ネットワークプロセッサ（ＮＰ：Ｎｅｔｗｏｒｋ  Ｐｒｏｃｅｓｓｏｒ）、マイクロプロセッサ（ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ）、マイクロコントローラ（ｍｉｃｒｏｃｏｎｔｒｏｌｌｅｒ）、或いは、専用の機能を有する半導体集積回路（ＬＳＩ：Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）等が考えられる。また、ＣＰＵ１１やＣＰＵ２１は、上記のようなプロセッサを有する電子回路等でも良い。
【００７１】
切替器３０の例として、ＣＰＵ（ＫＶＭ）切替器等を想定している。また、サーバシステム１０とサーバシステム２０とが、物理的に離れた場所（遠隔地）にあり、ネットワークを介して接続されている場合、切替器３０として、中継装置を使用することも考えられる。中継装置の例として、ネットワークスイッチ（ｎｅｔｗｏｒｋ  ｓｗｉｔｃｈ）、ルータ（ｒｏｕｔｅｒ）、プロキシ（ｐｒｏｘｙ）、ゲートウェイ（ｇａｔｅｗａｙ）、ファイアウォール（ｆｉｒｅｗａｌｌ）、ロードバランサ（ｌｏａｄ  ｂａｌａｎｃｅｒ：負荷分散装置）、帯域制御装置（ｐａｃｋｅｔ  ｓｈａｐｅｒ）、セキュリティ監視制御装置（ＳＣＡＤＡ：Ｓｕｐｅｒｖｉｓｏｒｙ  Ｃｏｎｔｒｏｌ  Ａｎｄ  Ｄａｔａ  Ａｃｑｕｉｓｉｔｉｏｎ）、ゲートキーパー（ｇａｔｅｋｅｅｐｅｒ）、基地局（ｂａｓｅ  ｓｔａｔｉｏｎ）、アクセスポイント（ＡＰ：Ａｃｃｅｓｓ  Ｐｏｉｎｔ）、通信衛星（ＣＳ：Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｓａｔｅｌｌｉｔｅ）、或いは、複数の通信ポートを有する計算機等が考えられる。また、物理マシン上に構築された仮想マシン（ＶＭ）により実現される仮想スイッチでも良い。
【００７２】
但し、実際には、これらの例に限定されない。
【００７３】
＜本発明の特徴＞
本発明に係るフォールトトレラント情報処理システムは、運用系と待機系のＣＰＵの同期ずれが発生した時に、両系のＣＰＵの同期状態を保ったままＪＴＡＧアクセスを可能とし、容易にデバッグを行うデバッグ機器を提供する。
【００７４】
本発明に係るフォールトトレラント情報処理システムは、両系のＣＰＵの同期を保ったままＪＴＡＧアクセス可能なデバッグ機器を設けるための切替器を提供する。
【００７５】
本発明に係るフォールトトレラント情報処理システムでは、ＣＰＵ内部で動作するマイクロ命令を１ステップ（ＳＴＥＰ）毎に実行しながら両系のＣＰＵの内部状態を比較し、或いは、同期ずれ検出をトリガー条件としてＣＰＵを停止してＣＰＵ内部情報を参照し、同期ずれの原因となった状態を特定するためのＪＴＡＧによるデバッグを行う。
【００７６】
＜付記＞
上記の実施形態の一部又は全部は、以下の付記のように記載することも可能である。但し、実際には、以下の記載例に限定されない。
【００７７】
［付記１］
第１プロセッサと、
第２プロセッサと、
デバッガーと、
該第１プロセッサ及び該第２プロセッサのいずれか一方からの出力を該デバッガーに入力するための第１切替スイッチと、
該デバッガーからの出力を該第１プロセッサ及び該第２プロセッサの少なくとも一方に入力するための第２切替スイッチと
を具備し、
該第１プロセッサ及び該第２プロセッサは、同期して動作し、
該デバッガーは、該第１プロセッサと該第２プロセッサとの同期状態を保ったままＪＴＡＧアクセスを行い、該第１プロセッサと該第２プロセッサとの同期ずれが発生した時に、ＪＴＡＧによるデバッグを行う
フォールトトレラント情報処理システム。
【００７８】
［付記２］
付記１に記載のフォールトトレラント情報処理システムであって、
該第１切替スイッチは、該第１プロセッサを該デバッガーに接続し、
該第２切替スイッチは、該第１プロセッサ及び該第２プロセッサの両方を該デバッガーに接続し、
該第１プロセッサ及び該第２プロセッサの各々は、内部で動作するマイクロ命令を１ステップ毎に実行し、
該デバッガーは、該第１プロセッサの内部状態監視を行い、該第１プロセッサの内部で動作するマイクロ命令が１ステップ完了した場合、該第２切替スイッチを介して、該第１プロセッサ及び該第２プロセッサの両方に、動作停止を指示し、該第１切替スイッチを介して該第１プロセッサの状態を取得し、
該第１プロセッサ及び該第２プロセッサは、動作停止の指示に応じて、動作を停止し、
該第１切替スイッチは、該第２プロセッサを該デバッガーに接続し、
該デバッガーは、該第１切替スイッチを介して該第２プロセッサの状態を取得し、該第２切替スイッチを介して、該第１プロセッサ及び該第２プロセッサの両方に、動作再開を指示し、
該第１プロセッサ及び該第２プロセッサは、動作再開の指示に応じて、動作を再開する
フォールトトレラント情報処理システム。
【００７９】
［付記３］
付記１又は２に記載のフォールトトレラント情報処理システムであって、
該デバッガーは、同期ずれの要因となる条件をトリガー条件として設定し、
該第２切替スイッチは、該第１プロセッサを該デバッガーに接続し、
該第１切替スイッチは、該第１プロセッサを該デバッガーに接続し、
該デバッガーは、該第１切替スイッチを介して該第１プロセッサの状態を取得し、
該第１切替スイッチは、該第２プロセッサを該デバッガーに接続し、
該デバッガーは、該第１切替スイッチを介して該第２プロセッサの状態を取得し、該第１プロセッサの状態と該第２プロセッサの状態とを参照し、同期ずれの要因となるトリガー条件を満たしたか確認し、同期ずれの要因となるトリガー条件を満たした場合、該第２切替スイッチを介して、該第１プロセッサに停止を指示し、
該第１プロセッサは、動作停止の指示に応じて、動作を停止し、
該第２プロセッサは、動作を継続し、
該第１切替スイッチは、該第１プロセッサを該デバッガーに接続し、
該デバッガーは、該第１プロセッサと該第２プロセッサとを同期させ、該第２切替スイッチを介して、該第１プロセッサに動作再開を指示する
フォールトトレラント情報処理システム。
【００８０】
＜備考＞
以上、本発明の実施形態を詳述してきたが、実際には、上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。
【符号の説明】
【００８１】
１…  ＦＴサーバシステム
２…  デバッガー（デバッグ機器）
１０、２０…  サーバシステム（サーバ装置）
１１、２１…  ＣＰＵ（プロセッサ）
３０…  切替器
３１、３２…  切替スイッチ
１００、１０１、１０２…  パス
【図１】
0005477725.tif 000002
【図２】
0005477725.tif 000003
【図３】
0005477725.tif 000004