(57)【要約】  互いに同期動作を行うＣＰＵ１０とＣＰＵ１２とがエラーの発生を検出した場合に、ＣＰＵコントローラ１４が、ＣＰＵ１２とＣＰＵ１３とを縮退させ、ＣＰＵ１０とＣＰＵ１１とに対して再同期処理の実行を指示する。ＣＰＵ１１が、上記再同期処理の実行の指示を受けた場合に、割込みマスク設定を行い、ＣＰＵ１０が、上記再同期処理の実行の指示を受けた場合に、再同期処理の実行を留保してエラー処理を開始するとともに、ＣＰＵ１１に指示して、割込みマスクを解除させる。
2010103562.tif 000002
【特許請求の範囲】
【請求項１】
互いに同期動作を行う第１の制御装置と第２の制御装置とがエラーの発生を検出した場合に、前記第１の制御装置を含む第１の制御装置群と、前記第２の制御装置を含む第２の制御装置群とのうち、前記第２の制御装置群を縮退させる縮退制御手段と、
前記第１の制御装置群に含まれる制御装置に対して再同期処理の実行を指示する再同期処理指示手段とを備え、
前記第１の制御装置群に含まれる前記第１の制御装置とは異なる他の制御装置が、前記再同期処理の実行の指示を受けた場合に、割込みマスク設定を行い、
前記第１の制御装置群に含まれる前記第１の制御装置が、前記再同期処理の実行の指示を受けた場合に、前記再同期処理の実行を留保してエラー処理を開始するとともに、前記割込みマスク設定を行った制御装置に指示して、前記割込みマスクを解除させる
ことを特徴とする情報処理装置。
【請求項２】
前記第１の制御装置が、前記割込みマスクを解除させた制御装置に対してエラー処理割込みを発行して、エラー処理を実行させる
ことを特徴とする請求項１記載の情報処理装置。
【請求項３】
エラー処理の実行を完了した前記第１の制御装置が、前記エラー処理を実行させた制御装置に対して再同期割込みを発行して、再同期処理を実行させる
ことを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記第１の制御装置から前記再同期割込みの発行を受けた制御装置が、再同期処理を実行する制御装置が全て揃ったかを判断し、前記再同期割込みの発行を受けた制御装置が、再同期処理を実行する制御装置が全て揃ったと判断した場合に、再同期処理を実行する
ことを特徴とする請求項３記載の情報処理装置。
【請求項５】
互いに同期動作を行う第１の制御装置と第２の制御装置とがエラーの発生を検出した場合に、前記第１の制御装置を含む第１の制御装置群と、前記第２の制御装置を含む第２の制御装置群とのうち、前記第２の制御装置群を縮退させ、
前記第１の制御装置群に含まれる制御装置に対して再同期処理の実行を指示し、
前記第１の制御装置群に含まれる前記第１の制御装置とは異なる他の制御装置が、前記再同期処理の実行の指示を受けた場合に、割込みマスク設定を行い、
前記第１の制御装置群に含まれる前記第１の制御装置が、前記再同期処理の実行の指示を受けた場合に、前記再同期処理の実行を留保してエラー処理を開始するとともに、前記割込みマスク設定を行った制御装置に指示して、前記割込みマスクを解除させる
ことを特徴とする情報処理装置の制御方法。
【請求項６】
前記第１の制御装置が、前記割込みマスクを解除させた制御装置に対してエラー処理割込みを発行して、エラー処理を実行させる
ことを特徴とする請求項５記載の情報処理装置の制御方法。
【請求項７】
エラー処理の実行を完了した前記第１の制御装置が、前記エラー処理を実行させた制御装置に対して再同期割込みを発行して、再同期処理を実行させる
ことを特徴とする請求項６記載の情報処理装置の制御方法。
【請求項８】
前記第１の制御装置から前記再同期割込みの発行を受けた制御装置が、再同期処理を実行する制御装置が全て揃ったかを判断し、前記再同期割込みの発行を受けた制御装置が、再同期処理を実行する制御装置が全て揃ったと判断した場合に、再同期処理を実行する
ことを特徴とする請求項７記載の情報処理装置の制御方法。
【請求項９】
互いに同期動作を行う第１の制御装置と第２の制御装置とがエラーの発生を検出した場合に、前記第１の制御装置を含む第１の制御装置群と、前記第２の制御装置を含む第２の制御装置群とのうち、前記第２の制御装置群を縮退させる縮退制御手段と、前記第１の制御装置群に含まれる制御装置に対して再同期処理の実行を指示する再同期処理指示手段とを備える情報処理装置の制御プログラムであって、
コンピュータに、
前記第１の制御装置群に含まれる前記第１の制御装置とは異なる他の制御装置が、前記再同期処理の実行の指示を受けた場合に、割込みマスク設定を行う処理と、
前記第１の制御装置群に含まれる前記第１の制御装置が、前記再同期処理の実行の指示を受けた場合に、前記再同期処理の実行を留保してエラー処理を開始するとともに、前記割込みマスク設定を行った制御装置に指示して、前記割込みマスクを解除させる処理とを実行させる
ことを特徴とする情報処理装置の制御プログラム。
【請求項１０】
前記コンピュータに、更に、
前記第１の制御装置が、前記割込みマスクを解除させた制御装置に対してエラー処理割込みを発行して、エラー処理を実行させる処理を実行させる
ことを特徴とする請求項９記載の情報処理装置の制御プログラム。
【請求項１１】
前記コンピュータに、更に、
エラー処理の実行を完了した前記第１の制御装置が、前記エラー処理を実行させた制御装置に対して再同期割込みを発行して、再同期処理を実行させる処理を実行させる
ことを特徴とする請求項９記載の情報処理装置の制御プログラム。
【請求項１２】
前記コンピュータに、更に、
前記第１の制御装置から前記再同期割込みの発行を受けた制御装置が、再同期処理を実行する制御装置が全て揃ったかを判断し、前記再同期割込みの発行を受けた制御装置が、再同期処理を実行する制御装置が全て揃ったと判断した場合に、再同期処理を実行する処理を実行させる
ことを特徴とする請求項９記載の情報処理装置の制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理装置の制御方法、及び情報処理装置の制御プログラムに関する。
【背景技術】
【０００２】
まず、一般的なＣＰＵ（Central Processing Unit ：中央処理装置）同期動作について説明する。高信頼性が求められるコンピュータシステムでは、ＣＰＵを２重化し、お互いに同期動作させることで、一方のＣＰＵに故障が発生した場合も、もう一方のＣＰＵにて処理を継続する方式を採用している。【０００３】
ＣＰＵを同期動作している場合、ＣＰＵの故障やＣＰＵの外部デバイスの故障等の影響により、ＣＰＵの同期ずれが発生する場合がある。ＣＰＵの同期ずれとは、同期動作しているＣＰＵ間で、ＣＰＵが発行する命令が異なることである。例えば、ＣＰＵが発行したリード命令のアドレスが、同期動作しているＣＰＵ間で互いに異なる場合や、リード命令を発行するタイミングが１クロックずれていることなどが、ＣＰＵの同期ずれに該当する。【０００４】
ここで、コンピュータシステムが備えるＣＰＵがエラーを検出し、ＣＰＵの同期ずれが発生する場合として、以下に記述するケース１又はケース２の場合が考えられる。【０００５】
ケース１：同期動作しているＣＰＵのうち、一方のＣＰＵがエラーを検出した場合
ケース２：同期動作しているＣＰＵのうち、両方のＣＰＵが同時にエラーを検出した場合
一般的に、上記ケース１、ケース２の場合に対しては、以下の動作を行うことが望まれる。ケース１の場合については、コンピュータシステムが、エラーを検出したＣＰＵを縮退する。もしくは、コンピュータシステムが、エラー発生が所定の回数以上になるまでは、ＣＰＵを再同期し、同期動作を継続する。ケース２の場合については、コンピュータシステムが、エラー内容を記録して、コンピュータシステムを停止する。但し、エラー内容が復旧可能なものである場合は、コンピュータシステムが、エラーを復旧した後、ＣＰＵ同期動作にて動作を継続する。【０００６】
次に、コンピュータシステムが、ＣＰＵと接続されているＣＰＵコントローラを備える構成をとる場合において、ＣＰＵで同期ずれが発生したときの、一般的なＣＰＵコントローラの動作について説明する。ＣＰＵコントローラは、例えばノースブリッジ（North Bridge）と呼ばれるチップセット等である。【０００７】
ＣＰＵ同期動作を行う場合は、一般に、ＣＰＵコントローラが、同期ずれの検出、エラーが発生した側のＣＰＵの縮退などの制御を行う。一方、例えばＩＮＴＥＬ（登録商標）アーキテクチャのＣＰＵでは、ＣＰＵを縮退する場合、ＣＰＵコントローラと共通のバスで接続されているＣＰＵ単位でのみＣＰＵを縮退させることが可能なものが存在する。つまり、コンピュータシステムが、共通のバス上に複数のＣＰＵが接続される構成をとる場合、一つのＣＰＵの中に複数のＣＰＵコアが搭載されている構成をとる場合、又は、一つのＣＰＵコアにて複数の論理ＣＰＵが動作する場合には、ある一つのＣＰＵで同期ずれが発生すると、ＣＰＵコントローラは、同期ずれの発生したＣＰＵと共通のバスで接続されている全てのＣＰＵを縮退する。ここで、ある一つのＣＰＵで同期ずれが発生した際は、同期ずれの発生したＣＰＵと共通のバス上に接続されている全てのＣＰＵが再同期処理を実行することが必要となる。【０００８】
次に、Ｗｉｎｄｏｗｓ（登録商標）等、汎用ＯＳ（Operating System：オペレーティングシステム）を使用し、ＣＰＵの再同期処理を行う場合について説明する。Ｗｉｎｄｏｗｓ等、汎用ＯＳでは、ＯＳの製造メーカと、コンピュータシステムの製造メーカとが異なる。また、汎用ＯＳは様々な仕様のコンピュータシステムにて動作しなければならないため、汎用ＯＳがコンピュータシステムの仕様に特化した処理を行うことは困難である。したがって、汎用ＯＳにて、ＣＰＵの同期ずれに対応する処理を行う場合は、ＯＳのサポートなしに、ＯＳの通常動作に影響を与えないように処理を行う必要がある。具体的には以下の（１）及び（２）に示すような処理を行うことが必要となる。
（１）ＣＰＵの同期ずれを検出した場合、コンピュータシステムのＢＩＯＳ（Basic Input/Output System ：バイオス）等ファームウェア処理に制御を渡すための割込み（以下、同期ずれ割込みと呼ぶ）を発行し、ＢＩＯＳ等ファームウェア処理にて再同期処理を行う。
（２）ＯＳの処理に影響を与えないように、再同期処理中は割込みをマスクするなどし、最小限の時間で再同期処理を行う。【０００９】
次に、ＣＰＵ以外のデバイスに障害が発生した場合の、一般的なコンピュータシステムの動作について説明する。ＣＰＵ以外のデバイスに障害が発生すると、同期動作を行っている両方のＣＰＵが同時にエラーを検出する場合がある。例えば、ＣＰＵが、ビデオコントローラやＬＡＮコントローラ等のＩＯ（Input Output：入出力）デバイスへのリードを行った際に、ＩＯデバイスにてハードウェア障害が発生する場合である。ＩＯデバイスにてハードウェア障害が発生すると、ＩＯコントローラが障害を検出し、ＣＰＵに対して、障害発生を知らせるデータ（一般的にＰｏｉｓｏｎデータと呼ばれるデータなど）を返す。その結果、同期動作を行っている両方のＣＰＵが、障害発生を知らせるデータを同時にリードし、エラーを検出する。【００１０】
同期動作しているＣＰＵがＣＰＵ以外のデバイスの障害が原因となるエラーを同時に検出した場合、ＣＰＵは、同期動作を継続することが可能である場合が多い。同期動作しているＣＰＵが全く同じ内容のエラーを検出するため、エラー処理も全く同じとなることが多いためである。一方、ＣＰＵコントローラは、同期動作している両方のＣＰＵが同時にエラーを検出した場合、ＣＰＵ自身が原因なのか、ＣＰＵ以外のデバイスが原因なのか、また、ＣＰＵが同期動作したまま障害解析処理を行うことが可能なのか、不可能なのかを判断することができない。したがって、ＣＰＵコントローラは、両方のＣＰＵが同時にエラーを検出した場合は、同期ずれとして処理するか、それとも同期動作のまま処理するかを、予め決定しておく必要がある。しかし、ＣＰＵコントローラが、同期動作のまま処理することを予め決定している場合は、以後、同期ずれが発生した時に、障害解析処理中に同期ずれが発生したのか、障害解析処理完了後に同期ずれが発生したのか、また、同期ずれの原因が元々のＣＰＵエラーなのか、又は新たな要因なのか等の判定を行うことが困難である。障害解析処理中に、元々のＣＰＵエラーが原因で同期ずれとなった場合は、エラーが１回発生したとして処理を行えばよいが、障害解析処理完了後に別要因にて同期ずれとなった場合は、エラーが２回発生したとして処理を行う必要がある。つまり、同期動作のまま処理すると決定した場合、その後別のエラーが発生した場合に正しく処理を行うことが困難となってしまう。したがって、同期動作を行っている両方のＣＰＵが同時にエラーを検出した場合、ＣＰＵコントローラは、同期ずれとして処理し、ＢＩＯＳ等ファームウェアにて再同期の要否などを判断するのが一般的である。【００１１】
なお、既存のＯＳ又はＩ／Ｏデバイスドライバを改造することなく、Ｉ／Ｏデバイスの二重化制御を行うＦＴ（Fault Tolerant：フォールトトレラント）コンピュータシステムが提案されている。
【特許文献１】特開２００６−１７２２２０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
例えば、同期動作を行っている両方のＣＰＵが同時にエラーを検出した場合に、同期ずれとして処理するＣＰＵコントローラを備えるコンピュータシステムの動作について説明する。【００１３】
ＢＩＯＳ等ファームウェアは、同期動作を行っているＣＰＵが同時にエラーを検出した場合の障害解析処理として、以下の（ａ）及び（ｂ）に示す動作を行う必要がある。
（ａ）ＣＰＵが検出したエラーに対して障害解析処理を行う。
（ｂ）エラーが復旧可能なものである場合には、エラーを復旧した後、ＣＰＵを再同期させ、同期動作を継続する。【００１４】
上記（ａ）及び（ｂ）に示す動作を実現するための、同期動作中のＣＰＵが同時にエラーを検出した場合の処理について、図２３乃至図２６を参照して説明する。【００１５】
図２３及び図２４は、ＣＰＵがエラーを検出した場合の動作処理フローの例である。まず、ＣＰＵ（のハードウェア）がエラーを検出する（図２３のステップＳ１）。ＣＰＵが割込みマスクに設定し、ファームウェア（例えば、ＢＩＯＳ等）のエラー処理を開始する（ステップＳ２）。次に、ＣＰＵがファームウェアの指示に従って、エラー要因の調査を行い、エラーをログする（ステップＳ３）。続いて、ＣＰＵが、ファームウェアの指示に従って、障害が復旧可能かを判断する（ステップＳ４）。ステップＳ４において、ＣＰＵが、障害が復旧可能であると判断した場合、ＣＰＵが、ファームウェアの指示に従って、障害復旧処理を実行し（ステップＳ１０）、図２４のステップＳ１２に進む。ＣＰＵが、障害が復旧可能でないと判断した場合は、ＣＰＵが、ファームウェアの指示に従って、ＯＳのエラー処理をＣａｌｌする（図２３のステップＳ５）。ＯＳのエラー処理は、ＯＳが指示するエラー処理である。そして、ＣＰＵが、ＯＳのエラー処理を開始する（ステップＳ６）。【００１６】
次に、ＣＰＵが、共通のバスで接続された他のＣＰＵに対して、ＯＳのエラー処理割込みを発行する（図２４のステップＳ７）。ＯＳのエラー処理割込みは、他のＣＰＵにＯＳのエラー処理を実行させるための割込みである。ステップＳ７においては、ＣＰＵは、更に、他のＣＰＵと同期をとりながらエラー処理を実行する。【００１７】
次に、ＯＳが、障害が復旧可能であるかを判断する（ステップＳ８）。ＯＳが、障害が復旧不可能であると判断した場合、ＯＳがシステムを停止させる（ステップＳ９）。ＯＳが、障害が復旧可能であると判断した場合、ＯＳが障害復旧処理を行うとともに、ファームウェアのエラー処理への復帰処理を行う（ステップＳ１１）。続いて、ＣＰＵが、ファームウェアの指示に従って、エラー処理から復帰する（ステップＳ１２）。そして、ＣＰＵが、割込みマスクを解除して（ステップＳ１３）、通常処理に戻る（ステップＳ１４）。【００１８】
図２５は、ＣＰＵコントローラが再同期割込みを発行した場合の動作処理フローの例である。まず、同期動作中の両方のＣＰＵが同時にエラーを検出する（ステップＳ２１）。次に、両方のＣＰＵが、ＣＰＵコントローラに対して、エラー通知を同時に行う（ステップＳ２２）。続いて、ＣＰＵコントローラが、一方のＣＰＵ（片側ＣＰＵ）を縮退させ、縮退させなかったＣＰＵと、このＣＰＵと共通のバスに接続された他のＣＰＵに再同期割込みを発行する（ステップＳ２３）。再同期割込みは、同期ずれが発生したことを通知するための割込みである。続いて、ＣＰＵが、割込みマスクに設定し、ファームウェアの再同期処理、すなわち、ファームウェアの指示に従う再同期処理を開始する（ステップＳ２４）。ＣＰＵが、ファームウェアの指示に従って、再同期処理を行うＣＰＵが全て揃ったかを判断する（ステップＳ２５）。ＣＰＵが、再同期処理を行うＣＰＵが揃っていないと判断した場合は、ステップＳ２５に戻る。ＣＰＵが、再同期処理を行うＣＰＵが全て揃ったと判断した場合、ＣＰＵが、ファームウェアの指示に従って、再同期処理を実行する（ステップＳ２６）。次に、ＣＰＵが、ファームウェアの指示に従って、再同期処理から復帰する（ステップＳ２７）。続いて、ＣＰＵが、割込みマスクを解除し（ステップＳ２８）、通常処理（ＣＰＵ同期動作）に戻る（ステップＳ２９）。【００１９】
図２６は、図２４のステップＳ７において発行されたＯＳのエラー処理割込みを受けたＣＰＵの動作処理フローの例である。ＣＰＵがＯＳのエラー処理割込みを受けると（ステップＳ３１）、ＣＰＵが、割込みマスクに設定し、ＯＳのエラー処理を開始する（ステップＳ３２）。すなわち、ＣＰＵが、ＯＳの指示に従って、ＯＳのエラー処理を実行する（ステップＳ３３）。ＣＰＵが、ＯＳのエラー処理から復帰すると（ステップＳ３４）、ＣＰＵが、割込みマスクを解除して（ステップＳ３５）、通常処理に戻る（ステップＳ３６）。【００２０】
図２７乃至図３４は、同期動作中のＣＰＵが同時にエラーを検出した場合の処理の詳細例を示す図である。図２７は、ＣＰＵが同期動作しており、エラーを検出していない状態の例を示す。図２７において、ＣＰＵ１００とＣＰＵ１０２とが同期動作している。ＣＰＵ１０１とＣＰＵ１０３とが同期動作している。ＣＰＵ１００とＣＰＵ１０１とが、共通のバス１０５を介してＣＰＵコントローラ１０４と接続されている。また、ＣＰＵ１０２とＣＰＵ１０３とが、共通のバス１０６を介してＣＰＵコントローラ１０４と接続されている。各々のＣＰＵは通常処理（ＯＳの通常処理）を実行している（図２７の＃１乃至＃４を参照）。【００２１】
図２８は、同期動作している両方のＣＰＵがエラーを検出した状態の例を示す。この例では、ＣＰＵ１００とＣＰＵ１０２とが同時にエラーを検出する（図２８の＃５及び＃６を参照）。エラーを検出したＣＰＵ１００とＣＰＵ１０２が、ＣＰＵコントローラ１０４に対してエラーを検出したことを通知する（図２８の＃７を参照）。続いて、ＣＰＵ１００とＣＰＵ１０２とが、ファームウェアのエラー処理を開始する（図２８の＃８及び＃９を参照）。【００２２】
図２９は、ＣＰＵコントローラが、エラーを検出したＣＰＵのいずれか一方と、そのＣＰＵと共通のバスに接続されているＣＰＵとを縮退した状態の例を示す。この例では、ＣＰＵコントローラ１０４は、ＣＰＵ１０２と、ＣＰＵ１０２とバス１０６で接続されているＣＰＵ１０３とを縮退させる（図２９の＃１０を参照）。エラー検出のタイミングが異なる場合、ＣＰＵコントローラ１０４が、より早くエラーを検出したＣＰＵを縮退するようにしてもよい。続いて、ＣＰＵコントローラ１０４が、縮退させなかった側のＣＰＵであるＣＰＵ１００とＣＰＵ１０１とに対して、再同期割込みを発行する（図２９の＃１１）。【００２３】
図３０は、縮退しない側のＣＰＵが再同期割込みを受けた状態の例を示す。この例では、エラーを検出したＣＰＵ１００とエラーを検出していないＣＰＵ１０１とにおいて、以下の動作を実行する。ＣＰＵ１００が、ファームウェアのエラー処理を実行する。再同期割込みはペンディングされる（図３０の＃１２を参照）。ＣＰＵ１０１は、割込みマスクに設定した上で、ＣＰＵの再同期処理を開始する。ＣＰＵの再同期処理は、短時間で完了する必要がある。従って、ＣＰＵ１０１は、割込みマスク状態のままＣＰＵの再同期処理を実行する（図３０の＃１３を参照）。【００２４】
図３１は、ＯＳのエラー処理を実行するＣＰＵ１００が、ＣＰＵ１０１にＯＳのエラー処理割込みを発行した状態の例を示す。ＣＰＵ１００が、ＯＳのエラー処理を実行し（図３１の＃１４を参照）、ＣＰＵ１０１に対して、ＯＳのエラー処理割込みを発行する（図３１の＃１５を参照）。一方、ＣＰＵ１０１は、ＣＰＵ１００からＯＳのエラー処理割込みを受けたにもかかわらず、再同期処理を実行する。すなわち、ＣＰＵ１０１は、割込みマスク状態にあるため、ＯＳのエラー処理を実行できない（図３１の＃１６を参照）。【００２５】
図３２は、ＣＰＵ１００がエラーの復旧処理を行った状態の例を示す。ＣＰＵ１００が、ＯＳのエラー処理を実行する。障害復旧が可能である場合、障害復旧処理が行われる（図３２の＃１７を参照）。【００２６】
図３３は、ＣＰＵ１００がエラー処理から復帰した状態の例を示す。ＣＰＵ１００がエラー処理から通常処理に復帰し、ペンディングされていた再同期割込みを受け付け、再同期処理を開始する（図３３の＃１８）。【００２７】
図３４は、ＣＰＵ１００及びＣＰＵ１０１が再同期処理を完了した後の状態の例を示す。ＣＰＵ１００及びＣＰＵ１０１は、再同期処理を完了すると、ＯＳの通常処理に復帰する（図３４の＃１９、＃２０を参照）。ＣＰＵ１００、ＣＰＵ１０１は、それぞれ、ＣＰＵ１０２、ＣＰＵ１０３と同期動作し、その結果、ＣＰＵ１０２、ＣＰＵ１０３は通常処理を実行する（図３４の＃２１、＃２２を参照）。【００２８】
ここで、図２７乃至図３４を参照して前述したような、同期動作中のＣＰＵが同時にエラーを検出した場合の処理には、以下に述べるような問題がある。Ｗｉｎｄｏｗｓ等、汎用ＯＳを使用するコンピュータシステムにおいては、エラー処理を行う場合は、エラーを検出したＣＰＵだけでなく、エラーを検出していないＣＰＵもエラー処理を行う必要がある。例えば、エラー処理にてエラー発生時のメモリダンプ情報を取得する場合、コンピュータシステムの全てのＣＰＵに割込みを発行し、キャッシュ情報をメモリにコピーさせた後に、メモリ情報をハードディスク等に格納し、後でエラー発生原因を調査する際などに使用する。【００２９】
しかし、図３１を参照して前述したように、エラーを検出していないＣＰＵであるＣＰＵ１０１は、割込みマスク状態にあるため、ＣＰＵ１００からＯＳのエラー処理割込みを受けたにもかかわらず、ＯＳのエラー処理を実行できない。従って、図２７乃至図３４を参照して前述したような処理では、例えばＷｉｎｄｏｗｓ等、汎用ＯＳのエラー処理にて発行されるＯＳのエラー処理割込みを、エラーを検出していないＣＰＵが割込みを受けることができず、エラー処理を実行することができないという問題が発生する。【００３０】
本発明は、同期動作中の制御装置（例えばＣＰＵ）が同時にエラーを検出した場合において、エラーを検出していないＣＰＵがＯＳのエラー処理を実行することができるようにする情報処理装置の提供を目的とする。【００３１】
また、本発明は、同期動作中の制御装置が同時にエラーを検出した場合において、エラーを検出していない制御装置がＯＳのエラー処理を実行することができるようにする情報処理装置の制御方法の提供を目的とする。【００３２】
また、本発明は、同期動作中の制御装置が同時にエラーを検出した場合において、エラーを検出していないＣＰＵがＯＳのエラー処理を実行することができるようにする情報処理装置の制御プログラムの提供を目的とする。
【課題を解決するための手段】
【００３３】
本情報処理装置は、互いに同期動作を行う第１の制御装置と第２の制御装置とがエラーの発生を検出した場合に、前記第１の制御装置を含む第１の制御装置群と、前記第２の制御装置を含む第２の制御装置群とのうち、前記第２の制御装置群を縮退させる縮退制御手段と、前記第１の制御装置群に含まれる制御装置に対して再同期処理の実行を指示する再同期処理指示手段とを備える。前記第１の制御装置群に含まれる前記第１の制御装置とは異なる他の制御装置が、前記再同期処理の実行の指示を受けた場合に、割込みマスク設定を行い、前記第１の制御装置群に含まれる前記第１の制御装置が、前記再同期処理の実行の指示を受けた場合に、前記再同期処理の実行を留保してエラー処理を開始するとともに、前記割込みマスク設定を行った制御装置に指示して、前記割込みマスクを解除させる。【００３４】
また、本情報処理装置の制御方法は、互いに同期動作を行う第１の制御装置と第２の制御装置とがエラーの発生を検出した場合に、前記第１の制御装置を含む第１の制御装置群と、前記第２の制御装置を含む第２の制御装置群とのうち、前記第２の制御装置群を縮退させ、前記第１の制御装置群に含まれる制御装置に対して再同期処理の実行を指示し、前記第１の制御装置群に含まれる前記第１の制御装置とは異なる他の制御装置が、前記再同期処理の実行の指示を受けた場合に、割込みマスク設定を行い、前記第１の制御装置群に含まれる前記第１の制御装置が、前記再同期処理の実行の指示を受けた場合に、前記再同期処理の実行を留保してエラー処理を開始するとともに、前記割込みマスク設定を行った制御装置に指示して、前記割込みマスクを解除させる。【００３５】
また、本情報処理装置の制御プログラムは、互いに同期動作を行う第１の制御装置と第２の制御装置とがエラーの発生を検出した場合に、前記第１の制御装置を含む第１の制御装置群と、前記第２の制御装置を含む第２の制御装置群とのうち、前記第２の制御装置群を縮退させる縮退制御手段と、前記第１の制御装置群に含まれる制御装置に対して再同期処理の実行を指示する再同期処理指示手段とを備える情報処理装置の制御プログラムであって、コンピュータに、前記第１の制御装置群に含まれる前記第１の制御装置とは異なる他の制御装置が、前記再同期処理の実行の指示を受けた場合に、割込みマスク設定を行う処理と、前記第１の制御装置群に含まれる前記第１の制御装置が、前記再同期処理の実行の指示を受けた場合に、前記再同期処理の実行を留保してエラー処理を開始するとともに、前記割込みマスク設定を行った制御装置に指示して、前記割込みマスクを解除させる処理とを実行させる。
【発明の効果】
【００３６】
本情報処理装置、本情報処理装置の制御方法、及び本情報処理装置の制御プログラムによれば、同期動作中の制御装置が同時にエラーを検出した場合において、エラーを検出していない制御装置がＯＳのエラー処理を実行することができる。
【図面の簡単な説明】
【００３７】
【図１】本実施形態の情報処理装置の構成例を示す図である。
【図２】本実施形態の情報処理装置の他の構成例を示す図である。
【図３】本実施形態の情報処理装置の他の構成例を示す図である。
【図４】本実施形態の情報処理装置の他の構成例を示す図である。
【図５】本実施形態の情報処理装置の他の構成例を示す図である。
【図６】情報処理装置が備えるＣＰＵがエラーを検出した場合の動作処理フローの例を示す図である。
【図７】情報処理装置が備えるＣＰＵがエラーを検出した場合の動作処理フローの例を示す図である。
【図８】ＣＰＵコントローラが再同期割込みを発行した場合の動作処理フローの例を示す図である。
【図９】ＣＰＵコントローラが再同期割込みを発行した場合の動作処理フローの例を示す図である。
【図１０】エラーを検出したＣＰＵから再同期割込みを受けるＣＰＵの動作処理フローの例を示す図である。
【図１１】エラーを検出したＣＰＵから再同期割込みを受けるＣＰＵの動作処理フローの例を示す図である。
【図１２】ＯＳのエラー処理割込みを受けたＣＰＵの動作処理フローの例を示す図である。
【図１３】同期動作中のＣＰＵが同時にエラーを検出した場合の処理の詳細例を示す図である。
【図１４】同期動作中のＣＰＵが同時にエラーを検出した場合の処理の詳細例を示す図である。
【図１５】同期動作中のＣＰＵが同時にエラーを検出した場合の処理の詳細例を示す図である。
【図１６】同期動作中のＣＰＵが同時にエラーを検出した場合の処理の詳細例を示す図である。
【図１７】同期動作中のＣＰＵが同時にエラーを検出した場合の処理の詳細例を示す図である。
【図１８】同期動作中のＣＰＵが同時にエラーを検出した場合の処理の詳細例を示す図である。
【図１９】同期動作中のＣＰＵが同時にエラーを検出した場合の処理の詳細例を示す図である。
【図２０】同期動作中のＣＰＵが同時にエラーを検出した場合の処理の詳細例を示す図である。
【図２１】同期動作中のＣＰＵが同時にエラーを検出した場合の処理の詳細例を示す図である。
【図２２】同期動作中のＣＰＵが同時にエラーを検出した場合の処理の詳細例を示す図である。
【図２３】ＣＰＵがエラーを検出した場合の動作処理フローの例である。
【図２４】ＣＰＵがエラーを検出した場合の動作処理フローの例である。
【図２５】ＣＰＵコントローラが再同期割込みを発行した場合の動作処理フローの例である。
【図２６】ＯＳのエラー処理割込みを受けたＣＰＵの動作処理フローの例である。
【図２７】同期動作中のＣＰＵが同時にエラーを検出した場合の処理の詳細例を示す図である。
【図２８】同期動作中のＣＰＵが同時にエラーを検出した場合の処理の詳細例を示す図である。
【図２９】同期動作中のＣＰＵが同時にエラーを検出した場合の処理の詳細例を示す図である。
【図３０】同期動作中のＣＰＵが同時にエラーを検出した場合の処理の詳細例を示す図である。
【図３１】同期動作中のＣＰＵが同時にエラーを検出した場合の処理の詳細例を示す図である。
【図３２】同期動作中のＣＰＵが同時にエラーを検出した場合の処理の詳細例を示す図である。
【図３３】同期動作中のＣＰＵが同時にエラーを検出した場合の処理の詳細例を示す図である。
【図３４】同期動作中のＣＰＵが同時にエラーを検出した場合の処理の詳細例を示す図である。
【符号の説明】
【００３８】
１  情報処理装置
１０、１１、１２、１３  ＣＰＵ
１４  ＣＰＵコントローラ
１５  ＲＯＭ
１６  メモリ
１７  ＩＯコントローラ
１８  ハードディスクコントローラ
１９  ＬＡＮコントローラ
２０  ビデオコントローラ
２１  ハードディスク
３１、３２  バス
１４１  ＣＰＵエラー通知受信部
１４２  ＣＰＵ縮退制御部
１４３  再同期割込み発行部
１５１  ファームウェア
２０１  エラー処理プログラム
２０２  ＣＰＵ再同期処理プログラム
２１１  ＯＳ
【発明を実施するための最良の形態】
【００３９】
図１は、本実施形態の情報処理装置の構成例を示す図である。本実施形態の情報処理装置１は、ＣＰＵ１０乃至１３、ＣＰＵコントローラ１４、ＲＯＭ（Read Only Memory）１５、メモリ１６、ＩＯコントローラ１７、ハードディスクコントローラ１８、ＬＡＮコントローラ１９、ビデオコントローラ２０、ハードディスク２１を備える。【００４０】
本実施形態においては、ＣＰＵ１０とＣＰＵ１２とが互いに同期動作を行い、ＣＰＵ１１とＣＰＵ１３とが互いに同期動作を行う。また、ＣＰＵ１０とＣＰＵ１１とが、共通のバスであるバス３１を介してＣＰＵコントローラ１４と接続されている。すなわち、ＣＰＵ１０とＣＰＵ１１とが、第１の制御装置群を構成している。また、ＣＰＵ１２とＣＰＵ１３とが、共通のバスであるバス３２を介してＣＰＵコントローラ１４と接続されている。すなわち、ＣＰＵ１２とＣＰＵ１３とが、第２の制御装置群を構成している。【００４１】
各々のＣＰＵ（のハードウェア）は、情報処理装置１におけるエラーの発生を検出した場合に、エラーの発生をＣＰＵコントローラ１４に通知する。また、後述するＣＰＵコントローラ１４によって縮退されなかった制御装置群に含まれるＣＰＵは、ＢＩＯＳ等のファームウェア１５１が備えるエラー処理プログラム２０１又はＣＰＵ再同期処理プログラム２０２をＲＯＭ１５から読み込んで、読み込んだプログラムの指示に応じた処理を実行する。具体的には、エラーの発生を検出したＣＰＵが、ＲＯＭ１５からエラー処理プログラム２０１を読み込んで、エラー処理プログラム２０１の指示に従った処理（ファームウェアのエラー処理）を実行する。また、後述するＣＰＵコントローラ１４が備える再同期割込み発行部１４３から発行される再同期割込みを受けたＣＰＵが、ＲＯＭ１５からＣＰＵ再同期処理プログラム２０２を読み込んで、ＣＰＵ再同期処理プログラム２０２の指示に従った処理（再同期処理）を実行する。なお、上記ファームウェアのエラー処理を実行したＣＰＵは、障害が復旧不可能である場合に、ＯＳのエラー処理をＣａｌｌして、ハードディスク２１に記憶されているＯＳ２１１のエラー処理を実行する。【００４２】
ＣＰＵコントローラ１４は、例えばノースブリッジである。ＣＰＵコントローラ１４は、ＣＰＵエラー通知受信部１４１、ＣＰＵ縮退制御部１４２、再同期割込み発行部１４３を備える。ＣＰＵエラー通知受信部１４１は、互いに同期動作を行うＣＰＵ、例えば、ＣＰＵ１０とＣＰＵ１２がエラーの発生を検出した場合に、ＣＰＵ１０とＣＰＵ１２とから、エラーが発生したことを示す通知を受ける。ＣＰＵ縮退制御部１４２は、ＣＰＵ１０を含む第１の制御装置群と、ＣＰＵ１２を含む第２の制御装置群とのうち、第２の制御装置群を縮退させる縮退制御手段としての機能を有する。再同期割込み発行部１４３は、上記第１の制御装置群に含まれるＣＰＵに対して再同期割込みを発行することによって、再同期処理の実行を指示する。再同期割込みの発行を受けたＣＰＵは、割込みマスク設定を行った上で、ＲＯＭ１５からＣＰＵ再同期処理プログラム２０２を読み込んで、ＣＰＵ再同期処理プログラム２０２の指示に従った処理を実行する。具体的には、上記第１の制御装置群に含まれるＣＰＵのうち、エラーの発生を検出していないＣＰＵ１１が、再同期割込みの発行を受けた場合に、割込みマスク設定を行う。ここで、第１の制御装置群に含まれるＣＰＵのうち、エラーの発生を検出したＣＰＵ１０は、エラーの発生の検出後にＲＯＭ１５からエラー処理プログラム２０１を読み込む。従って、ＣＰＵ１０は、再同期割込み発行部１４３からの再同期割込みの発行を受けた場合であっても、再同期処理の実行をペンディング（留保）して、エラー処理プログラム２０１の指示するエラー処理の実行を開始する。本実施形態に特有の動作として、ＣＰＵ１０は、エラー処理プログラム２０１の指示に従って、ＣＰＵ１０がエラー処理を開始したことをＣＰＵ１１に通知する。この通知を受けたＣＰＵ１１は、割込みマスク設定を解除する。すなわち、ＣＰＵ１０が、上記割込みマスク設定を行ったＣＰＵ１１に指示して、割込みマスクを解除させる。これによって、ＣＰＵ１１が、ＯＳのエラー処理割込みを受け付けられる状態になる。【００４３】
ＲＯＭ１５には、ファームウェア１５１が予め記憶される。ファームウェア１５１は、エラー処理プログラム２０１とＣＰＵ再同期処理プログラム２０２とを備える。エラー処理プログラム２０１は、エラー処理プログラム２０１を読み込んだＣＰＵ（例えば、ＣＰＵ１０）に指示して、ファームウェアのエラー処理を実行させる。また、エラー処理プログラム２０１は、エラー処理プログラム２０１を読み込んだＣＰＵに指示して、このＣＰＵ（例えば、ＣＰＵ１０）がファームウェアのエラー処理を開始したことを、このＣＰＵと共通のバスで接続された他のＣＰＵ（例えば、ＣＰＵ１１）に通知させる。また、エラー処理プログラム２０１は、エラー処理を実行したＣＰＵについて障害が復旧可能であるかを判断する。エラー処理プログラム２０１が、障害が復旧可能であると判断した場合、エラー処理プログラム２０１（の指示を受けたＣＰＵ）が、このＣＰＵとは異なる他のＣＰＵに対してエラー処理の完了を通知するとともに、他のＣＰＵに対して再同期割込みを発行する。【００４４】
ＣＰＵ再同期処理プログラム２０２は、ＣＰＵ再同期処理プログラム２０２を読み込んだＣＰＵに指示して、通常のＣＰＵの再同期処理を実行させる。具体的には、ＣＰＵ再同期処理プログラム２０２は、ＣＰＵ再同期処理プログラム２０２を読み込んだＣＰＵに指示して、再同期処理を行うＣＰＵが全て揃ったかを判断させる。例えば、ＣＰＵ再同期処理プログラム２０２は、ＣＰＵ再同期処理プログラム２０２を読み込んだＣＰＵ１０に指示して、ＣＰＵ１０と共通のバスで接続されているＣＰＵ１１が再同期処理を実行できる状態にあるかを判断させる。再同期処理を行うＣＰＵが全て揃った場合にのみ、ＣＰＵ再同期処理プログラム２０２は、ＣＰＵ（例えばＣＰＵ１０）に指示して再同期処理を実行させる。また、ＣＰＵ再同期処理プログラム２０２は、ＣＰＵ再同期処理プログラム２０２を読み込んだＣＰＵに指示して、このＣＰＵとは異なる他のＣＰＵがエラー処理中であるかを判断させる。他のＣＰＵがエラー処理中である場合、ＣＰＵ再同期処理プログラム２０２は、ＣＰＵ再同期処理プログラム２０２を読み込んだＣＰＵを再同期処理から通常処理に復帰させ、ＯＳからの割込みを受け付けることができる状態にする。【００４５】
なお、図１中、周知のように、メモリ１６は各々のＣＰＵが処理の実行に必要なデータが記憶される記憶部である。ＩＯコントローラ１７は、ＣＰＵコントローラ１４と、ビデオコントローラ２０、ＬＡＮ（Local Area Network）コントローラ１９、ハードディスクコントローラ１８との間の情報の入出力を制御する。ビデオコントローラ２０は、各々のＣＰＵの処理内容のモニタ（図示を省略）への表示処理を制御する。ＬＡＮコントローラ１９は、情報処理装置１が属するＬＡＮに対して各々のＣＰＵの処理内容を送信する。ハードディスクコントローラ１８は、ハードディスク２１からのデータの読み込み処理、ハードディスク２１へのデータの書き込み処理を制御する。
本実施形態の情報処理装置の機能は、ＣＰＵとその上で実行されるプログラムにより実現される。このプログラムは、コンピュータが読み取り可能な記録媒体に格納することができ、該記録媒体に記録して提供され、又は、通信インタフェースを介してネットワークを利用した送受信により提供される。【００４６】
本実施形態の情報処理装置が、図２に示すような構成を有する情報処理装置２−１であってもよい。情報処理装置２−１においては、図１に示すＣＰＵコントローラ１４と同様の機能（ＣＰＵコントローラ機能）を有するＣＰＵコントローラ３０と、図１に示す各々のＣＰＵと同様の機能を有するＣＰＵコア４１乃至４４とが、一つのＣＰＵ３内に設けられている。また、本実施形態の情報処理装置が、図３に示すような構成を有する情報処理装置２−２であってもよい。情報処理装置２−２においては、ＲＯＭ１５がＩＯコントローラ１７に接続されている。【００４７】
また、本実施形態の情報処理装置が、図４に示すような構成を有する情報処理装置２−３であってもよい。情報処理装置２−３は、２つのＣＰＵコントローラ１４ー１、１４−２を備える。ＣＰＵ２００とＣＰＵ２０１とがＣＰＵコントローラ１４−１に接続され、ＣＰＵ２０２とＣＰＵ２０３とがＣＰＵコントローラ１４−２に接続されている。また、ＣＰＵコントローラ１４−１にメモリ１６−１、ＲＯＭ１５−１が接続され、ＣＰＵコントローラ１４−２にメモリ１６−２、ＲＯＭ１５−２が接続されている。メモリ１６−１、１６−２は図１に示すメモリ１６と同様の機能を有する。ＲＯＭ１５−１、ＲＯＭ１５−２は、図１に示すＲＯＭ１５と同様の機能を有する。ＣＰＵコントローラ１４−１、１４−２は、図１に示すＣＰＵコントローラ１４と同様のＣＰＵコントローラ機能を有する。また、ＣＰＵコントローラ１４−１、１４−２は、互いに、自分に接続されているＣＰＵの動作状況を相手のＣＰＵコントローラに通知し合って、自分に接続されているＣＰＵが相手のＣＰＵコントローラに接続されているＣＰＵと同期しているかを判断する。例えば、ＣＰＵコントローラ１４−１が、ＣＰＵ２００とＣＰＵ２０１の動作状況をＣＰＵコントローラ１４−２に通知し、ＣＰＵコントローラ１４−２が、ＣＰＵ２０２がＣＰＵ２００と同期しているか、また、ＣＰＵ２０３がＣＰＵ２０１と同期しているかを判断する。各々のＣＰＵコントローラは、自分に接続されているＣＰＵが相手のＣＰＵコントローラに接続されているＣＰＵと同期していないと判断した場合は、自分に接続されているＣＰＵに対して再同期処理を行うように指示する（ＣＰＵ同期処理制御を実行する）。【００４８】
また、本実施形態の情報処理装置が、図５に示すような構成を有する情報処理装置２−４であってもよい。情報処理装置２−４においては、図４に示すＣＰＵコントローラ１４−１と同様の機能を有するＣＰＵコントローラ１４−３と、図４に示すＣＰＵ２００、２０１と同様の機能を有するＣＰＵコア３００、３０１とが、一つのＣＰＵ３−１内に設けられている。また、図４に示すＣＰＵコントローラ１４−２と同様の機能を有するＣＰＵコントローラ１４−４と、図４に示すＣＰＵ２０２、２０３と同様の機能を有するＣＰＵコア３０２、３０３とが、一つのＣＰＵ３−２内に設けられている。【００４９】
以下に、図１を参照して前述した情報処理装置１における、同期動作中のＣＰＵが同時にエラーを検出した場合の処理について、図６乃至図２２を参照して説明する。図６及び図７は、情報処理装置１が備えるＣＰＵがエラーを検出した場合の動作処理フローの例である。図１に示すＣＰＵ１０とＣＰＵ１１とが同時にエラーを検出したものとし、図６、図７では、エラーを検出したＣＰＵ１０の動作処理を例にとって説明する。【００５０】
情報処理装置１において障害が発生すると、ＣＰＵ１０がエラーを検出する（図６のステップＳ４１）。ＣＰＵ１０が、割込みマスクに設定し、ファームウェアのエラー処理、すなわち、ファームウェア１５１のエラー処理プログラム２０１の指示に従ったエラー処理を開始する（ステップＳ４２）。次に、ＣＰＵ１０が、エラー処理プログラム２０１の指示に従って、図１に示すＣＰＵ１１に対して、ファームウェアのエラー処理を開始したことを通知する（ステップＳ４３）。続いて、ＣＰＵ１０が、エラー処理プログラム２０１の指示に従って、エラー要因の調査を行い、エラーをログする（ステップＳ４４）。次に、ＣＰＵ１０が、エラー処理プログラム２０１の指示に従って、障害が復旧可能かを判断する（ステップＳ４５）。ステップＳ４５において、ＣＰＵ１０が、障害が復旧可能であると判断した場合、ＣＰＵ１０が、エラー処理プログラム２０１の指示に従って、障害復旧処理を実行し（ステップＳ５１）、図７のステップＳ５３に進む。ＣＰＵ１０が、障害が復旧可能でないと判断した場合は、ＣＰＵ１０が、エラー処理プログラム２０１の指示に従って、ＯＳのエラー処理をＣａｌｌする（図６のステップＳ４６）。そして、ＣＰＵ１０がＯＳのエラー処理、すなわち、ＯＳ２１１（図１を参照）が指示するエラー処理を開始し（ステップＳ４７）、図７のステップＳ４８に進む。【００５１】
次に、ＣＰＵが、共通のバス３１で接続された他のＣＰＵであるＣＰＵ１１に対して、ＯＳのエラー処理割込みを発行する（図７のステップＳ４８）。続いて、ＯＳ２１１が、障害が復旧可能であるかを判断する（ステップＳ４９）。ＯＳ２１１が、障害が復旧不可能であると判断した場合、ＯＳ２１１がシステムを停止させる（ステップＳ５０）。ＯＳ２１１が、障害が復旧可能であると判断した場合、ＯＳ２１１が障害復旧処理を行うとともに、ファームウェアのエラー処理への復帰処理を行う（ステップＳ５２）。続いて、ＣＰＵ１０が、ファームウェア１５１のエラー処理プログラム２０１の指示に従って、他のＣＰＵ（ＣＰＵ１１）に対してエラー処理の完了を通知する（ステップＳ５３）。また、ＣＰＵ１０が、エラー処理プログラム２０１の指示に従って、他のＣＰＵ（ＣＰＵ１１）に対して再同期割込みを発行する（ステップＳ５４）。ＣＰＵ１０が、エラー処理プログラム２０１の指示に従って、エラー処理から復帰する（ステップＳ５５）。そして、ＣＰＵ１０が、割込みマスクを解除して（ステップＳ５６）、通常処理に戻る（ステップＳ５７）。【００５２】
図８及び図９は、ＣＰＵコントローラが再同期割込みを発行した場合の動作処理フローの例である。まず、図１に示す情報処理装置１が備える同期動作中のＣＰＵ１０、１２が、同時にエラーを検出する（図８のステップＳ６１）。次に、ＣＰＵ１０、１２が、ＣＰＵコントローラ１４に対して、エラー通知を同時に行う（ステップＳ６２）。続いて、ＣＰＵコントローラ１４が、ＣＰＵ１２及びＣＰＵ１２とバス３２で接続されているＣＰＵ１３（片側ＣＰＵ）を縮退させ、縮退させなかったＣＰＵ１０と、このＣＰＵ１０とバス３１で接続されているＣＰＵ１１とに対して再同期割込みを発行する（ステップＳ６３）。ＣＰＵ１１が、割込みマスクに設定し、ファームウェアの再同期処理を開始する（ステップＳ６４）。なお、図８のステップＳ６４以下の処理、図９のステップＳ６６以下の処理、ステップＳ７１以下の処理は、ＣＰＵ１０とＣＰＵ１１とに共通する処理であり、この例では、例えばＣＰＵ１１における処理を説明する。ＣＰＵ１１が、ＣＰＵ再同期処理プログラム２０２の指示に従って、再同期処理を行うＣＰＵが全て揃ったか、すなわち、ＣＰＵ１１とバス３１で接続された全てのＣＰＵが再同期処理を実行できる状態にあるかを判断する（ステップＳ６５）。図１に示す例では、ＣＰＵ１１は、ＣＰＵ１０が再同期処理を実行できる状態にあるかを判断する。ＣＰＵ１１が、再同期処理を行うＣＰＵが全て揃ったと判断した場合、ＣＰＵ１１が、ＣＰＵ再同期処理プログラム２０２の指示に従って、再同期処理を実行する（図９のステップＳ６６）。ＣＰＵ１１が、ＣＰＵ再同期処理プログラム２０２の指示に従って、再同期処理から復帰する（ステップＳ６７）。続いて、ＣＰＵ１１が、割込みマスクを解除し（ステップＳ６８）、通常処理（ＣＰＵ同期動作）に戻る（ステップＳ６９）。【００５３】
図８のステップＳ６５において、ＣＰＵ１１が、再同期処理を行うＣＰＵが全て揃っていないと判断した場合、ＣＰＵ１１が、ＣＰＵ１１とバス３１で接続された他のＣＰＵがエラー処理中であるかを判断する（図８のステップＳ７０）。例えば、ＣＰＵ１１は、ＣＰＵ１０がエラー処理中であるかを判断する。ＣＰＵ１１が、他のＣＰＵがエラー処理中でないと判断した場合は図８のステップＳ６５に戻る。ＣＰＵ１１が、他のＣＰＵがエラー処理中であると判断した場合は、ＣＰＵ１１は、ＣＰＵ再同期処理プログラム２０２の指示に従って、再同期処理から復帰する（図９のステップＳ７１）。続いて、ＣＰＵ１１が、割込みマスクを解除して（ステップＳ７２）、通常処理（ＣＰＵ同期ずれ動作）に戻る（ステップＳ７３）。【００５４】
図１０及び図１１は、エラーを検出したＣＰＵから再同期割込みを受けるＣＰＵの動作処理フローの例である。図１０及び図１１では、エラーを検出したＣＰＵ１０（図１を参照）から再同期割込みを受けるＣＰＵ１１の動作処理を例にとって説明する。【００５５】
まず、ＣＰＵ１１が、エラーを検出したＣＰＵ１０から再同期割込みを受ける（図１０のステップＳ８１）。ＣＰＵ１１が、割込みマスクに設定し、ＣＰＵ再同期処理プログラム２０２の指示に従って再同期処理を開始する（ステップＳ８２）。次に、ＣＰＵ１１が、ＣＰＵ再同期処理プログラム２０２の指示に従って、再同期処理を行うＣＰＵが全て揃ったか、すなわち、ＣＰＵ１１とバス３１で接続された全てのＣＰＵが再同期処理を実行できる状態にあるかを判断する（ステップＳ８３）。図１に示す例では、ＣＰＵ１１は、ＣＰＵ１０が再同期処理を実行できる状態にあるかを判断する。ＣＰＵ１１が、再同期処理を行うＣＰＵが全て揃ったと判断した場合、ＣＰＵ１１が、ＣＰＵ再同期処理プログラム２０２の指示に従って、再同期処理を実行する（図１１のステップＳ８４）。ＣＰＵ１０が、ＣＰＵ再同期処理プログラム２０２の指示に従って、再同期処理から復帰する（ステップＳ８５）。続いて、ＣＰＵ１０が、割込みマスクを解除し（ステップＳ８６）、通常処理（ＣＰＵ同期動作）に戻る（ステップＳ８７）。【００５６】
ＣＰＵ１１が、図１０のステップＳ８３において再同期処理を行うＣＰＵが全て揃っていないと判断した場合、ＣＰＵ１１が、ＣＰＵ１１とバス３１で接続された他のＣＰＵがエラー処理中であるかを判断する（図１０のステップＳ８８）。例えば、ＣＰＵ１１は、ＣＰＵ１０がエラー処理中であるかを判断する。ＣＰＵ１１が、他のＣＰＵがエラー処理中でないと判断した場合は図１０のステップＳ８３に戻る。ＣＰＵ１１が、他のＣＰＵがエラー処理中であると判断した場合は、ＣＰＵ１１は、ＣＰＵ再同期処理プログラム２０２の指示に従って、再同期処理から復帰する（図１１のステップＳ８９）。続いて、ＣＰＵ１１が、割込みマスクを解除して（ステップＳ９０）、通常処理（ＣＰＵ同期ずれ動作）に戻る（ステップＳ９１）。【００５７】
図１２は、図７のステップＳ４８において発行されたＯＳのエラー処理割込みを受けたＣＰＵの動作処理フローの例である。ＣＰＵ１１がＯＳのエラー処理割込みを受けると（ステップＳ１０１）、ＣＰＵ１１が割込みマスクに設定し、ＯＳのエラー処理を開始する（ステップＳ１０２）。すなわち、ＣＰＵ１１が、ＯＳの指示に従ってＯＳのエラー処理を実行する（ステップＳ１０３）。ＣＰＵ１１が、ＯＳのエラー処理から復帰すると（ステップＳ１０４）、ＣＰＵ１１が、割込みマスクを解除して（ステップＳ１０５）、通常処理に戻る（ステップＳ１０６）。【００５８】
図１３乃至図２２は、同期動作中のＣＰＵが同時にエラーを検出した場合の処理の詳細例を示す図である。図１３は、ＣＰＵが同期動作しており、エラーを検出していない状態の例を示す。図１３において、ＣＰＵ１０とＣＰＵ１２とが同期動作している。また、ＣＰＵ１１とＣＰＵ１３とが同期動作している。ＣＰＵ１０とＣＰＵ１１とが、共通のバス３１を介してＣＰＵコントローラ１４と接続されている。また、ＣＰＵ１２とＣＰＵ１３とが、共通のバス３２を介してＣＰＵコントローラ１４と接続されている。各々のＣＰＵはＯＳの通常処理を実行している（図１３の＃１乃至＃４を参照）。【００５９】
図１４は、同期動作している両方のＣＰＵがエラーを検出した状態の例を示す。この例では、ＣＰＵ１０とＣＰＵ１２とが同時にエラーを検出する（図１４の＃５及び＃６を参照）。エラーを検出したＣＰＵ１０とＣＰＵ１２が、ＣＰＵコントローラ１４に対してエラーを検出したことを通知する（図１４の＃７を参照）。続いて、ＣＰＵ１０とＣＰＵ１２とが、ファームウェアのエラー処理を開始する（図１４の＃８及び＃９を参照）。【００６０】
図１５は、ＣＰＵコントローラが、エラーを検出したＣＰＵのいずれか一方と、そのＣＰＵと共通のバスに接続されているＣＰＵとを縮退した状態の例を示す。この例では、ＣＰＵコントローラ１４は、ＣＰＵ１２と、ＣＰＵ１２とバス３２で接続されているＣＰＵ１３とを縮退させる（図１５の＃１０を参照）。エラー検出のタイミングが異なる場合、ＣＰＵコントローラ１４が、より早くエラーを検出したＣＰＵを縮退するようにしてもよい。続いて、ＣＰＵコントローラ１４が、縮退させなかった側のＣＰＵであるＣＰＵ１０とＣＰＵ１１とに対して、再同期割込みを発行する（図１５の＃１１）。【００６１】
図１６は、縮退しない側のＣＰＵがＣＰＵコントローラから再同期割込みを受けた状態の例を示す。この例では、エラーを検出したＣＰＵ１０とエラーを検出していないＣＰＵ１１とにおいて、以下の動作を実行する。ＣＰＵ１０は、エラー処理プログラム２０１の指示に従って、ファームウェアのエラー処理を実行する。再同期割込みはペンディングされる（図１６の＃１２を参照）。また、ＣＰＵ１０は、エラー処理プログラム２０１の指示に従って、ＣＰＵ１１に対して、ファームウェアのエラー処理を開始したことを通知する（図１６の＃１３を参照）。この通知処理は、前述した図６のステップＳ４３の処理に対応する。ＣＰＵ１１は、ＣＰＵコントローラ１４から再同期割込みを受けると、割込みマスクに設定し、ＣＰＵ再同期処理プログラム２０２の指示に従って再同期処理の実行を開始する（図１６の＃１４を参照）。しかし、ＣＰＵ１１は、ＣＰＵ１０からエラー処理を開始したことを通知されると、前述した図８のステップＳ７０において、ＣＰＵ１０がエラー処理中であると判断して、再同期処理処理から復帰する（図９のステップＳ７１を参照）。その結果、ＣＰＵ１１は、割込みマスクを解除して、通常処理に復帰する（図１６の＃１５、図９のステップＳ７２、Ｓ７３を参照）。これによって、ＣＰＵ１１が図１７を参照して後述するＯＳのエラー処理割込みを受け付けることができる状態になる。【００６２】
図１７は、ＯＳのエラー処理を実行するＣＰＵ１０が、ＣＰＵ１１にＯＳのエラー処理割込みを発行した状態の例を示す。ＣＰＵ１０が、ＯＳのエラー処理を実行し（図１７の＃１６を参照）、ＣＰＵ１１に対して、ＯＳのエラー処理割込みを発行する（図１７の＃１７を参照）。この処理は、前述した図７のステップＳ４８の処理に対応する。ＣＰＵ１１は、ＣＰＵ１０からのＯＳのエラー処理割込みを受け付けて、ＯＳのエラー処理を開始する（図１７の＃１８を参照）。【００６３】
図１８は、ＣＰＵ１０、１１が、ＯＳのエラー処理の実行を完了した状態の例を示す。ＣＰＵ１０がＯＳのエラー処理の実行を完了し、ファームウェアのエラー処理に復帰する（図１８の＃１９を参照）。この処理は、前述した図７のＳ５２の処理に対応する。また、ＣＰＵ１１が、ＯＳのエラー処理の実行を完了し、通常処理に復帰する（図１８の＃２０を参照）。この処理は、前述した図１２のＳ１０６の処理に対応する。【００６４】
図１９は、ＣＰＵ１０からＣＰＵ１１へエラー処理の完了を通知する状態の例を示す。ＣＰＵ１０が、ＣＰＵ再同期処理プログラム２０２の指示に従って、ＣＰＵ１１に対して、エラー処理が完了したことを通知する（図１９の＃２１を参照）。この処理は、前述した図７のステップＳ５３の処理に対応する。【００６５】
図２０は、ＣＰＵ１０からＣＰＵ１１へ再同期割込みを発行した状態の例を示す。ＣＰＵ１０が、ＣＰＵ再同期処理プログラム２０２の指示に従って、ＣＰＵ１１に対して、再同期割込みを発行する（図２０の＃２２を参照）。この処理は、前述した図７のステップＳ５４の処理に対応する。ＣＰＵ１１が、再同期割込みを受け付ける（図２０の＃２３を参照）。【００６６】
図２１は、ＣＰＵ１０がエラー処理から復帰した状態の例を示す。ＣＰＵ１０がエラー処理から通常処理に復帰し、ペンディングされていた再同期割込みを受け付け、再同期処理を開始する（図２１の＃２４を参照）。ＣＰＵ１１は、再同期を行う全てのＣＰＵが揃ったか、すなわち、ＣＰＵ１０が再同期処理を行う状態にあるかを判断する。この処理は、前述した図１０のステップＳ８３の処理に対応する。この例では、ＣＰＵ１０は、再同期割込みを受け付けている。従って、ＣＰＵ１１は、ＣＰＵ１０が再同期処理を行う状態にあると判断し、その結果、ＣＰＵ１１が、再同期処理を実行する（図２１の＃２５、図１１のＳ８４を参照）。【００６７】
図２２は、ＣＰＵ１０及びＣＰＵ１１が再同期処理を完了した後の状態の例を示す。ＣＰＵ１０及びＣＰＵ１１は、再同期処理を完了すると、ＯＳの通常処理に復帰する（図２２の＃２６、＃２７を参照）。ＣＰＵ１０、ＣＰＵ１１は、それぞれ、ＣＰＵ１２、ＣＰＵ１３と同期動作し、その結果、ＣＰＵ１２、ＣＰＵ１３はＯＳの通常処理を実行する（図２２の＃２８、＃２９を参照）。
【産業上の利用可能性】
【００６８】
本情報処理装置、本情報処理装置の制御方法、及び本情報処理装置の制御プログラムによれば、同期動作中の制御装置が同時にエラーを検出した場合において、エラーを検出していない制御装置がＯＳのエラー処理を実行することができる。
【図１】
2010103562.tif 000003
【図２】
2010103562.tif 000004
【図３】
2010103562.tif 000005
【図４】
2010103562.tif 000006
【図５】
2010103562.tif 000007
【図６】
2010103562.tif 000008
【図７】
2010103562.tif 000009
【図８】
2010103562.tif 000010
【図９】
2010103562.tif 000011
【図１０】
2010103562.tif 000012
【図１１】
2010103562.tif 000013
【図１２】
2010103562.tif 000014
【図１３】
2010103562.tif 000015
【図１４】
2010103562.tif 000016
【図１５】
2010103562.tif 000017
【図１６】
2010103562.tif 000018
【図１７】
2010103562.tif 000019
【図１８】
2010103562.tif 000020
【図１９】
2010103562.tif 000021
【図２０】
2010103562.tif 000022
【図２１】
2010103562.tif 000023
【図２２】
2010103562.tif 000024
【図２３】
2010103562.tif 000025
【図２４】
2010103562.tif 000026
【図２５】
2010103562.tif 000027
【図２６】
2010103562.tif 000028
【図２７】
2010103562.tif 000029
【図２８】
2010103562.tif 000030
【図２９】
2010103562.tif 000031
【図３０】
2010103562.tif 000032
【図３１】
2010103562.tif 000033
【図３２】
2010103562.tif 000034
【図３３】
2010103562.tif 000035
【図３４】
2010103562.tif 000036
【手続補正書】
【提出日】平成23年8月4日(2011.8.4)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
互いに同期動作を行う第１の制御装置と第２の制御装置とがエラーの発生を検出した場合に、前記第１の制御装置を含む第１の制御装置群と、前記第２の制御装置を含む第２の制御装置群とのうち、前記第２の制御装置群を縮退させる縮退制御手段と、
前記第１の制御装置群に含まれる制御装置に対して再同期処理の実行を指示する再同期処理指示手段とを備え、
前記第１の制御装置群に含まれる前記第１の制御装置とは異なる他の制御装置が、前記再同期処理の実行の指示を受けた場合に、割込みマスク設定を行い、
前記第１の制御装置群に含まれる前記第１の制御装置が、前記再同期処理の実行の指示を受けた場合に、前記再同期処理の実行を留保してエラー処理を開始するとともに、前記割込みマスク設定を行った制御装置に指示して、前記割込みマスクを解除させる
ことを特徴とする情報処理装置。
【請求項２】
前記第１の制御装置が、前記割込みマスクを解除させた制御装置に対してエラー処理割込みを発行して、エラー処理を実行させる
ことを特徴とする請求項１記載の情報処理装置。
【請求項３】
エラー処理の実行を完了した前記第１の制御装置が、前記エラー処理を実行させた制御装置に対して再同期割込みを発行して、再同期処理を実行させる
ことを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記第１の制御装置から前記再同期割込みの発行を受けた制御装置が、再同期処理を実行する制御装置が全て揃ったかを判断し、前記再同期割込みの発行を受けた制御装置が、再同期処理を実行する制御装置が全て揃ったと判断した場合に、再同期処理を実行する
ことを特徴とする請求項３記載の情報処理装置。
【請求項５】
互いに同期動作を行う第１の制御装置と第２の制御装置とがエラーの発生を検出した場合に、前記第１の制御装置を含む第１の制御装置群と、前記第２の制御装置を含む第２の制御装置群とのうち、前記第２の制御装置群を縮退させ、
前記第１の制御装置群に含まれる制御装置に対して再同期処理の実行を指示し、
前記第１の制御装置群に含まれる前記第１の制御装置とは異なる他の制御装置が、前記再同期処理の実行の指示を受けた場合に、割込みマスク設定を行い、
前記第１の制御装置群に含まれる前記第１の制御装置が、前記再同期処理の実行の指示を受けた場合に、前記再同期処理の実行を留保してエラー処理を開始するとともに、前記割込みマスク設定を行った制御装置に指示して、前記割込みマスクを解除させる
ことを特徴とする情報処理装置の制御方法。
【請求項６】
前記第１の制御装置が、前記割込みマスクを解除させた制御装置に対してエラー処理割込みを発行して、エラー処理を実行させる
ことを特徴とする請求項５記載の情報処理装置の制御方法。
【請求項７】
エラー処理の実行を完了した前記第１の制御装置が、前記エラー処理を実行させた制御装置に対して再同期割込みを発行して、再同期処理を実行させる
ことを特徴とする請求項６記載の情報処理装置の制御方法。
【請求項８】
前記第１の制御装置から前記再同期割込みの発行を受けた制御装置が、再同期処理を実行する制御装置が全て揃ったかを判断し、前記再同期割込みの発行を受けた制御装置が、再同期処理を実行する制御装置が全て揃ったと判断した場合に、再同期処理を実行する
ことを特徴とする請求項７記載の情報処理装置の制御方法。
【請求項９】
互いに同期動作を行う第１の制御装置と第２の制御装置とがエラーの発生を検出した場合に、前記第１の制御装置を含む第１の制御装置群と、前記第２の制御装置を含む第２の制御装置群とのうち、前記第２の制御装置群を縮退させる縮退制御手段と、前記第１の制御装置群に含まれる制御装置に対して再同期処理の実行を指示する再同期処理指示手段とを備える情報処理装置の制御プログラムであって、
コンピュータに、
前記第１の制御装置群に含まれる前記第１の制御装置とは異なる他の制御装置が、前記再同期処理の実行の指示を受けた場合に、割込みマスク設定を行う処理と、
前記第１の制御装置群に含まれる前記第１の制御装置が、前記再同期処理の実行の指示を受けた場合に、前記再同期処理の実行を留保してエラー処理を開始するとともに、前記割込みマスク設定を行った制御装置に指示して、前記割込みマスクを解除させる処理とを実行させる
ことを特徴とする情報処理装置の制御プログラム。
【請求項１０】
前記コンピュータに、更に、
前記第１の制御装置が、前記割込みマスクを解除させた制御装置に対してエラー処理割込みを発行して、エラー処理を実行させる処理を実行させる
ことを特徴とする請求項９記載の情報処理装置の制御プログラム。
【国際調査報告】
2010103562.tif 000037
2010103562.tif 000038