(57)【要約】  ノースブリッジ１１が冗長ＣＰＵの同期崩れを検出すると、エラーが発生した異常ＣＰＵバスの動作を停止させ、ＦＷＨ１３−１内のファームウェアが、ノースブリッジ１１に対して、外部命令の抑止を指示する。また、ファームウェアが、正常ＣＰＵバスに接続されている正常ＣＰＵの内部情報とキャッシュデータとをメモリ１５−１に退避させ、ノースブリッジ１１が、自システムボード内の全ＣＰＵに対しリセットを発行する。次に、ファームウェアが、全ＣＰＵに対し、上記メモリ１５−１に退避されたＣＰＵの内部情報を復元させ、ノースブリッジ１１に対して、外部命令の抑止の解除を指示する。
2009040879.tif 000002
【特許請求の範囲】
【請求項１】
同一の処理を同時に実行する互いに冗長化された第１及び第２の演算処理装置と、前記第１及び第２の演算処理装置に接続された第１の制御装置と、前記第１の制御装置を介して接続された記憶装置及び第２の制御装置とを備えた情報処理装置であって、
前記第１の制御装置は、
前記第１又は第２の演算処理装置のうち、いずれかの演算処理装置において発生した異常を検出することにより、同期崩れを検出する同期崩れ検出手段と、
前記異常が検出された演算処理装置の命令の発行を停止させる命令発行停止手段と、
前記第２の制御装置から前記第１の制御装置に対して発行される命令を抑止する命令抑止手段と、
前記第１又は第２の演算処理装置のうち、正常である演算処理装置が有する内部情報を前記記憶装置に退避させる退避手段と、
前記第１及び第２の演算処理装置の初期化を行う初期化手段と、
前記記憶装置に退避された内部情報を前記初期化された第１及び第２の演算処理装置に復元させる復元手段と、
前記第１及び第２の演算処理装置に前記内部情報が復元された場合に、前記第２の制御装置から前記第１の制御装置に対して発行される命令の抑止を解除し、前記第１及び第２の演算処理装置の同期動作を再開させる命令抑止解除手段を有する
ことを特徴とする情報処理装置。
【請求項２】
請求項１記載の情報処理装置において、
前記第１の制御装置はさらに、
前記異常が検出された演算処理装置の命令の発行が停止された場合に、前記第１及び第２の演算処理装置の同期動作を再開した回数が、所定回数以上であるかを判断し、前記同期動作を再開した回数が前記所定回数以上である場合には、前記復元手段に、前記記憶装置に退避された内部情報を、前記第１及び第２の演算処理装置のうち前記正常である演算処理装置のみに復元させる判断手段を有する
ことを特徴とする情報処理装置。
【請求項３】
請求項１記載の情報処理装置において、
前記第１の制御装置はさらに、
前記記憶装置に退避された内部情報が前記初期化された第１及び第２の演算処理装置に復元される途中で、前記同期崩れ検出手段が、前記異常が検出された演算処理装置における異常を再度検出した場合に、前記異常が検出された演算処理装置に対する前記内部情報の復元を中断し、前記内部情報が復元された正常である演算処理装置のみの動作を再開させ、前記第２の制御装置から前記第１の制御装置に対して発行される命令の抑止を解除する復元中断手段を有する
ことを特徴とする情報処理装置。
【請求項４】
同一の処理を同時に実行する互いに冗長化された第１及び第２の演算処理装置と、前記第１及び第２の演算処理装置に接続された第１の制御装置と、前記第１の制御装置を介して接続された記憶装置及び第２の制御装置とを備えた情報処理装置の制御方法であって、
前記第１又は第２の演算処理装置のうち、いずれかの演算処理装置において発生した異常を検出することにより、同期崩れを検出するステップと、
前記異常が検出された演算処理装置の命令の発行を停止させるステップと、
前記第２の制御装置から前記第１の制御装置に対して発行される命令を抑止するステップと、
前記第１又は第２の演算処理装置のうち、正常である演算処理装置が有する内部情報を前記記憶装置に退避させるステップと、
前記第１及び第２の演算処理装置の初期化を行うステップと、
前記記憶装置に退避された内部情報を前記初期化された第１及び第２の演算処理装置に復元させるステップと、
前記第１及び第２の演算処理装置に前記内部情報が復元された場合に、前記第２の制御装置から前記第１の制御装置に対して発行される命令の抑止を解除し、前記第１及び第２の演算処理装置の同期動作を再開させるステップを有する
ことを特徴とする制御方法。
【請求項５】
請求項４記載の制御方法において、さらに、
前記異常が検出された演算処理装置の命令の発行が停止された場合に、前記第１及び第２の演算処理装置の同期動作を再開した回数が、所定回数以上であるかを判断するステップと、
前記同期動作を再開した回数が前記所定回数以上である場合には、前記記憶装置に退避された内部情報を、前記第１及び第２の演算処理装置のうち前記正常である演算処理装置のみに復元させるステップを有する
ことを特徴とする制御方法。
【請求項６】
請求項４記載の制御方法において、さらに、
前記記憶装置に退避された内部情報が前記初期化された第１及び第２の演算処理装置に復元される途中で、前記異常が検出された演算処理装置における異常が再度検出された場合に、前記異常が検出された演算処理装置に対する前記内部情報の復元を中断するステップと、
前記内部情報が復元された正常である演算処理装置のみの動作を再開させるステップと、
前記第２の制御装置から前記第１の制御装置に対して発行される命令の抑止を解除するステップを有する
ことを特徴とする制御方法。
【請求項７】
同一の処理を同時に実行する互いに冗長化された第１及び第２の演算処理装置と、前記第１及び第２の演算処理装置に接続された第１の制御装置と、前記第１の制御装置に接続された記憶装置とを有する第１のシステムボードと、第２の制御装置を有する第２のシステムボードと、前記第１及び第２のシステムボードを中継する中継装置を備えた情報処理装置であって、
前記第１のシステムボードは、
前記第１又は第２の演算処理装置のうち、いずれかの演算処理装置から発行された命令を、前記中継装置を介して前記第２のシステムボードに対して投入する命令投入手段と、
前記第１又は第２の演算処理装置のうち、いずれかの演算処理装置において発生した異常を検出することにより、同期崩れを検出する同期崩れ検出手段と、
前記命令投入手段に指示して、前記異常が検出された演算処理装置の命令の発行を停止させる命令発行停止手段と、
前記第２のシステムボードから前記第１の制御装置に対して投入される命令を抑止する命令抑止手段と、
前記第１又は第２の演算処理装置のうち、正常である演算処理装置が有する内部情報を前記記憶装置に退避させる退避手段と、
前記第１及び第２の演算処理装置の初期化を行う初期化手段と、
前記記憶装置に退避された内部情報を前記初期化された第１及び第２の演算処理装置に復元させる復元手段と、
前記第１及び第２の演算処理装置に前記内部情報が復元された場合に、前記第２のシステムボードから前記第１の制御装置に対して発行される命令の抑止を解除し、前記第１及び第２の演算処理装置の同期動作を再開させる命令抑止解除手段を有する
ことを特徴とする情報処理装置。
【請求項８】
請求項７記載の情報処理装置において、
前記第１のシステムボードはさらに、
前記異常が検出された演算処理装置の命令の発行が停止された場合に、前記第１及び第２の演算処理装置の同期動作を再開した回数が、所定回数以上であるかを判断し、前記同期動作を再開した回数が前記所定回数以上である場合には、前記復元手段に、前記記憶装置に退避された内部情報を、前記第１及び第２の演算処理装置のうち前記正常である演算処理装置のみに復元させる判断手段を有する
ことを特徴とする情報処理装置。
【請求項９】
請求項７記載の情報処理装置において、
前記第１のシステムボードはさらに、
前記記憶装置に退避された内部情報が前記初期化された第１及び第２の演算処理装置に復元される途中で、前記同期崩れ検出手段が、前記異常が検出された演算処理装置における異常を再度検出した場合に、前記異常が検出された演算処理装置に対する前記内部情報の復元を中断し、前記内部情報が復元された正常である演算処理装置のみの動作を再開させ、前記第２の制御装置から前記第１の制御装置に対して発行される命令の抑止を解除する復元中断手段を有する
ことを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の演算処理装置（例えばＣＰＵ）が冗長化され、例えば冗長ＣＰＵとして同期動作を行う情報処理装置及び情報処理装置の制御方法に関し、特に、演算処理装置間の同期崩れが発生したときに、冗長化された演算処理装置の再同期を行う情報処理装置及び情報処理装置の制御方法に関する。
【背景技術】
【０００２】
ＵＮＩＸ(登録商標）やＬｉｎｕｘ等のオープンソースＯＳで稼動し、複数のＣＰＵが冗長化されたシステム（マルチプロセッサシステム）では、冗長ＣＰＵを構成するＣＰＵペアにおける一方のＣＰＵが一時的に故障したことによって、冗長（同期）運転を行っている他方のＣＰＵへの縮退が発生した後に、ＣＰＵを再度冗長構成へ戻すためには、システムを一旦停止させた上で冗長ＣＰＵの再同期およびＯＳの再起動が必要である。
ここで、同期運転を行うＣＰＵとは、同一の処理を同時に実行するＣＰＵである。【０００３】
複数のプロセッサで構成されるマルチプロセッサシステムに関する具体的な技術として、下記の特許文献１は、３つ以上のプロセッサの中の一つを通常モード、残りのプロセッサを、通常モードのプロセッサの実行状態を監視する監視モードに指定し、監視モードのプロセッサの各々が異常信号を発生したときは、通常モードのプロセッサが異常であると判断し、監視モードのプロセッサの一つが異常信号を発生したときは、監視モードのプロセッサに異常が生じたと判断する多重化システムについて記載している。【０００４】
また、下記の特許文献２は、例えば、冗長化された第１ＣＰＵ、第２ＣＰＵの各々に設けられる状態装置のうち、第２ＣＰＵ内の特定の状態装置に異常等が生じて再同期が必要となったときに、再同期サーバが、特定の状態装置と、第１ＣＰＵ内の特定の状態装置に対応する状態装置に対して再同期コマンドを発行することで、双方の状態装置をリスタートさせて、状態装置の再同期を実現する冗長システムについて記載している。
【特許文献１】特公平６−３００６９号公報
【特許文献２】特表２００２−５３８５２１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
前述したように、従来は、同期動作を行う冗長ＣＰＵのうち、いずれかのＣＰＵの縮退が発生した後に、ＣＰＵを再度冗長構成へ戻すために、システムを一旦停止させた上で冗長ＣＰＵの再同期及びＯＳの再起動を行うことが必要であった。しかし、連続稼動を要求される基幹システムにおいては、システムの一時停止を行うと、連続稼動ができなくなるという問題が生じる。【０００６】
また、上記特許文献１に記載された従来技術では、プロセッサの異常を検出する制御部から、プロセッサの動作を停止させる制御信号を受けるためのインタフェースを持つ専用のプロセッサを用いることが必要となる。また、当該従来技術では、ソフトエラー等によるプロセッサ内部の一時的な故障があった場合でも、プロセッサがシステムから切り離されてしまう。また、従来技術は、多数決に基づいて異常プロセッサを判定する技術であるため、プロセッサの残数が２つになったときに異常が検出されると、双方のプロセッサを停止させてしまう。【０００７】
また、上記特許文献２に記載された従来技術は、異常が発生した状態装置に関連する全ての状態装置をリスタートさせても、他の状態装置の状態に影響を与えないという、限定されたシステムにおける状態装置の再同期技術である。従って、従来技術における状態装置の再同期処理は、システム上で動作しているＯＳが有する機能に依存し、そのような機能を有しない汎用のＯＳは用いることができない。【０００８】
本発明は、複数の演算処理装置が冗長化され、冗長演算処理装置として同期動作を行う情報処理装置において、冗長化された演算処理装置間の同期が取れなくなるという同期崩れが発生したときに、ＯＳを再起動させることなく、冗長演算処理装置の再同期処理を行う情報処理装置の提供を目的とする。【０００９】
また、本発明は、複数の演算処理装置が冗長化され、冗長演算処理装置として同期動作を行う情報処理装置において、冗長化された演算処理装置間の同期が取れなくなるという同期崩れが発生したときに、ＯＳを再起動させることなく、冗長演算処理装置の再同期処理を行う制御方法の提供を目的とする。
【課題を解決するための手段】
【００１０】
本発明の情報処理装置は、同一の処理を同時に実行する互いに冗長化された第１及び第２の演算処理装置と、前記第１及び第２の演算処理装置に接続された第１の制御装置と、前記第１の制御装置を介して接続された記憶装置及び第２の制御装置とを備えた情報処理装置であって、前記第１の制御装置は、前記第１又は第２の演算処理装置のうち、いずれかの演算処理装置において発生した異常を検出することにより、同期崩れを検出する同期崩れ検出手段と、前記異常が検出された演算処理装置の命令の発行を停止させる命令発行停止手段と、前記第２の制御装置から前記第１の制御装置に対して発行される命令を抑止する命令抑止手段と、前記第１又は第２の演算処理装置のうち、正常である演算処理装置が有する内部情報を前記記憶装置に退避させる退避手段と、前記第１及び第２の演算処理装置の初期化を行う初期化手段と、前記記憶装置に退避された内部情報を前記初期化された第１及び第２の演算処理装置に復元させる復元手段と、前記第１及び第２の演算処理装置に前記内部情報が復元された場合に、前記第２の制御装置から前記第１の制御装置に対して発行される命令の抑止を解除し、前記第１及び第２の演算処理装置の同期動作を再開させる命令抑止解除手段を有する。【００１１】
好ましくは、本発明の情報処理装置において、前記第１の制御装置はさらに、前記異常が検出された演算処理装置の命令の発行が停止された場合に、前記第１及び第２の演算処理装置の同期動作を再開した回数が、所定回数以上であるかを判断し、前記同期動作を再開した回数が前記所定回数以上である場合には、前記復元手段に、前記記憶装置に退避された内部情報を、前記第１及び第２の演算処理装置のうち前記正常である演算処理装置のみに復元させる判断手段を有する。【００１２】
好ましくは、本発明の情報処理装置において、前記第１の制御装置はさらに、前記記憶装置に退避された内部情報が前記初期化された第１及び第２の演算処理装置に復元される途中で、前記同期崩れ検出手段が、前記異常が検出された演算処理装置における異常を再度検出した場合に、前記異常が検出された演算処理装置に対する前記内部情報の復元を中断し、前記内部情報が復元された正常である演算処理装置のみの動作を再開させ、前記第２の制御装置から前記第１の制御装置に対して発行される命令の抑止を解除する復元中断手段を有する。【００１３】
また、本発明の制御方法は、同一の処理を同時に実行する互いに冗長化された第１及び第２の演算処理装置と、前記第１及び第２の演算処理装置に接続された第１の制御装置と、前記第１の制御装置を介して接続された記憶装置及び第２の制御装置とを備えた情報処理装置の制御方法であって、前記第１又は第２の演算処理装置のうち、いずれかの演算処理装置において発生した異常を検出することにより、同期崩れを検出するステップと、前記異常が検出された演算処理装置の命令の発行を停止させるステップと、前記第２の制御装置から前記第１の制御装置に対して発行される命令を抑止するステップと、前記第１又は第２の演算処理装置のうち、正常である演算処理装置が有する内部情報を前記記憶装置に退避させるステップと、前記第１及び第２の演算処理装置の初期化を行うステップと、前記記憶装置に退避された内部情報を前記初期化された第１及び第２の演算処理装置に復元させるステップと、前記第１及び第２の演算処理装置に前記内部情報が復元された場合に、前記第２の制御装置から前記第１の制御装置に対して発行される命令の抑止を解除し、前記第１及び第２の演算処理装置の同期動作を再開させるステップを有する。【００１４】
好ましくは、本発明の制御方法において、さらに、前記異常が検出された演算処理装置の命令の発行が停止された場合に、前記第１及び第２の演算処理装置の同期動作を再開した回数が、所定回数以上であるかを判断するステップと、前記同期動作を再開した回数が前記所定回数以上である場合には、前記記憶装置に退避された内部情報を、前記第１及び第２の演算処理装置のうち前記正常である演算処理装置のみに復元させるステップを有する。【００１５】
好ましくは、本発明の制御方法において、さらに、前記記憶装置に退避された内部情報が前記初期化された第１及び第２の演算処理装置に復元される途中で、前記異常が検出された演算処理装置における異常が再度検出された場合に、前記異常が検出された演算処理装置に対する前記内部情報の復元を中断するステップと、前記内部情報が復元された正常である演算処理装置のみの動作を再開させるステップと、前記第２の制御装置から前記第１の制御装置に対して発行される命令の抑止を解除するステップを有する。【００１６】
また、本発明の情報処理装置は、同一の処理を同時に実行する互いに冗長化された第１及び第２の演算処理装置と、前記第１及び第２の演算処理装置に接続された第１の制御装置と、前記第１の制御装置に接続された記憶装置とを有する第１のシステムボードと、第２の制御装置を有する第２のシステムボードと、前記第１及び第２のシステムボードを中継する中継装置を備えた情報処理装置であって、前記第１のシステムボードは、前記第１又は第２の演算処理装置のうち、いずれかの演算処理装置から発行された命令を、前記中継装置を介して前記第２のシステムボードに対して投入する命令投入手段と、前記第１又は第２の演算処理装置のうち、いずれかの演算処理装置において発生した異常を検出することにより、同期崩れを検出する同期崩れ検出手段と、前記命令投入手段に指示して、前記異常が検出された演算処理装置の命令の発行を停止させる命令発行停止手段と、前記第２のシステムボードから前記第１の制御装置に対して投入される命令を抑止する命令抑止手段と、前記第１又は第２の演算処理装置のうち、正常である演算処理装置が有する内部情報を前記記憶装置に退避させる退避手段と、前記第１及び第２の演算処理装置の初期化を行う初期化手段と、前記記憶装置に退避された内部情報を前記初期化された第１及び第２の演算処理装置に復元させる復元手段と、前記第１及び第２の演算処理装置に前記内部情報が復元された場合に、前記第２のシステムボードから前記第１の制御装置に対して発行される命令の抑止を解除し、前記第１及び第２の演算処理装置の同期動作を再開させる命令抑止解除手段を有する。【００１７】
好ましくは、本発明の情報処理装置において、前記第１のシステムボードはさらに、前記異常が検出された演算処理装置の命令の発行が停止された場合に、前記第１及び第２の演算処理装置の同期動作を再開した回数が、所定回数以上であるかを判断し、前記同期動作を再開した回数が前記所定回数以上である場合には、前記復元手段に、前記記憶装置に退避された内部情報を、前記第１及び第２の演算処理装置のうち前記正常である演算処理装置のみに復元させる判断手段を有する。【００１８】
好ましくは、本発明の情報処理装置において、前記第１のシステムボードはさらに、前記記憶装置に退避された内部情報が前記初期化された第１及び第２の演算処理装置に復元される途中で、前記同期崩れ検出手段が、前記異常が検出された演算処理装置における異常を再度検出した場合に、前記異常が検出された演算処理装置に対する前記内部情報の復元を中断し、前記内部情報が復元された正常である演算処理装置のみの動作を再開させ、前記第２の制御装置から前記第１の制御装置に対して発行される命令の抑止を解除する復元中断手段を有する。
【発明の効果】
【００１９】
本発明は、例えば、冗長化された演算処理装置である冗長ＣＰＵのうち、いずれかのＣＰＵのエラーによる冗長演算処理装置（冗長ＣＰＵ）の同期崩れを検出すると、外部の装置から自システムに対して発行される命令を抑止した上で、正常なＣＰＵ（以下、「正常ＣＰＵ」）の内部情報とキャッシュデータとをノースブリッジに接続されたメインメモリ等の記憶装置に退避させる。そして、本発明は、上記エラーが発生したＣＰＵ（以下、「異常発生ＣＰＵ」と表記）と正常ＣＰＵをリセットさせ、上記記憶装置に退避された正常ＣＰＵの内部情報を、前記リセットされた異常発生ＣＰＵ内と正常ＣＰＵ内に復元させる。そして、本発明は、異常発生ＣＰＵ内と正常ＣＰＵ内とに内部情報が復元されたとき、上記外部の装置から自システムに対して発行される命令の抑止を解除し、異常発生ＣＰＵと正常ＣＰＵの同期動作を再開させることで、上記冗長ＣＰＵを再同期させる。従って、本発明によれば、ＣＰＵ間の同期崩れが発生したときに、ＯＳを再起動させることなく、冗長ＣＰＵの再同期処理を行うことが可能となる。また、本発明による冗長ＣＰＵの再同期処理は、システム上で動作しているＯＳが有する機能に依存しないため、汎用のＯＳを用いて実現することができる。【００２０】
また、本発明は、例えば、異常発生ＣＰＵから外部の装置への命令の発行が停止されたときに、冗長ＣＰＵの再同期の実施回数が、冗長ＣＰＵの再同期の実施回数の上限値以上であるかを判断し、冗長ＣＰＵの再同期の実施回数が冗長ＣＰＵの再同期の実施回数の上限値以上であると判断した場合に、正常ＣＰＵのみの運転を継続させる。従って、本発明によれば、例えば、冗長ＣＰＵのうちのいずれかのＣＰＵに固定故障が生じたときに、正常ＣＰＵの運転を継続させることができ、システムに搭載されたＣＰＵ資源を最大限活用した継続運転をすることが可能となる。【００２１】
また、本発明は、上記記憶装置に退避された正常ＣＰＵの内部情報が上記リセットされた異常発生ＣＰＵ内と正常ＣＰＵ内に復元される途中で、異常発生ＣＰＵでのエラーが再度検出されたときに、異常発生ＣＰＵ内への上記内部情報の復元を中断し、内部情報が復元された正常ＣＰＵのみの運転を再開させ、外部の装置から自システムに対して発行される命令の抑止を解除する。従って、本発明によれば、例えば、冗長ＣＰＵの再同期処理の途中で異常発生ＣＰＵにおいてエラーが再度発生したときにおいて、正常ＣＰＵの運転を再開させることができる。従って、本発明によれば、システムに搭載されたＣＰＵ資源を最大限活用した継続運転をすることが可能となる。
【図面の簡単な説明】
【００２２】
【図１】本実施形態の全体構成の一例を示す図である。
【図２】本実施形態の冗長ＣＰＵの再同期処理の概要を説明する図である。
【図３】本実施形態の冗長ＣＰＵの再同期処理の概要を説明する図である。
【図４】本実施形態の冗長ＣＰＵの再同期処理の概要を説明する図である。
【図５】本実施形態の冗長ＣＰＵの再同期処理の概要を説明する図である。
【図６】本実施形態の冗長ＣＰＵの再同期処理の概要を説明する図である。
【図７】本実施形態の冗長ＣＰＵの再同期処理の概要を説明する図である。
【図８】本実施形態の冗長ＣＰＵの再同期処理の概要を説明する図である。
【図９】本実施形態の冗長ＣＰＵの再同期処理の概要を説明する図である。
【図１０】本実施形態の冗長ＣＰＵの再同期処理の概要を説明する図である。
【図１１】本実施形態の冗長ＣＰＵの再同期処理の概要を説明する図である。
【図１２】本実施形態の冗長ＣＰＵの再同期処理の概要を説明する図である。
【図１３】本実施形態の冗長ＣＰＵの再同期処理の概要を説明する図である。
【図１４】本実施形態の冗長ＣＰＵの再同期処理の概要を説明する図である。
【図１５】本実施形態の実施例に係るシステム構成例を示す図である。
【図１６】ＳＢ＃０の構成例を示す図である。
【図１７】本実施形態の冗長ＣＰＵの再同期処理フローの一例を示す図である。
【図１８】本実施形態の冗長ＣＰＵの再同期処理フローの一例を示す図である。
【符号の説明】
【００２３】
５−１、５−２  グローバルアドレスクロスバー
６−１、６−２、６−３、６−４  グローバルデータクロスバー
７  システムコントロール装置
８  端末
１１、２１  ノースブリッジ
１２−０、１２−１、１２−２、１２−３  ＣＰＵ
１３−１、１３−２  ＦＷＨ
１４−１、１４−２、１４−３、１４−４  メモリコントローラ
１５−１、１５−２、１５−３、１５−４  メモリ
１６−１、１６−２  ＣＰＵバス
２０−１、２０−２  データバス
１００  検査回路
１０１  ＣＰＵバス同期検査回路
１０２  切替制御レジスタ
１０３  リセット制御レジスタ
１０４  再同期制御レジスタ
１０５  切替／再同期制御回路
１０６  切替スイッチ
１０７  マスターキュー
１０８  ＬＣＳＴ生成回路
１０９  リトライ制御レジスタ
１１０  スヌープタグ
１１１  スレーブリクエスト制御回路
２０２  ＬＲＡパケット
２００  グローバルアドレスプライオリティ制御回路
２０１  ＧＣＳＴ生成回路
【発明を実施するための最良の形態】
【００２４】
図１は、本実施形態の全体構成の一例を示す図である。本実施形態は、例えば、図１に示すような複数のシステムボード（ＳＢ＃０〜ＳＢ＃７）を備えるマルチプロセッサシステムとして実現される。図１に示すＩＯＵ＃０、・・・、ＩＯＵ＃７は、それぞれ、ＳＢ＃０、・・・、ＳＢ＃７に対応するＩ／Ｏユニットである。なお、当該マルチプロセッサシステムが備えるシステムボードの数、Ｉ／Ｏユニットの数は、図１に示すシステムボードの数、Ｉ／Ｏユニットの数に限定されない。【００２５】
本実施形態は、例えば、同一の処理を同時に実行する互いに冗長化された第１及び第２の演算処理装置（例えば、図１中のＣＰＵ１２−０及びＣＰＵ１２−２）と、上記第１及び第２の演算処理装置に接続された第１の制御装置（例えば、ノースブリッジ１１）と、上記第１の制御装置に接続された記憶装置（例えば、メモリ１５−１〜１５−４）とを有する第１のシステムボード（例えば、ＳＢ＃０）と、第２の制御装置（図示を省略するノースブリッジ１１以外のノースブリッジ）を有する第２のシステムボード（例えば、ＳＢ＃７）と、前記第１及び第２のシステムボードを中継する中継装置（例えば、グローバルアドレスクロスバー５−１）を備えた情報処理装置として実現される。上記互いに冗長化された第１及び第２の演算処理装置は、例えば、同期動作により冗長化されたＣＰＵペア（冗長ＣＰＵ）である。【００２６】
また、本実施形態は、例えば、同一の処理を同時に実行する互いに冗長化された第１及び第２の演算処理装置（例えば、図１中のＣＰＵ１２−０及びＣＰＵ１２−２）と、上記第１及び第２の演算処理装置に接続された第１の制御装置（例えば、ノースブリッジ１１）と、上記第１の制御装置を介して接続された記憶装置（例えば、メモリ１５−１〜１５−４）及び第２の制御装置（例えば、図示を省略する、ノースブリッジ１１以外のノースブリッジ）とを備えた情報処理装置として実現される。【００２７】
図１に示すように、ＳＢ＃０は、複数のＣＰＵ（ＣＰＵ１２−０〜１２−３）と、ノースブリッジ１１と、ファームウェアハブ（ＦＷＨ）１３−１、１３−２と、メモリコントローラ１４−１〜１４−４と、メモリ１５−１〜１５−４、ＣＰＵバス１６−１、１６−２とを備える。例えば、ＣＰＵバス１６−１に接続されているＣＰＵ１２−０とＣＰＵバス１６−２に接続されているＣＰＵ１２−２とが、同期動作による冗長化されたＣＰＵのペア（冗長ＣＰＵ）であり、ＣＰＵバス１６−１に接続されているＣＰＵ１２−１とＣＰＵバス１６−２に接続されているＣＰＵ１２−３とが、冗長ＣＰＵである。同期動作とは、同一の処理を同時に実行することである。ＳＢ＃０以外の他のシステムボードも、ＳＢ＃０と同様の構成を有する。【００２８】
ノースブリッジ１１は、冗長ＣＰＵを構成するＣＰＵペアのうちの一方のＣＰＵ（片系ＣＰＵ）においてエラーが発生して、冗長ＣＰＵ間における同期が取れなくなる冗長（同期）崩れが生じたことを検出し、ＦＷＨ１３−１又はＦＷＨ１３−２に格納されているファームウェアによる制御に従って、冗長ＣＰＵの再同期処理を行う。冗長（同期）崩れは、冗長ＣＰＵを構成するＣＰＵのペアが同期動作できないことをいう。また、冗長ＣＰＵの再同期処理は、ＣＰＵを再度冗長構成へ戻す処理である。ノースブリッジ１１は、冗長ＣＰＵの再同期処理を、システム上で稼動しているＯＳを再起動させることなく実行する。【００２９】
ＦＷＨ１３−１、１３−２は、フォームウェアが格納されているＲＯＭであり、ＦＷＨ１３−１、１３−２に格納されているファームウェアが、ノースブリッジ１１を制御して、冗長ＣＰＵに再同期処理を行わせる。メモリ１５−１〜１５−４には、各種のデータが記憶される。メモリコントローラ１４−１、１４−２、１４−３、１４−４は、それぞれ、メモリ１５−１、１５−２、１５−３、１５−４との間のデータのライト又はリード処理を制御する。ＣＰＵバス１６−１は、ＣＰＵ１２−０及びＣＰＵ１２−１とノースブリッジ１１との間の通信インタフェースであり、ＣＰＵバス１６−２は、ＣＰＵ１２−２及びＣＰＵ１２−３とノースブリッジ１１との間の通信インタフェースである。【００３０】
５−１、５−２は、各システムボードから発行された命令及び当該命令の対象となるアドレス（例えば、ロード命令又はストア命令に対するメモリアドレス等）を他のシステムボード及びＩ／Ｏユニットに対して中継するアドレス中継手段であるグローバルアドレスクロスバー、６−１〜６−４は、システムボード間、Ｉ／Ｏユニット間、及びシステムボードとＩ／Ｏユニットとの間で、データを中継する処理手段であるグローバルデータクロスバーである。７は、システムボードとＩ／Ｏユニットが備えるレジスタ（図示を省略）へ各種設定値を設定するＳＶＰ（サービスプロセッサ）等のシステムコントロール装置である。例えば、システムコントロール装置７は、ＳＢ＃０内のノースブリッジ１１が備えるレジスタに、冗長ＣＰＵの再同期の実施回数の上限値を設定する。【００３１】
まず、各システムボードが備えるノースブリッジの通常の動作について説明する。【００３２】
ノースブリッジ（例えば、ノースブリッジ１１）は、通常の動作時において、当該ノースブリッジが備える各ＣＰＵから発行された命令（オペコード）及び命令の対象となるアドレス（以下、「アドレス／オペコード」と表記）をグローバルアドレスクロスバーに投入する。グローバルアドレスクロスバーに対しては、他のシステムボード内のＣＰＵから発行されたアドレス／オペコードも投入される。グローバルアドレスクロスバーは、所定の優先順位に基づいて、投入されたアドレス／オペコードから特定のアドレス／オペコードを選択して、各システムボードに通知する。すなわち、ノースブリッジは、自システムボード内のＣＰＵから発行された命令を、グローバルアドレスクロスバーを通じて自システムボードも含めた全てのシステムボードに対して外部命令として投入する外部命令投入手段である。【００３３】
グローバルアドレスクロスバーから上記通知を受けると、各システムボードが備えるノースブリッジ（例えば、ノースブリッジ１１）は、自ノースブリッジに対応するシステムボードが、選択されたアドレス／オペコードに関する処理の実行を継続できるかを示す情報（処理可否情報）と、自ノースブリッジに対応するシステムボードが、上記通知されたアドレスに対するデータを、システムボード内のどこで、そして、どのような状態で保持しているかを示す情報（データ状態情報）とが含まれるパケット（図１５を参照して後述するＬＣＳＴパケット）をグローバルアドレスクロスバーに対して投入する。本実施形態の特有の動作においては、冗長ＣＰＵの冗長（同期）崩れを検出したノースブリッジは、例えば、処理可否情報としてＲｅｔｒｙ（リトライ）をグローバルアドレスクロスバーに対して投入する。リトライは、外部からシステムボードに対して発行された命令の発行元に対して、当該命令を受け付けることができないため、命令を再投入するよう指示する制御信号である。【００３４】
処理可否情報とデータ状態情報とが投入されたグローバルアドレスクロスバーは、各システムボードが備えるノースブリッジに対して、上記処理可否情報とデータ状態情報とを通知する。通知を受けたシステムボードが備えるノースブリッジは、自ノースブリッジが実行すべき命令を実行する。ノースブリッジは、必要に応じて、命令の実行に必要なデータを、データクロスバーを介して自ノースブリッジに対応するシステムボードとは異なる他のシステムボードから受信する。例えば、ＳＢ＃０がデータをメモリ１５−１に書き込む場合、ＳＢ＃０は、必要に応じて、グローバルデータクロスバー６−１を介して、ＳＢ＃７から書き込み対象であるデータを受信する。そして、ＳＢ＃０が、メモリコントローラ１４−１の制御によってメモリ１５−１内にデータを書き込む。【００３５】
次に、本実施形態の冗長ＣＰＵの再同期処理の概要について説明する。まず、図２に示すように、ノースブリッジ１１が、ＣＰＵ１２−０とＣＰＵ１２−２とで構成される冗長ＣＰＵにおける異常発生ＣＰＵ（ＣＰＵ１２−２）で発生したエラー（異常）による冗長（同期）崩れを検出する。【００３６】
次に、図３に示すように、ノースブリッジ１１が、異常発生ＣＰＵ（ＣＰＵ１２−２）が接続されているＣＰＵバス（異常ＣＰＵバス）であるＣＰＵバス１６−２の動作を停止させ、ＣＰＵ１２−２、ＣＰＵ１２−３からの、ＣＰＵバス１６−２、ノースブリッジ１１を通じたノースブリッジ１１の外部の装置への命令の発行を停止する。図３中の斜線は、異常発生ＣＰＵが接続されているＣＰＵバス１６−２の動作が停止状態であることを示す（図４乃至８、図１３、図１４においても同様である）。【００３７】
次に、図４に示すように、ノースブリッジ１１が、正常ＣＰＵバスであるＣＰＵバス１６−１に対して、異常発生ＣＰＵが接続されているＣＰＵバス１６−２の動作が停止状態である旨を割り込み通知する。ここで、正常ＣＰＵバスとは、異常発生ＣＰＵと冗長構成のペアになっている正常なＣＰＵが接続されているＣＰＵバスである。そして、異常ＣＰＵバス（ＣＰＵバス１６−２）の動作が停止している旨の割り込み通知が、ＣＰＵバス１６−１を通じて、ＣＰＵバス１６−１に接続されているＣＰＵ１２−０、ＣＰＵ１２−１に対してなされる。【００３８】
上記割り込み通知がＣＰＵ１２−０、１２−１に対してなされると、ＣＰＵ１２−０、１２−１が、図１に示すＦＷＨ１３−１（又はＦＷＨ１３−２）に格納されているファームウェアに割り当てられて、稼動中のＯＳの処理が一時的に停止される。【００３９】
次に、ファームウェアが、ノースブリッジ１１に対して制御信号を送信して、図５に示すように、ノースブリッジ１１に対して、グローバルアドレスクロスバー５−１にリトライを投入し続けるよう指示する。ノースブリッジ１１がリトライをグローバルアドレスクロスバー５−１へ投入し続けることによって、ＳＢ＃０以外のシステムボードからＳＢ＃０が備えるノースブリッジ１１に対して発行された命令（外部命令）が抑止される。【００４０】
例えば、図５に示すＳＢ＃７が備えるノースブリッジ２１から命令が発行され（図５中の＃Ａ参照）、グローバルアドレスクロスバー５−１からノースブリッジ１１に対して当該命令が発行されても（図５中の＃Ｂ参照）、ノースブリッジ１１が、リトライをグローバルアドレスクロスバー５−１に対して投入し（図５中の＃Ｃ参照）、リトライがグローバルアドレスクロスバー５−１を通じてノースブリッジ２１に通知される（図５中の＃Ｄ参照）。その結果、ノースブリッジ２１からノースブリッジ１１に対して発行された命令の受け付けが抑止され、ＳＢ＃０が備えるＣＰＵ１２−０、１２−１による命令の実行が抑止される。【００４１】
次に、ファームウェアが、正常ＣＰＵであるＣＰＵ１２−０、１２−１に対して指示して、図６に示すように、冗長ＣＰＵ再同期させるために必要なＣＰＵの内部情報（例えば、ＣＰＵ１２−０に異常が発生した瞬間における、ＣＰＵ１２−０内、ＣＰＵ１２−１内のレジスタの情報等）をメモリ１５−１に退避させる。上記正常ＣＰＵは、正常ＣＰＵバスに接続されているＣＰＵである。すなわち、ファームウェアは、冗長ＣＰＵのうち、正常であるＣＰＵが有する内部情報を記憶装置に退避させる退避手段である。【００４２】
また、ファームウェアが、ＣＰＵ１２−０、ＣＰＵ１２−１に対して指示して、図７に示すように、ＣＰＵ１２−０内のキャッシュデータとＣＰＵ１２−１内のキャッシュデータとをメモリ１５−１へ書き出させて退避させる。【００４３】
次に、全ての正常ＣＰＵ（ＣＰＵ１２−０、ＣＰＵ１２−１）について、キャッシュデータのメモリ１５−１への書き出しが完了した時点で、ファームウェアが、ノースブリッジ１１に対して、ノースブリッジ１１が備えるスヌープタグ（図８中のスヌープタグ１１０）が保持する、各ＣＰＵのキャッシュステート情報をクリアするように指示する。スヌープタグ１１０は、ノースブリッジ１１に接続されたＣＰＵの内部のキャッシュステート情報を保持する記憶手段である。また、キャッシュステート情報は、ＣＰＵが備えるキャッシュの状態を示す情報であり、例えば、自ＣＰＵがメモリ１５−１に記憶されているデータをキャッシュ内に保持しているか否かを示す情報や、自ＣＰＵが、どのシステムボードのメモリに記憶されているデータをどういう状態でキャッシュ内に保持しているかを示す情報である。【００４４】
次に、図９に示すように、ノースブリッジ１１が、ノースブリッジ１１に接続された各ＣＰＵ（ＣＰＵ１２−０、ＣＰＵ１２−１、ＣＰＵ１２−２、ＣＰＵ１２−３）に対して同時にＲｅｓｅｔ（リセット）を発行して、各ＣＰＵを初期化させて、冗長ＣＰＵの同期動作を再開させる。Ｒｅｓｅｔは、ＣＰＵを初期化させる制御信号である。【００４５】
また、ファームウェアが、各ＣＰＵの初期化を行い、図６を参照して前述したメモリ１５−１へのＣＰＵの内部情報の退避処理においてメモリ１５−１に退避されたＣＰＵの内部情報を、各ＣＰＵペア内に復元させる。【００４６】
具体的には、図１０に示すＣＰＵ１２−０、ＣＰＵ１２−２が、ファームウェアから指示を受けて、メモリ１５−１に退避されているＣＰＵ１２−０の内部情報を、自ＣＰＵ内に復元する。また、図１０に示すＣＰＵ１２−１、ＣＰＵ１２−３が、ファームウェアから指示を受けて、メモリ１５−１に退避されているＣＰＵ１２−１の内部情報を、自ＣＰＵ内に復元する。すなわち、ファームウェアの一部は、記憶装置に退避された正常ＣＰＵの内部情報を、初期化された異常発生ＣＰＵ内と正常ＣＰＵ内に復元させる復元手段である。【００４７】
図１０を参照して説明した、メモリ１５−１内に記憶されているＣＰＵの内部情報の各ＣＰＵペアへの復元処理によって、各ＣＰＵペアが、冗長構成に復帰する。【００４８】
ノースブリッジ１１に接続されている全てのＣＰＵにおいて、初期化及び内部情報の復元が完了すると、図１１に示すように、ファームウェアが、ノースブリッジ１１に対して、外部命令の投入抑止の解除を指示する。すなわち、ファームウェアは、ノースブリッジ１１に対して、リトライをグローバルアドレスクロスバー５−１へ投入することを停止させることにより、外部命令の投入抑止の解除を行う。【００４９】
ノースブリッジ１１が外部命令の投入抑止を解除することによって、各ＣＰＵペア（ＣＰＵ１２−０とＣＰＵ１２−２のペア、ＣＰＵ１２−１とＣＰＵ１２−３のペア）が、同期動作を再開する（冗長ＣＰＵの再同期が図られる）。【００５０】
例えば、図１２に示すように、ＳＢ＃７が備えるノースブリッジ２１から命令が発行され（図１２中の＃Ａ参照）、グローバルアドレスクロスバー５−１からノースブリッジ１１に対して当該命令が転送されると（図１２中の＃Ｂ参照）、命令を受け付けたノースブリッジ１１は、命令の実行が可能であることを、グローバルアドレスクロスバー５−１を通じてノースブリッジ２１に対して応答する（図１２中の＃Ｃ、＃Ｄ参照）。受け付けられた命令は、冗長ＣＰＵによって実行される。【００５１】
本実施形態の一例によれば、ノースブリッジ１１内の記憶手段に、冗長ＣＰＵの再同期の実施回数の上限値を予め記憶させておく。そして、図３を参照して前述したように、異常ＣＰＵからのノースブリッジ１１の外部の装置への命令の発行が停止されると、ファームウェアが、冗長ＣＰＵの再同期の実施回数（同期動作を再開した回数）が上記記憶手段に記憶された当該冗長ＣＰＵの再同期の実施回数の上限値以上であるかを判断する。そして、ファームウェアが、冗長ＣＰＵの再同期の実施回数が上記上限値以上になったと判断した場合に、冗長ＣＰＵの再同期処理を実施せずに、正常ＣＰＵバス（例えばＣＰＵバス１６−１）及び当該正常ＣＰＵバスに接続されているＣＰＵ（例えば、ＣＰＵ１２−０、ＣＰＵ１２−１）のみの運転を継続させて、システムの継続運転を行う。すなわち、ファームウェアの一部は、異常ＣＰＵの命令の発行が停止された場合に、ＣＰＵの同期動作を再開した回数が、所定回数以上であるかを判断し、同期動作を再開した回数が上記所定回数以上である場合には、復元手段に、記憶装置に退避された内部情報を、正常であるＣＰＵのみに復元させる判断手段である。【００５２】
また、本実施形態の一例によれば、図１０を参照して前述した、ＣＰＵの初期化及び内部情報の復元処理が全てのＣＰＵについて完了する前に、異常発生ＣＰＵでのエラーが発生して再度冗長ＣＰＵの冗長（同期）崩れが再度発生した場合に、ファームウェアが、ノースブリッジ１１に対して、冗長ＣＰＵの再同期処理を中断（すなわち、異常発生ＣＰＵ内への内部情報の復元を中断）して、内部情報が復元された正常ＣＰＵ及び当該正常ＣＰＵが接続されている正常ＣＰＵバスのみの運転（片系運転）を再開するよう指示するとともに、外部命令の抑止解除を指示する。その結果、例えば、図１３に示すように、ＣＰＵバス１６−２の動作は停止状態のままであるが、ＣＰＵバス１６−１の動作が稼動状態となり、また、ノースブリッジ１１による外部命令の抑止が解除される。すなわち、ファームウェアは、メモリ１５−１に退避された内部情報が初期化された異常発生ＣＰＵ内と正常ＣＰＵ内に復元される途中で、異常発生ＣＰＵにおける異常が再度検出された場合に、上記異常発生ＣＰＵに対する内部情報の復元を中断し、内部情報が復元された正常ＣＰＵのみの動作を再開させ、システムボード（ＳＢ＃０）に対して発行される命令の抑止を解除する復元中断手段である。【００５３】
ノースブリッジ１１が外部命令の投入抑止を解除することによって、例えば、図１４に示すように、ＳＢ＃７が備えるノースブリッジ２１から命令が発行され（図１４中の＃Ａ参照）、グローバルアドレスクロスバー５−１からノースブリッジ１１に対して当該命令が発行される（図１４中の＃Ｂ参照）。ノースブリッジ１１は、命令の実行が可能であることを、グローバルアドレスクロスバー５−１を通じてノースブリッジ２１に対して応答する（図１４中の＃Ｃ、＃Ｄ参照）。【００５４】
図１５は、本実施形態の一例に係るシステム構成例を示す図であり、図１６は、図１５に示すＳＢ＃０の構成例を示す図である。図１５、図１６に示す例において、本実施形態の情報処理装置は、ＳＭＰ（Symmetric Multiple Processor）で構成され、マルチプロセッサシステムにおける冗長ＣＰＵの再同期システムとして構成される。【００５５】
図１５に示す本実施形態の情報処理装置は、複数のＣＰＵ（例えば、図１６中のＣＰＵ１２−０〜ＣＰＵ１２−３）とメモリ（例えば、図１６中のメモリ１５−１）とを搭載する複数のシステムボード（ＳＢ＃０〜ＳＢ＃Ｎ）が、グローバルアドレスクロスバー５−１およびグローバルデータクロスバー６−１を介して接続されることで構成される。【００５６】
後述するように、図１６に示すＳＢ＃０が備えるＣＰＵ１２−０とＣＰＵ１２−２、ＣＰＵ１２−１とＣＰＵ１２−３は、それぞれ、同期動作による冗長化されたＣＰＵのペア（冗長ＣＰＵ）である。また、グローバルアドレスクロスバー５−１は、各システムボードから発行された命令及び当該命令の対象となるアドレスを他のシステムボードに対して中継するアドレス中継手段である。また、各システムボードは、図１６中に示すＳＢ＃０と同様の構成を有する。すなわち、本実施形態の情報処理装置は、各々が同期動作により冗長化されたＣＰＵペアである冗長ＣＰＵを備え、命令及び当該命令の対象となるアドレスを中継するアドレス中継手段を介して接続された複数のシステムボードから構成されるマルチプロセッサシステムである。【００５７】
当該情報処理装置には、システム管理者と対話する端末８に接続されるシステムコントロール装置７が接続されている。システムコントロール装置７は、端末８から入力された制御信号に従って、各々のシステムボードが備えるノースブリッジ（例えば、図１６中のノースブリッジ１１）に対して命令を発行し、パーティションの構成の設定やノースブリッジの動作モードの設定といったシステム全体の管理を行う。パーティションは、システムボードとＩ／Ｏユニット（図１５、図１６では図示を省略）との組合せにより構成されるシステムである。【００５８】
図１５に示す情報処理装置を構成するシステムボードの一つであるＳＢ＃０は、図１６に示すように、ＣＰＵ１２−０乃至１２−３、メモリ１５−１を備える他、ノースブリッジ１１、ＦＷＨ１３−１、メモリコントローラ１４−１を備える。ＣＰＵ１２−０とＣＰＵ１２−２、ＣＰＵ１２−１とＣＰＵ１２−３が、それぞれ、同期動作による冗長化されたＣＰＵのペア（冗長ＣＰＵ）である。ＣＰＵ１２−０とＣＰＵ１２−２とが、ＣＰＵバス１６−１に接続され、ＣＰＵ１２−１とＣＰＵ１２−３とが、ＣＰＵバス１６−２に接続されている。【００５９】
図１５中に示すノースブリッジ１１は、図１中に示すノースブリッジ１１と同様の処理部である。メモリコントローラ１４−１は、メモリ１５−１の制御を行う。メモリコントローラ１４−１の具体的な機能については、後述する。ＦＷＨ１３−１は、図１中に示すＦＷＨ１３−１と同様である。ＦＷＨ１３−１の具体的な機能については、後述する。【００６０】
ここで、図１５に示す情報処理装置を構成する各システムボード（例えば、ＳＢ＃０）は、自システムボードに搭載されるＣＰＵが発行する命令及び当該命令の対象となるアドレス（アドレス／オペコード）を含む、ローカルリクエストアドレスパケット（以下、ＬＲＡパケット（Ｌｏｃａｌ  Ｒｅｑｕｅｓｔ  Ａｄｄｒｅｓｓパケット）と称する）２０２を生成して、グローバルアドレスクロスバー５−１に投入する。ＬＲＡパケット２０２は、例えば、オペコード、アドレス、パケットＩＤ、ｂｏａｒｄＩＤ、リトライ回数情報、パーティション情報（例えば、パーティションの識別情報）などの情報で構成される。上記ＩＤはＬＲＡパケット２０２の識別情報であり、ｂｏａｒｄＩＤは、当該ＬＲＡパケット２０２の発行元であるシステムボードの識別情報（例えば、ボード番号）である。【００６１】
グローバルアドレスクロスバー５−１が、図１５に示すＬＲＡパケット２０２の投入を受けると、グローバルアドレスクロスバー５−１が備えるグローバルアドレスプライオリティ制御回路２００が、投入されたＬＲＡパケット２０２の中から、予め決められた優先順位に基づいて、特定のＬＲＡパケット２０２をグローバルセレクトアドレスパケット（以下、ＧＳＡパケット（Ｇｒｏｂａｌ  Ｓｅｌｅｃｔ  Ａｄｄｒｅｓｓパケット）と称する）として選択する。そして、グローバルアドレスプライオリティ制御回路２００が、ＧＳＡパケットを全てのシステムボードにブロードキャストする。グローバルアドレスプライオリティ制御回路２００が、ＧＳＡパケットを同一のパーティション内の全てのシステムボードにブロードキャストするようにしてもよい。【００６２】
ＧＳＡパケットは、システムとして実行すべきアドレス／オペコードを各システムボードに通知するためのパケットである。ＧＳＡパケットは、ＬＲＡパケット２０２に含まれる情報と同じ情報を含む。【００６３】
各システムボードが備えるＬＣＳＴ生成回路（例えば、図１６中のＬＣＳＴ生成回路１０８）は、ＧＳＡパケットを受信すると、ローカルキャッシュステートパケット（以下、ＬＣＳＴパケット（Ｌｏｃａｌ  Ｃａｃｈｅ  ＳＴａｔｅパケット）と称する）をグローバルアドレスクロスバー５−１に対して送信する。ＬＣＳＴパケットは、処理可否情報とデータ状態情報とを含み、当該処理可否情報とデータ状態情報とをグローバルアドレスクロスバー５−１に対して通知するためのパケットである。処理可否情報は、自システムボードが、ＧＳＡパケットに含まれる命令で指示される処理（ＧＳＡパケットに含まれるアドレス／オペコードに関する処理）の実行を継続できるか、当該命令の発行元のシステムボードに対してリトライを指示するかを示す情報である。データ状態情報は、自システムボードが、上記ＧＳＡパケットに含まれるアドレスに対応するデータを、自システムボード内のどこで、そして、どのような状態で保持しているかを示す情報である。【００６４】
グローバルアドレスクロスバー５−１が、各システムボードが備えるＬＣＳＴ生成回路からＬＣＳＴパケットを受信すると、図１５中に示すグローバルアドレスクロスバー５−１が備えるＧＣＳＴ生成回路２０１が、グローバルキャッシュステートパケット（以下、ＧＣＳＴパケットと称する）を生成し、ＧＣＳＴパケットを全てのシステムボードにブロードキャストする。ＧＣＳＴ生成回路２０１が、ＧＣＳＴパケットを同一のパーティション内のシステムボードにブロードキャストするようにしてもよい。ＧＣＳＴパケットは、各システムボードからグローバルアドレスクロスバーに対して通知されたＬＣＳＴパケットに含まれる処理可否情報及びデータ状態情報を、全てのシステムボードに通知するためのパケットである。【００６５】
ＧＣＳＴ生成回路２０１は、各システムボードが備えるノースブリッジ（例えば図１６に示すＳＢ＃０が備えるノースブリッジ１１）内のスレーブリクエスト制御回路（例えば、図１６中に示すスレーブリクエスト制御回路１１１）に対してＧＣＳＴパケットを送信する。例えば、図１６に示すスレーブリクエスト制御回路１１１は、図１５に示すＧＣＳＴ生成回路２０１からＧＣＳＴパケットを受信し、ＧＣＳＴパケットを、メモリコントローラ１４−１に対する制御信号（メモリスレーブリクエスト）、ＣＰＵに対する制御信号（ＣＰＵスレーブリクエスト）、ＦＷＨ１３−１に対する制御信号（ＦＷＨスレーブリクエスト）に変換する。そして、スレーブリクエスト制御回路１１１は、メモリスレーブリクエストをメモリコントローラ１４−１に対して送信し、ＣＰＵスレーブリクエストをＣＰＵに対して送信し、ＦＷＨスレーブリクエストをＦＷＨ１３−１に対して送信して、自システムボードが実行すべき命令を実行させる。【００６６】
本実施形態の情報処理装置は、例えば、上述した動作に従って、全てのシステムボード内のＣＰＵに対して対称的、均一に処理を割り付けることを実現する。【００６７】
次に、各システムボードが備えるノースブリッジの構成について、ＳＢ＃０が備えるノースブリッジ１１の構成を例にとって説明する。【００６８】
ノースブリッジ１１は、図１６に示すように、検査回路１００、ＣＰＵバス同期検査回路１０１、切替制御レジスタ１０２、リセット制御レジスタ１０３、再同期制御レジスタ１０４、切替／再同期制御回路１０５、切替スイッチ１０６、マスターキュー１０７、ＬＣＳＴ生成回路１０８、リトライ制御レジスタ１０９、スヌープタグ１１０、スレーブリクエスト制御回路１１１、命令デコーダ１１２を備える。【００６９】
検査回路１００は、ＣＰＵバス１６−１、１６−２を介してＣＰＵ（ＣＰＵ１２−０及びＣＰＵ１２−１、ＣＰＵ１２−２及びＣＰＵ１２−３）から送信されたパケットを受け取り、ＥＣＣおよびパリティ等の検査を行う。検査回路１００は、検査によってエラーを検出すると、切替／再同期制御回路１０５へエラー通知を行う。【００７０】
ＣＰＵバス同期検査回路１０１は、冗長ＣＰＵを構成するＣＰＵペアが接続されているＣＰＵバス単位で同期検査を行う。すなわち、ＣＰＵバス同期検査回路１０１は、冗長ＣＰＵを構成するＣＰＵペアが同期動作を行っているかを検査する。ＣＰＵバス同期検査回路１０１は、同期崩れを検出すると、切替／再同期制御回路１０５へエラー通知を行う。なお、ＣＰＵ内部にてエラーが検出された場合には、エラーが検出されたＣＰＵが切替／再同期制御回路１０５に対してエラー通知（内部エラー通知）を行う。【００７１】
上記検査回路１００及びＣＰＵバス同期検査回路１０１は、冗長ＣＰＵを構成するＣＰＵのうち、いずれかのＣＰＵにおいて発生した異常を検出することにより、同期崩れを検出する同期崩れ検出手段である。【００７２】
切替制御レジスタ１０２には、ＣＰＵバス同期検査回路１０１によってエラーが検出されたときの切替／再同期制御回路１０５の動作モードが設定される。動作モードは、システムコントロール装置７が、命令デコーダ１１２を介して切替制御レジスタ１０２に予め設定する。例えば、切替制御レジスタ１０２に、動作モード１として、エラーが検出されたノースブリッジが含まれるパーティションの停止が設定され、動作モード２として、ＣＰＵバス１６−１の無効が設定され、動作モード３として、ＣＰＵバス１６−２の無効が設定される。【００７３】
リセット制御レジスタ１０３は、各ＣＰＵについてのリセット制御を行うために、各ＣＰＵの状態を管理するレジスタである。例えば、冗長ＣＰＵの再同期処理中、ＣＰＵのキャッシュデータのメモリ１５−１への退避が完了すると、ＦＷＨ１３−１に格納されているファームウェアの制御によって、リセット制御レジスタ１０３内に、当該ＣＰＵに対応する退避完了フラグが立つ。【００７４】
再同期制御レジスタ１０４は、冗長ＣＰＵの再同期の実施回数の上限値（再同期可能上限値）と再同期可否フラグとが設定されるレジスタである。再同期可否フラグは、冗長ＣＰＵの再同期が可能であるか否かを示すフラグである。システムコントロール装置７が、命令デコーダ１１２を介して、再同期可能上限値を再同期制御レジスタ１０４に設定する。【００７５】
本発明の一実施形態によれば、ＦＷＨ１３−１に格納されているファームウェアが、再同期の実施回数と再同期制御レジスタ１０４に設定された再同期可能上限値との比較を行い、再同期の実施回数が再同期可能上限値未満である場合には、冗長ＣＰＵの再同期が可能であると判断して、再同期制御レジスタ１０４に、再同期可否フラグとして、例えばフラグ１を設定する。ファームウェアは、再同期の実施回数が再同期可能上限値以上である場合には、冗長ＣＰＵの再同期が可能でないと判断して、再同期可否フラグとして、例えばフラグ０を設定する。【００７６】
切替／再同期制御回路１０５は、ＣＰＵ、検査回路１００、ＣＰＵバス同期検査回路１０１からのエラー通知を受けて、切替スイッチ１０６の動作を制御する回路である。切替／再同期制御回路１０５は、下記の切替制御を行う。【００７７】
切替／再同期制御回路１０５は、ＣＰＵから内部エラー通知を受けた場合、エラーが発生したＣＰＵ（片系ＣＰＵ）が接続されているＣＰＵバスを無効とし、ＣＰＵバスからグローバルアドレスクロスバー５−１への命令の発行を停止する。切替／再同期制御回路１０５は、検査回路１００からエラー通知を受けた場合、エラーが検出されたＣＰＵバスを無効とし、ＣＰＵバスからグローバルアドレスクロスバー５−１への命令の発行を停止する。また、切替／再同期制御回路１０５は、ＣＰＵバス同期検査回路１０１からエラー通知を受けた場合、切替制御レジスタ１０２に設定されている動作モードに従った動作を行う。すなわち、切替／再同期制御回路１０５は、異常が検出されたＣＰＵの、ＳＢ＃０の外部の装置への命令の発行を停止させる命令発行停止手段である。【００７８】
また、切替／再同期制御回路１０５は、エラー通知を受けたことを契機として、正常ＣＰＵバスに接続しているＣＰＵに割り込みを上げる。割り込み処理によって、ＣＰＵがファームウェアに割り当てられる。【００７９】
また、切替／再同期制御回路１０５は、リセット制御レジスタ１０３を監視し、全てのＣＰＵについて退避完了フラグが立っていることを確認すると、全てのＣＰＵへリセットを発行する。すなわち、切替／再同期制御回路１０５は、異常の発生した異常発生ＣＰＵと正常ＣＰＵの初期化を行う初期化手段である。【００８０】
また、例えば、冗長ＣＰＵの再同期処理中に異常発生ＣＰＵにおいてエラーが発生して再度冗長ＣＰＵの冗長（同期）崩れが発生した場合に、切替／再同期制御回路１０５は、ファームウェアからの指示を受けて、正常ＣＰＵバスのみを有効として、正常ＣＰＵを通じて発行された命令のみがグローバルアドレスクロスバー５−１に投入されるようにする。【００８１】
切替スイッチ１０６は、切替／再同期制御回路１０５の指示に従って、ＣＰＵバスの切替を行う。切替スイッチ１０６がＣＰＵバスの切替を行うことによって、例えば、ＣＰＵバス１０６−１又はＣＰＵバス１０６−２のうちのどちらのＣＰＵバスを通じて発行された命令がＬＲＡパケット２０２としてグローバルアドレスクロスバー５−１に投入されるかが決まる。【００８２】
マスターキュー１０７は、ＣＰＵが発行した命令をチップセットのＬＲＡパケット２０２に変換して保持し、保持されたＬＲＡパケット２０２を切替スイッチ１０６経由でグローバルアドレスクロスバー５−１に投入する。ＬＲＡパケット２０２は、命令が完了するまでマスターキュー１０７で保持されて、途中でリトライが発生した場合（すなわち、自システムボード以外のシステムボードから、自システムボードが発行した命令のリトライが指示された場合）には、グローバルアドレスクロスバー５−１に対して再投入される。【００８３】
ＬＣＳＴ生成回路１０８は、グローバルアドレスクロスバー５−１からＧＳＡパケットを受信して、ＬＣＳＴパケットを生成し、生成されたＬＣＳＴパケットをグローバルアドレスクロスバー５−１に投入する。具体的には、ＬＣＳＴ生成回路１０８は、ＧＳＡパケットを受信すると、リトライ制御レジスタ１０９を参照して、リトライ制御レジスタ１０９中に、後述する再同期中フラグが立てられているかを確認する。リトライ制御レジスタ１０９中に、後述する再同期中フラグが立てられている場合、ＬＣＳＴ生成回路１０８は、ＧＳＡパケットに含まれる命令の発行元に対してリトライを指示することを示す処理可否情報を生成する。リトライ制御レジスタ１０９中に再同期中フラグが立てられていない場合、ＬＣＳＴ生成回路１０８は、ＧＳＡパケットに含まれる命令を受け付け、受け付けた命令を自システムボード（ＳＢ＃０）が実行すべき命令として、スレーブリクエスト制御回路１１１に通知するとともに、自システムボードが、ＧＳＡパケットに含まれる命令の実行を継続できることを示す処理可否情報を生成する。【００８４】
また、ＬＣＳＴ生成回路１０８は、スヌープタグ１１０を参照して、前述したデータ状態情報を生成する。そして、ＬＣＳＴ生成回路１０８は、生成された処理可否情報とデータ状態情報とを含むＬＣＳＴパケットを生成し、ＬＣＳＴパケットをグローバルアドレスクロスバー５−１に投入する。【００８５】
リトライ制御レジスタ１０９は、自システムボードのＣＰＵについて再同期処理が行われているか否かを示す情報が記憶されるレジスタである。自システムボードのＣＰＵの再同期処理が開始されると、他システムボードから自システムボードに対して発行される命令を抑止するために、ファームウェアの指示に従って、リトライ制御レジスタ１０９に、再同期中フラグが立てられる。また、自システムボード内の片系ＣＰＵ（異常ＣＰＵ）と正常ＣＰＵとを含む全てのＣＰＵ内に内部情報が復元されたときに、ファームウェアが、ノースブリッジ１１に対して、外部命令の抑止の解除を指示すると、リトライ制御レジスタ１０９の再同期中フラグが無効に設定される。【００８６】
前述したように、リトライ制御レジスタ１０９中に再同期中フラグが立てられている場合、ＬＣＳＴ生成回路１０８によって、リトライを指示することを示す処理可否情報を含むＬＣＳＴパケットが生成されて、グローバルアドレスクロスバー５−１に投入される。すなわち、ファームウェア及びＬＣＳＴ生成回路１０８は、ＳＢ＃０の外部の装置（例えば、図１５に示すＳＢ＃Ｎ）からＳＢ＃０に対して発行される命令を抑止する命令抑止手段である。【００８７】
また、リトライ制御レジスタ１０９において、再同期中フラグが無効に設定されることによって、ＬＣＳＴ生成回路１０８が、グローバルアドレスクロスバー５−１から受信したＧＳＡパケットに含まれる命令を受け付ける。その結果、受け付けた命令を冗長ＣＰＵに実行させて、冗長ＣＰＵの同期動作を再開させることが可能となる。すなわち、ファームウェアは、異常発生ＣＰＵ内と正常ＣＰＵ内とに内部情報が復元された場合に、システムボード（例えば、ＳＢ＃０）に対して発行される命令の抑止を解除し、異常発生ＣＰＵと正常ＣＰＵの同期動作を再開させる命令抑止解除手段である。【００８８】
スヌープタグ１１０は、ＣＰＵ内部のキャッシュラインのステート情報（キャッシュステート情報）を保持する記憶手段である。後述するスレーブリクエスト制御回路１１１が、スヌープタグ内のキャッシュステート情報を更新する。【００８９】
スレーブリクエスト制御回路１１１は、ＧＣＳＴパケットをグローバルアドレスクロスバー５−１から受信し、ＧＣＳＴパケットに含まれる情報と、ＬＣＳＴ生成回路１０８から通知された、自システムボード（ＳＢ＃０）が実行すべき命令とに基づいて、メモリスレーブリクエスト、ＣＰＵスレーブリクエスト、ＦＷＨスレーブリクエストを生成する。そして、スレーブリクエスト制御回路１１１は、メモリスレーブリクエストをメモリコントローラ１４−１に対して送信し、ＣＰＵスレーブリクエストをＣＰＵに対して送信し、ＦＷＨスレーブリクエストをＦＷＨ１３−１に対して送信する。また、スレーブリクエスト制御回路１１１は、ＦＷＨ１３−１に格納されているファームウェアの指示に従って、リトライ制御レジスタ１０９、スヌープタグ１１０、再同期制御レジスタ１０４、リセット制御レジスタ１０３の記憶内容を更新する。【００９０】
また、例えば、冗長ＣＰＵの再同期処理中に異常発生ＣＰＵにおいてエラーが発生して再度冗長ＣＰＵの冗長（同期）崩れが発生した場合に、ノースブリッジ１１は異常発生ＣＰＵが接続されているＣＰＵバスの動作を再び停止させる。これにより、スレーブリクエスト制御回路１１１は、ファームウェアの指示を受けてＣＰＵスレーブリクエストを全てのＣＰＵに送信するが、ＣＰＵスレーブリクエストは正常ＣＰＵのみで実行される。【００９１】
命令デコーダ１１２は、システムコントロール装置７からノースブリッジ１１に対して発行された命令をデコードし、命令のデコード結果に応じて、各システムボードのボード番号や所属パーティションを設定するとともに、切替制御レジスタ１０２、リトライ制御レジスタ１０９、再同期制御レジスタ１０４に対する設定値の書き込み／読み込みを行う。命令デコーダ１１２は、例えば、切替制御レジスタ１０２への切替／再同期制御回路１０５の動作モードの設定、又は、切替制御レジスタ１０２からの動作モードの読み出しを行う。また、命令デコーダ１１２は、リトライ制御レジスタ１０９から再同期中フラグが立てられているか否かを示す情報を読み出す。また、命令デコーダ１１２は、再同期制御レジスタ１０４への再同期可能上限値の設定、又は、再同期制御レジスタ１０４からの、再同期可否フラグが立てられているか否かを示す情報の読み出しを行う。【００９２】
次に、ＳＢ＃０が備えるメモリコントローラ１４−１の機能について説明する。メモリコントローラ１４−１は、ノースブリッジ１１内のスレーブリクエスト制御回路１１１から送信されたスレーブリクエストの内容に応じた処理を行う。メモリコントローラ１４−１は、例えば、ＣＰＵからメモリ１５−１へのデータの書き込みを行う。また、メモリコントローラ１４−１は、例えば、図１５に示すグローバルデータクロスバー６−１、データバス２０−１を通じてＳＢ＃０以外の他のシステムボードからＳＢ＃０に対して送信されたデータをメモリ１５−１に書き込む。【００９３】
また、メモリコントローラ１４−１は、メモリ１５−１からデータを読み出して、ファームウェアの指示に従って、読み出されたデータをＣＰＵに送信する。また、メモリコントローラ１４−１は、メモリ１５−１からデータを読み出して、読み出されたデータをデータバス２０−２、図１５に示すグローバルデータクロスバー６−１を通じて、ＳＢ＃０以外の他のシステムボードに対して送信する。【００９４】
次に、ＳＢ＃０が備えるＦＷＨ１３−１の機能について説明する。ＦＷＨ１３−１は、ファームウェアが格納されているＲＯＭである。ＦＷＨ１３−１に格納されているファームウェアは、前述した各種の機能（例えば、退避手段、復元手段、判断手段、復元中断手段、命令抑止手段、命令抑止解除手段としての機能）を有する他、スレーブリクエスト制御回路１１１から送信されたＦＷＨスレーブリクエストの内容に応じた処理を行う。例えば、当該ファームウェアは、ＣＰＵへのデータの送信を行う。【００９５】
次に、本発明の動作について、図１５乃至１８を参照しながら説明する。図１７及び図１８は、本実施形態の冗長ＣＰＵの再同期処理フローの一例を示す図である。【００９６】
まず、図１６中に示すＣＰＵ１２−０とＣＰＵ１２−２、ＣＰＵ１２−１とＣＰＵ１２−３は、それぞれ、冗長化された冗長ＣＰＵである。ノースブリッジ１１は、冗長ＣＰＵの同期崩れを監視する。ＣＰＵ内部におけるエラー検出、検査回路１００によるエラー検出、又は、ＣＰＵバス同期検査回路１０１によるエラー検出が行われると、切替／再同期制御回路１０５に対してエラー通知がなされ、図１７のステップＳ１において、切替／再同期制御回路１０５が、冗長ＣＰＵの同期崩れを検出する（ステップＳ１）。例えば、図１６中のＣＰＵ１２−２においてエラーが発生して、冗長ＣＰＵの同期崩れが検出されると、切替／再同期制御回路１０５は、エラーが発生したＣＰＵ１２−２が接続されている異常ＣＰＵバス（例えば、ＣＰＵバス１６−２）の動作を停止する（ステップＳ２）。ステップＳ２においては、例えば、ＣＰＵ内部におけるエラー、又は、検査回路１００によるエラーが検出された場合は、切替／再同期制御回路１０５は、エラーの発生したＣＰＵバスを無効にする。ＣＰＵバス同期検査回路１０１によるエラー検出が行われた場合、切替／再同期制御回路１０５は、切替制御レジスタ１０２の設定内容に従って、異常ＣＰＵバスを無効にする。【００９７】
次に、異常ＣＰＵバスの動作の停止が完了すると、切替／再同期制御回路１０５は、自システムボードの有効なＣＰＵバスに接続されているＣＰＵ（正常ＣＰＵ）へ、ＣＰＵバスに異常が発生した旨（例えば、ＣＰＵバス１６−２の停止）を割り込み通知する（ステップＳ３）。正常ＣＰＵへの割り込み通知が完了すると、ファームウェアが、再同期制御レジスタ１０４に設定されている再同期可否フラグを参照して、冗長ＣＰＵの再同期の実施の可否を判断する（ステップＳ４）。【００９８】
ファームウェアが、冗長ＣＰＵの再同期の実施ができない（ＮＧ）と判断した場合、ファームウェアは、切替／再同期制御回路１０５に指示して、正常ＣＰＵバスの動作を有効として、正常ＣＰＵバスにて動作を継続させる（ステップＳ１７）。ファームウェアが、冗長ＣＰＵの再同期の実施が可能である（ＯＫ）と判断した場合、ファームウェアが、ノースブリッジ１１に対し、外部命令の抑止を指示する（ステップＳ５）。具体的には、スレーブリクエスト制御回路１１１が、ファームウェアの指示に従って、リトライ制御レジスタ１０９に再同期中フラグを立てる。ファームウェアがリトライ制御レジスタ１０９に再同期中フラグを立てることにより、ＬＣＳＴ生成回路１０８が、図１５に示すグローバルアドレスクロスバー５−１から受信したＧＳＡパケットに応答し、ＧＳＡパケットに含まれる命令の発行元に対してリトライを指示することを示す処理可否情報を含むＬＣＳＴパケットを生成し、グローバルアドレスクロスバー５−１に投入する。【００９９】
従って、自システムボードに対する命令のリトライが当該命令の発行元である他のシステムボードにおいて繰り返され、他システムボードより発行されるＬＲＡパケット２０２は、他システムボード内のマスターキューに留まることとなる。その結果、以降の他システムボードから自システムボードに対して発行される命令が全て抑止されることになる。【０１００】
次に、ファームウェアが、正常ＣＰＵバスに接続されている正常ＣＰＵ（例えば、ＣＰＵバス１６−１に接続されているＣＰＵ１２−０、１２−１）に指示して、当該正常ＣＰＵの内部情報をメモリ１５−１に退避させる（ステップＳ６）。ステップＳ６においては、例えば、正常ＣＰＵバスに接続されている正常ＣＰＵが、内部情報をメモリ１５−１へ退避させることを内容とする命令を含むＬＲＡパケット２０２を、図１５に示すグローバルアドレスクロスバー５−１に投入する。そして、ＬＲＡパケット２０２の投入を受けたグローバルアドレスクロスバー５−１による各システムボードに対するＧＳＡパケットの送信、各システムボードからグローバルアドレスクロスバー５−１へのＬＣＳＴパケットの投入、グローバルアドレスクロスバー５−１から各システムボードへのＧＣＳＴパケットの送信、ＧＣＳＴパケットを受信したシステムボードが備えるスレーブリクエスト制御回路によるスレーブリクエストの発行という一連の処理が行われ、上記正常ＣＰＵの内部情報がメモリ１５−１に退避される。【０１０１】
また、ファームウェアが、正常ＣＰＵバスに接続されているＣＰＵ（例えば、ＣＰＵバス１０６−１に接続されているＣＰＵ１０２−０、１０２−１）に指示し、正常ＣＰＵ内部で保持しているキャッシュデータをメモリ１５−１に退避させる（ステップＳ７）。ステップＳ７においては、更に、ファームウェアが、キャッシュデータのメモリ１５−１への退避が完了する毎に、リセット制御レジスタ１０３内における、キャッシュデータの退避が完了したＣＰＵに対応する退避完了フラグを立てる。【０１０２】
ファームウェアが、全てのＣＰＵのキャッシュデータがメモリ１５−１に退避されるのを待つ（ステップＳ８）。リセット制御レジスタ１０３の各ＣＰＵに対応したフラグが全て立ち、全てのＣＰＵのキャッシュデータがメモリ１５−１に退避されると、図１８のステップＳ９において、切替／再同期制御回路１０５が、スヌープタグ１１０に保持されているＣＰＵのキャッシュステート情報をクリアする（ステップＳ９）。そして、切替／再同期制御回路１０５が、自システムボード内の全ＣＰＵに対しリセットを発行する（ステップＳ１０）。【０１０３】
その後、ファームウェアが、全ＣＰＵに対し、上記図１７のステップＳ６においてメモリ１５−１に退避されたＣＰＵの内部情報の復元を要求する（ステップＳ１１）。異常ＣＰＵバス（例えば、ＣＰＵバス１６−２）に接続されているＣＰＵ（例えば、ＣＰＵ１２−２、ＣＰＵ１２−３）は、冗長構成のペアであった正常ＣＰＵ（例えば、ＣＰＵ１２−０、ＣＰＵ１２−１）の内部情報を用いて、自ＣＰＵの内部情報の復元を行う。例えば、図１６に示すＣＰＵ１２−３は、ＣＰＵ１２−１の内部情報をメモリ１５−１から読み出して自ＣＰＵ内に復元し、ＣＰＵ１２−２は、ＣＰＵ１２−０の内部情報をメモリ１５−１から読み出して自ＣＰＵ内に復元する。なお、ＣＰＵ１２−０、ＣＰＵ１２−１は、それぞれ、ＣＰＵ１２−０の内部情報、ＣＰＵ１２−１の内部情報をメモリ１５−１から読み出して自ＣＰＵ内に復元する。【０１０４】
上記ステップＳ１１の処理の手順の例について説明する。ファームウェアから内部情報の復元の要求を受けた各ＣＰＵは、内部情報の復元命令を含むＬＲＡパケット２０２をグローバルアドレスクロスバー５−１に投入する。そして、ＬＲＡパケット２０２の投入を受けたグローバルアドレスクロスバー５−１による各システムボードに対するＧＳＡパケットの送信、各システムボードからのＬＣＳＴパケットのグローバルアドレスクロスバー５−１への投入、グローバルアドレスクロスバー５−１から各システムボードへのＧＣＳＴパケットの送信、ＧＣＳＴパケットを受信したシステムボードが備えるスレーブリクエスト制御回路によるスレーブリクエストの発行という一連の処理が行われ、上記正常ＣＰＵの内部情報がメモリ１５−１からＣＰＵ内に復元される。【０１０５】
ファームウェアが、全てのＣＰＵにおいて内部情報の復元が完了したかを判断する（ステップＳ１２）。ファームウェアが、全てのＣＰＵにおいて内部情報の復元が完了したと判断すると、ファームウェアが、ノースブリッジ１１に対して、外部命令の抑止の解除を指示する（ステップＳ１３）。具体的には、ファームウェアが、スレーブリクエスト制御回路１１１に指示して、リトライ制御レジスタ１０９の再同期中フラグを無効に設定する。再同期中フラグが無効に設定されることによって、ＬＣＳＴ生成回路１０８が、グローバルアドレスクロスバー５−１から受信したＧＳＡパケットに応答して、自システムボードがＧＳＡパケットに含まれる命令の実行を継続できることを示す処理可否情報を含むＬＣＳＴパケットを生成するようになる。その結果、自システムボードが他システムボードからの命令を受け付けて、冗長ＣＰＵに当該命令を実行させることが可能となり、冗長ＣＰＵの再同期が完了する。【０１０６】
外部命令の抑止の解除が完了すると、ファームウェアが、再同期の実施回数のチェックを行って（ステップＳ１４）、図１７のステップＳ１に戻る。図１８のステップＳ１４においては、ファームウェアが、再同期の実施回数と再同期制御レジスタ１０４に設定されている再同期可能上限値との比較を行い、再同期の実施回数が再同期可能上限値未満である場合には、冗長ＣＰＵの再同期が可能であると判断して、再同期制御レジスタ１０４に、再同期可否フラグとして、例えばフラグ１を設定する。ファームウェアは、再同期の実施回数が再同期可能上限値以上である場合には、冗長ＣＰＵの再同期が可能でないと判断して、再同期制御レジスタ１０４に、再同期可否フラグとして、例えばフラグ０を設定する。【０１０７】
メモリ１５−１に退避したＣＰＵの内部情報の復元処理の途中（ステップＳ１１参照）、ファームウェアが全てのＣＰＵについての内部情報の復元の完了を待っている途中（ステップＳ１２参照）、又は、ノースブリッジ１１が外部命令の抑止の解除処理を行っている途中（ステップＳ１３参照）に、冗長ＣＰＵの同期崩れが検出されると、ノースブリッジ１１は異常発生ＣＰＵが接続されているＣＰＵバスの動作を再び停止させ、ファームウェアが、ノースブリッジ１１に対して、外部命令の抑止の解除を指示する（ステップＳ１５）。そして、正常ＣＰＵバスにて、動作を継続する（ステップＳ１６）。【０１０８】
ステップＳ１６においては、ファームウェアが、スレーブリクエスト制御回路１１１に指示して、全てのＣＰＵに対してＣＰＵスレーブリクエストを送信させるが、既に異常ＣＰＵが接続されているＣＰＵバスは停止状態にあるため、正常ＣＰＵのみにより自システムボードが実行すべき処理が実行される。また、ファームウェアが、切替／再同期制御回路１０５に指示して、正常ＣＰＵバスのみを有効として、正常ＣＰＵを通じて発行された命令のみがグローバルアドレスクロスバー５−１に投入されるようにする。【０１０９】
なお、本発明の一実施形態によれば、ファームウェアが、図１８のステップＳ１４における再同期の実施回数のチェックを、ステップＳ１４においてではなく、図１７のステップＳ４の処理において行うようにしてもよい。すなわち、図１７のステップＳ４において、ファームウェアが、冗長ＣＰＵの再同期の実施回数が、予め記憶手段に記憶された冗長ＣＰＵの再同期の実施回数の上限値以上であるかを判断し、上記冗長ＣＰＵの再同期の実施回数が冗長ＣＰＵの再同期の実施回数の上限値以上であると判断した場合、図１７のステップＳ１７に進む。ファームウェアが、上記冗長ＣＰＵの再同期の実施回数が冗長ＣＰＵの再同期の実施回数の上限値未満であると判断した場合は、図１７のステップＳ５に進む。
【産業上の利用可能性】
【０１１０】
本発明によれば、例えば、ＣＰＵ間の同期崩れが発生したときに、ＯＳを再起動させることなく、冗長ＣＰＵの再同期処理を行うことが可能となる。また、本発明による冗長ＣＰＵの再同期処理は、システム上で動作しているＯＳが有する機能に依存しないため、汎用のＯＳを用いて実現することができる。【０１１１】
また、本発明によれば、例えば、冗長ＣＰＵのうちのいずれかのＣＰＵに固定故障が生じたときに、正常ＣＰＵの運転を継続させることができる。また、本発明によれば、例えば、冗長ＣＰＵの再同期処理の途中で異常発生ＣＰＵにおいてエラーが再度発生したときにおいて、正常ＣＰＵの運転を再開させることができる。従って、本発明によれば、システムに搭載されたＣＰＵ資源を最大限活用した継続運転をすることが可能となる。
【図１】
2009040879.tif 000003
【図２】
2009040879.tif 000004
【図３】
2009040879.tif 000005
【図４】
2009040879.tif 000006
【図５】
2009040879.tif 000007
【図６】
2009040879.tif 000008
【図７】
2009040879.tif 000009
【図８】
2009040879.tif 000010
【図９】
2009040879.tif 000011
【図１０】
2009040879.tif 000012
【図１１】
2009040879.tif 000013
【図１２】
2009040879.tif 000014
【図１３】
2009040879.tif 000015
【図１４】
2009040879.tif 000016
【図１５】
2009040879.tif 000017
【図１６】
2009040879.tif 000018
【図１７】
2009040879.tif 000019
【図１８】
2009040879.tif 000020
【国際調査報告】
2009040879.tif 000021
2009040879.tif 000022
2009040879.tif 000023
2009040879.tif 000024