(57)【要約】【課題】  本発明の効果は、プロセッサの異常状態を効率的に検出すること【解決手段】  本発明の情報処理装置は、第１プロセッサコアを有する第１プロセッサと、第２プロセッサと、を備え、前記第１プロセッサは、前記第１プロセッサが行うデバイスへのアクセスに関するアクセス情報を記憶する記憶部を有し、前記第２プロセッサは、前記アクセス情報に基づいて、前記第１プロセッサコアに異常が発生しているか否かを判断する判断部を有する。【選択図】      図１
2019066991.tif 000002
【特許請求の範囲】
【請求項１】
第１プロセッサコアを有する第１プロセッサと、
第２プロセッサと、
を備え、
前記第１プロセッサは、前記第１プロセッサが行うデバイスへのアクセスに関するアクセス情報を記憶する記憶部を有し、
前記第２プロセッサは、前記アクセス情報に基づいて、前記第１プロセッサコアに異常が発生しているか否かを判断する判断部を有する
情報処理装置。
【請求項２】
前記判断部は、前記アクセス情報が所定期間更新されておらず、前記第１プロセッサと通信できない場合、前記第１プロセッサコアに異常が発生していると判断する
請求項１に記載の情報処理装置。
【請求項３】
前記第２プロセッサは、
前記判断部が前記第１プロセッサコアに異常が発生したと判断した場合、前記アクセス情報に基づいて、前記第１プロセッサコアに異常が発生した原因を特定する特定部を更に有する
請求項１又は２に記載の情報処理装置。
【請求項４】
前記第１プロセッサを監視する監視プロセッサ
を備え、
前記第２プロセッサは、前記第１プロセッサと通信する通信部を有し、
前記通信部は、
前記判断部が、前記第１プロセッサコアに異常が発生していると判断した場合、前記第１プロセッサを介して前記監視プロセッサに前記第１プロセッサコアの異常の発生を通知する
請求項１から３のいずれか一項に記載の情報処理装置。
【請求項５】
前記アクセス情報は、
前記第１プロセッサがアクセスした前記デバイスのデバイス識別情報と、
前記デバイスへのアクセスが完了したか否かを示すアクセス完了情報と、を含み、
前記アクセス情報は、前記第１プロセッサが前記デバイスにアクセスするたびに前記第１プロセッサによって更新される情報である
請求項３に記載の情報処理装置。
【請求項６】
前記特定部は、前記アクセス完了情報がアクセス完了を示している場合、前記第１プロセッサが停止した原因であると特定し、前記アクセス完了情報がアクセス未完了を示している場合、前記デバイスが、前記第１プロセッサが停止した原因であると特定する
請求項５に記載の情報処理装置。
【請求項７】
第１プロセッサが行うデバイスへのアクセスに関するアクセス情報を取得するステップと、
前記アクセス情報に基づいて、前記第１プロセッサが有する第１プロセッサコアに異常が発生しているか否かを判断するステップと、
を備える異常検出方法。
【請求項８】
第１プロセッサが行うデバイスへのアクセスに関するアクセス情報を取得するステップと、
前記アクセス情報に基づいて、前記第１プロセッサが有する第１プロセッサコアに異常が発生しているか否かを判断するステップと、
を実行するプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプロセッサを有する情報処理装置、異常検出方法、及びプログラムに関する。
【背景技術】
【０００２】
複数のプロセッサを有する情報処理装置において、情報処理装置の起動時にプロセッサに異常が発生する場合がある。情報処理装置の起動時における、プロセッサの異常を検出する技術として、情報処理装置を監視する監視装置を設け、監視装置は、所定時間内に情報処理装置が起動しない場合に、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）にストールが発生したと検出する技術がある。
【０００３】
例えば、特許文献１は、マルチプロセッサ構成の情報処理装置において、立ち上げ中のＣＰＵ間のインターフェース回路の初期設定を行っている段階において、ＣＰＵ側から応答がない場合に異常と検出する旨が記載されている。
【０００４】
また、特許文献１はインターフェース回路の障害が発生した場合にも、ＢＭＣ（Ｂａｓｅｂｏａｒｄ Ｍａｎａｇｅｍｅｎｔ Ｃｏｎｔｒｏｌｌｅｒ）を介して通信先のＣＰＵの情報を収集することにより、いずれのＣＰＵが障害被疑部品の可能性が高いか被疑割合を決定する技術を開示している。
【０００５】
特許文献２は、ＣＰＵと監視装置とを備えたシステムにおいて、監視装置は、複数のＣＰＵに対して定期的に割込みを発し、所定時間の間にＣＰＵ応答がなければ、該当するＣＰＵが異常状態にあると判断する技術を開示している。
【０００６】
特許文献３は、プロセッサにおける障害原因を解析するためのＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）ログを記録する技術を開示している。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１２−０７９２６６号公報
【特許文献２】特開平１１−５３２２２号公報
【特許文献３】特開２０００−６６９６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記の特許文献は、起動時におけるプロセッサの異常検出に時間がかかる、という問題があった。
【０００９】
例えば、特許文献１は、ＣＰＵ側から応答がない場合に、ＣＰＵの異常と判断している。このような構成のため、ＣＰＵ側から応答がないと判断するまで所定時間待機する必要があり、ＣＰＵの異常検出に時間がかかる。
【００１０】
特許文献２は、動作中のＣＰＵの異常検出の方法を開示しているにすぎず、装置の起動時におけるＣＰＵの異常検出を効率的に行う方法は開示されていない。また、装置が起動時にＣＰＵに対して定期的に割込みを行った場合、ＣＰＵに異常が発生していなくてもＣＰＵの起動前であれば応答が来ない場合があり、ＣＰＵが異常状態であるか否かの切り分けが困難である。
【００１１】
特許文献３は、Ｉ／Ｏのログを記録する技術を開示しているだけであって、起動時におけるプロセッサの異常検出方法については開示されていない。
【００１２】
そこで、本発明は起動時におけるプロセッサの異常状態を効率的に検出することができる情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明の情報処理装置は、第１プロセッサコアを有する第１プロセッサと、第２プロセッサと、を備え、前記第１プロセッサは、前記第１プロセッサが行うデバイスへのアクセスに関するアクセス情報を記憶する記憶部を有し、前記第２プロセッサは、前記アクセス情報に基づいて、前記第１プロセッサコアに異常が発生しているか否かを判断する判断部を有する。
【００１４】
本発明の異常検出方法は、第１プロセッサが行うデバイスへのアクセスに関するアクセス情報を取得するステップと、前記アクセス情報に基づいて、前記第１プロセッサが有する第１プロセッサコアに異常が発生しているか否かを判断するステップと、を備える。
【００１５】
本発明のプログラムは、第１プロセッサが行うデバイスへのアクセスに関するアクセス情報を取得するステップと、前記アクセス情報に基づいて、前記第１プロセッサが有する第１プロセッサコアに異常が発生しているか否かを判断するステップと、を実行する。
【発明の効果】
【００１６】
本発明の効果は、プロセッサの異常状態を効率的に検出することができることにある。
【図面の簡単な説明】
【００１７】
【図１】本発明の第１の実施形態における、構成を示すブロック図である。
【図２】本発明の第１の実施形態における、動作を示すフローチャートである。
【図３】本発明の第２の実施形態における、機能構成を示すブロック図である。
【図４】本発明の第２の実施形態における、アクセス情報１２０の一例を示す図である。
【図５】本発明の第２の実施形態における、動作概要を示すタイミングチャートである。
【図６】本発明の第２実施形態における、第２プロセッサ２の動作を示すフローチャートである。
【図７】本発明の第３実施形態における、機能構成を示すブロック図である。
【図８】本発明の第３の実施形態における、アクセス情報１２０の一例を示す図である。
【図９】本発明の第３の実施形態における、アクセス情報１２０の詳細例を示す図である。
【図１０】本発明の第３の実施形態における、対応情報２３０の一例を示す図である。
【図１１】本発明の第３の実施形態における、動作概要を示すタイミングチャートである。
【図１２】本発明の第３の実施形態における、アクセス情報記録動作を示すフローチャートである。
【図１３】本発明の第３の実施形態における、異常検出動作を示すフローチャートである。
【図１４】本発明の第３の実施形態における、被疑部品特定動作及び障害情報通知動作、障害情報表示動作を示すフローチャートである。
【図１５−１】本発明の第３の実施形態における、表示部５への表示例である。
【図１５−２】本発明の第３の実施形態における、表示部５への表示例である。
【発明を実施するための形態】
【００１８】
（第１の実施形態）
本発明の第１の実施形態について説明する。
【００１９】
まず、本発明の第１の実施形態の構成について説明する。図１は、本発明の第１の実施形態における、構成を示すブロック図である。
【００２０】
図１を参照すると、マルチプロセッサシステム１０００は、第１プロセッサ１と、第２プロセッサ２と、デバイス３を備えている。
【００２１】
デバイス３は、第１プロセッサ１と接続される各種装置である。例えば、デバイス３は、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスを通じて接続される周辺機器や、半導体メモリなどの主記憶装置である。
【００２２】
第１プロセッサ１は、第２プロセッサ２及びデバイス３と接続されている。
【００２３】
第１プロセッサ１は、プロセッサコア１１と、レジスタ１２を有する。第１プロセッサ１は、例えばコンピュータにおけるＣＰＵ（Ｃｅｎｔｒａｌ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ）である。
【００２４】
プロセッサコア１１は、各種の演算や制御を実行する。プロセッサコア１１は、デバイス３へアクセスした際に、当該アクセスに関する情報をレジスタ１２に記憶する。
【００２５】
レジスタ１２は、第１プロセッサ１のアクセス情報１２０を記憶する。アクセス情報１２０とは、第１プロセッサ１が行うデバイス３へのアクセスに関する情報である。
【００２６】
第２プロセッサ２は、プロセッサコア２１を備える。プロセッサコア２１は、プロセッサコア１１と同様に各種の演算や制御を実行する。
【００２７】
第２プロセッサ２は、第１プロセッサ１と接続されており、レジスタ１２からアクセス情報１２０を取得できるように構成されている。
【００２８】
第２プロセッサ２は、アクセス情報１２０に基づいて、プロセッサコア１１に異常が発生しているか否か判断する。例えば、第２プロセッサ２のプロセッサコア２１は、レジスタ１２からアクセス情報１２０を取得し、アクセス情報１２０が所定時間更新されていない場合、プロセッサコア１１に異常が発生したと判断する。なお、プロセッサコア１１の異常とは、プロセッサコア１１が停止するようなストール状態も含む。
【００２９】
次に、本発明の第１の実施形態における動作について説明する。
【００３０】
第１プロセッサ１及び第２プロセッサ２の起動を開始すると、プロセッサコア１１及びプロセッサコア２１は起動動作を開始する。図２は、本発明の第１の実施形態における、動作を示すフローチャートである。
【００３１】
まず、第２プロセッサ２は、レジスタ１２からアクセス情報１２０を取得する（ステップＳ１００１）。例えば、第２プロセッサ２は、レジスタ１２に直接アクセスすることにより、第１プロセッサ１が最後にアクセスしたデバイス３に関するアクセス情報１２０を取得する。
【００３２】
次に、第２プロセッサ２は、アクセス情報１２０に基づいて、第１プロセッサ１のプロセッサコア１１に異常が発生しているか判断する（ステップＳ１００２）。
【００３３】
例えば、第１プロセッサ１は、デバイス３へアクセスを行う度にアクセス情報１２０を更新している。第２プロセッサ２は、アクセス情報１２０を参照し、新たに第１プロセッサ１がデバイス３へアクセスしているか否か判断する。第２プロセッサ２は、第１プロセッサ１がデバイス３へアクセスしていない場合にプロセッサコア１１に異常が発生している、と判断する。第２プロセッサ２は、第１プロセッサ１がデバイス３へアクセスしている場合にプロセッサコア１１に異常が発生していない、と判断する。
【００３４】
第２プロセッサ２は、アクセス情報１２０に基づいて、第１プロセッサ１のプロセッサコア１１に異常が発生していないと判断した場合（ステップＳ１００２：ＮＯ）、本動作を終了する。
【００３５】
第２プロセッサ２は、アクセス情報１２０に基づいて、第１プロセッサ１のプロセッサコア１１に異常が発生していると判断した場合（ステップＳ１００２：ＹＥＳ）、第１プロセッサ１に異常が発生した旨の通知を行う（ステップＳ１００３）。
【００３６】
以上により、本発明の第１の実施形態における動作が終了する。
【００３７】
本発明の第１の実施形態は、第１プロセッサ１の異常状態を効率的に検出することができる。その理由は、第２プロセッサ２が、第１プロセッサ１が行うデバイス３へのアクセスに関するアクセス情報１２０に基づき、第１プロセッサ１に異常が発生したか否かを判断するためである。
【００３８】
本発明の第１の実施形態は、第２プロセッサ２が第１プロセッサ１のデバイス３へのアクセスの状態を監視して異常状態を判断する。これにより、特許文献１に記載された、起動時にＣＰＵの応答が所定時間ない場合にＣＰＵの異常と判断する方法に比べ、第１プロセッサ１からの応答を所定時間待つ必要がなくなる。よって、迅速に第１プロセッサ１の異常状態を検出することができる。
【００３９】
本発明の第１の実施形態は、第２プロセッサ２が第１プロセッサ１のデバイス３へのアクセスの状態を監視して異常状態を判断する。これにより、特許文献２に記載された複数のＣＰＵに対して定期的に割込みを発して異常状態にあると判断する方法に比べ、監視対象の第１プロセッサ１への不要な割込みを無くすことができる。よって、第１プロセッサ１が行う処理への影響を低減することができる。
【００４０】
（第２の実施形態）
次に、本発明の第２の実施形態について説明する。まず、本発明の第２の実施形態の構成について説明する。図３は、本発明の第２の実施形態における、機能構成を示すブロック図である。
【００４１】
図３を参照すると、マルチプロセッサシステム１０００は、第１プロセッサ１と、第２プロセッサ２と、デバイス３とを備えている。
【００４２】
デバイス３は、第１プロセッサ１と接続される各種装置である。例えば、デバイス３は、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスを通じて接続される周辺機器や、半導体メモリなどの主記憶装置である。
【００４３】
第１プロセッサ１は、デバイス３と接続されている。第１プロセッサ１は、制御部１１、記憶部１２、通信部１３を備える。
【００４４】
制御部１１は、演算や制御を行う例えばプロセッサコアである。制御部１１は、更新部１１１を備える。更新部１１１は、第１プロセッサ１と接続されたデバイス３へのアクセスに関する情報を記録、更新する。例えば、第１プロセッサ１がデバイス３にアクセスを行う度に、記憶部１２のアクセス情報１２０を更新する。
【００４５】
記憶部１２は、例えば第１プロセッサ１が有するレジスタである。制御部１１が演算に用いる各種データを記憶する。また、記憶部１２は、第１プロセッサ１が行うデバイス３へのアクセスに関するアクセス情報１２０を記憶する。なお、記憶部１２は後述する通信部１３内のレジスタに設けられていても構わない。
【００４６】
アクセス情報１２０は、第１プロセッサ１が行うデバイス３へのアクセスに関する情報である。
【００４７】
図４は、本発明の第２の実施形態における、アクセス情報１２０の一例を示す図である。
アクセス情報１２０は、デバイス識別情報１２１、アクセス回数情報１２２、アクセス完了情報１２３を含む。
【００４８】
デバイス識別情報１２１は、第１プロセッサ１がアクセスしたデバイス３の識別情報である。アクセス回数情報１２２は、第１プロセッサ１のデバイス３へアクセスした回数を示す情報である。アクセス完了情報１２３は、第１プロセッサ１がデバイス３へのアクセスが完了したか否かを示す情報である。例えば、デバイス３が半導体メモリであるとする。第１プロセッサ１が半導体メモリにアクセスを行った場合、第１プロセッサ１が半導体メモリからデータの読込みや書込みが完了した場合に、アクセス完了情報１２３に、アクセスが完了した旨の情報が格納される。
【００４９】
通信部１３は、第２プロセッサ２と通信可能に接続する。例えばバスインターフェイスである。
【００５０】
第２プロセッサ２は、通信部１３を介して第１プロセッサ１と接続されている。第２プロセッサ２は、制御部２１、記憶部２２、通信部２３を備える。
【００５１】
制御部２１は、演算や制御を行う例えばプロセッサコアである。制御部２１は、取得部２１１、判断部２１２、特定部２１３を備える。
【００５２】
取得部２１１は、第１プロセッサ１の記憶部１２へアクセスし、アクセス情報１２０を取得する。
【００５３】
判断部２１２は、アクセス情報１２０に基づいて、第１プロセッサ１の制御部１１に異常が発生しているか否か判断する。具体的には、まず、判断部２１２は、アクセス情報１２０が更新されていない場合、第１プロセッサ１の制御部１１に異常が発生している可能性があると検出する。そして、判断部２１２は、第１プロセッサ１の制御部１１に異常が発生している可能性があると検出した場合、第１プロセッサ１の制御部１１にアクセスする。そして、判断部２１２は、制御部１１に異常が発生している可能性があると検出した場合であって、第１プロセッサ１の制御部１１から応答がない場合に、第１プロセッサ１の制御部１１に異常が発生している、と判断する。
【００５４】
なお、第１プロセッサ１の制御部１１の異常とは、制御部１１が停止するようなストール状態も含む。
【００５５】
特定部２１３は、判断部２１２において、第１プロセッサ１に異常が発生していると判断した場合、アクセス情報１２０に基づいて、第１プロセッサ１の制御部１１の異常が発生した原因を特定する。
【００５６】
例えば、特定部２１３は、アクセス情報１２０を参照し、デバイス３へのアクセスが完了しているか否か確認する。特定部２１３は、デバイス３へのアクセスが完了している場合、被疑部品を第１プロセッサ１であると判断し、デバイス３へのアクセスが完了していない場合、当該アクセス中のデバイス３が被疑部品であると特定する。
【００５７】
記憶部２２は、例えば第２プロセッサ２が有するレジスタである。制御部２１が演算に用いる各種データを記憶する。
【００５８】
通信部２３は、第１プロセッサ１と通信可能に接続する。例えばバスインターフェイスである。
【００５９】
なお、制御部１１及び制御部２１が有する各種機能部は、例えば図示しない補助記憶装置に格納されたプログラムに基づいて、所定の処理を実行することによって実現する。もしくは、当該プログラムをＣＤＲＯＭ（Ｃｏｍｐａｃｔ Ｄｉｓｃ Ｒｅａｄ Ｏｎｌｙ Ｍｅｍｏｒｙ）等の記憶媒体に格納し制御部１１及び制御部２１に提供することも可能である。
【００６０】
次に、本発明の第２の実施形態における動作について説明する。
【００６１】
第１プロセッサ１及び第２プロセッサ２が起動を開始すると、制御部１１及び制御部２１の起動動作を開始する。そして第１プロセッサ１は、第１プロセッサ１の通信部１３と第２プロセッサ２の通信部２３間の初期化を実行し、第１プロセッサ１と第２プロセッサ２間の通信を確立させる。その後、第１プロセッサ１に接続されているデバイス３の初期化を行う。
【００６２】
図５は、本発明の第２の実施形態における動作概要を示すタイミングチャートである。起動動作中に、以下のステップＳ１からＳ３を行うことで、第１プロセッサ１の異常を検出する。
【００６３】
まず、第１プロセッサ１は、第１プロセッサ１が行うデバイス３へのアクセスに関するアクセス情報１２０を記録するアクセス情報記録動作を実行する（ステップＳ１）。
【００６４】
アクセス情報記録動作として、第１プロセッサ１の更新部１１１は、デバイス３へアクセスする際に、デバイス３の情報を取得する。更新部１１１は、記憶部１２のアクセス情報１２０を更新する。
【００６５】
例えば、更新部１１１は、アクセスしたデバイス３のデバイス識別情報１２１を取得する。さらに更新部１１１は、デバイス３へのアクセスを行う度、アクセス回数情報１２２を更新する。そして、更新部１１１は、デバイス３へのアクセスが完了した場合、アクセス完了情報１２３をアクセスが完了した旨を示す情報に変更する。以上のアクセス情報記録動作を第１プロセッサ１がデバイス３にアクセスを行う度に繰り返すことにより、アクセス情報１２０を記録する。
【００６６】
次に第２プロセッサ２の判断部２１２は、第１プロセッサ１の制御部１１に異常が発生しているか否か判断する、異常検出動作を実行する（ステップＳ２）。
【００６７】
そして、第２プロセッサ２の特定部２１３は、アクセス情報１２０に基づいて被疑部品特定動作を実行する（ステップＳ３）。
以上で、本発明の第２の実施形態における動作概要を示すタイミングチャート終了する。
【００６８】
図６は、本発明の第２の実施形態における、第２プロセッサ２の動作を示すフローチャートである。本動作は図４におけるステップＳ２の制御部１１の異常検出動作及びステップＳ３の被疑部品特定動作に対応する。
【００６９】
まず、第２プロセッサ２の取得部２１１は、第１プロセッサ１の記憶部１２からアクセス情報１２０を取得する（ステップＳ２００１）。
【００７０】
判断部２１２は、取得部２１１が取得したアクセス情報１２０が更新されたか否か判断する（ステップＳ２００２）。例えば、第１プロセッサ１がデバイス３へアクセスした回数を示すアクセス回数情報１２２の回数が増加していた場合、アクセス情報１２０が更新されたと判断する。
【００７１】
判断部２１２が、アクセス情報１２０が更新されていると判断した場合、（ステップＳ２００２：ＹＥＳ）、判断部２１２は、制御部１１に異常が発生していない、と判断する（ステップＳ２００６）。そして、本動作を終了する。
【００７２】
判断部２１２は、アクセス情報１２０が更新されていない場合（ステップＳ２００２：ＮＯ）、制御部１１に異常が発生している可能性があると判断し、ステップＳ２００３に進む。
【００７３】
判断部２１２が、ステップＳ２００２にて、制御部１１に異常が発生している可能性があると判断した場合（ステップＳ２００２：ＹＥＳ）、判断部２１２は、制御部１１にアクセスを行う（ステップＳ２００３）。例えば、判断部２１２は、制御部１１に対し、割込みによるプロセッサ間通信を行う。
【００７４】
判断部２１２は、制御部１１にアクセスが可能である場合（ステップＳ２００３：ＹＥＳ）、制御部１１に異常が発生していないと判断する（ステップＳ２００６）。そして本動作を終了する。
【００７５】
判断部２１２は、制御部１１にアクセスが不可能である場合（ステップＳ２００３：ＮＯ）、制御部１１に異常が発生していると判断する（ステップＳ２００４）。
【００７６】
判断部２１２が、制御部１１に異常が発生していると判断した場合、特定部２１３は、アクセス情報１２０に基づき制御部１１に異常が発生した原因を特定する（ステップＳ２００５）。
【００７７】
例えば、特定部２１３は、第１プロセッサ１がアクセスしたデバイス３のデバイス識別情報１２１と、第１プロセッサ１がデバイス３へのアクセスが完了したか否かを示すアクセス完了情報１２３と、に基づいて特定する。
【００７８】
特定部２１３は、アクセス完了情報１２３が、第１プロセッサ１がデバイス３へのアクセスが完了している旨を示している場合、制御部１１の異常原因は、第１プロセッサ１にあると判断する。アクセス完了情報が、第１プロセッサ１がデバイス３へのアクセスが未完了である旨を示している場合、制御部１１の異常原因は、デバイス３にあると判断する。
【００７９】
以上により、本発明の第２の実施形態における動作が終了する。
【００８０】
本動作における、ステップＳ２００１からＳ２００４、及びＳ２００６までの動作がステップＳ２の異常検出動作に対応し、ステップＳ２００５の動作がステップＳ３の被疑部品特定動作に対応する。
【００８１】
なお、本実施形態では、起動動作中に第１プロセッサ１の異常を検出する例を示したが、これに限らない。通常動作中にも同様に第２プロセッサ２がアクセス情報１２０に基づいて、第１プロセッサ１の異常を検出することも可能である。
【００８２】
本発明の第２の実施形態は、プロセッサの異常状態を効率的に検出することができる。その理由は、第２プロセッサ２が、第１プロセッサ１が行うデバイス３へのアクセスに関するアクセス情報１２０に基づき、第１プロセッサ１に異常が発生したか否かを判断するためである。
【００８３】
本発明の第２の実施形態は、プロセッサの異常状態を検出することができる。その理由は、第２プロセッサ２が、第１プロセッサ１に異常が発生した可能性があると判断した場合、第１プロセッサ１と通信を行うためである。さらに、第２プロセッサ２が停止しているか否かを確認することもできる。
【００８４】
本発明の第２の実施形態は、第１プロセッサ１の異常原因を特定できる。その理由は、第２プロセッサ２が、第１プロセッサ１が行うデバイス３へのアクセスに関するアクセス情報１２０に基づいて、第１プロセッサ１に異常が発生した場合における、デバイス３へのアクセス状況を入手することができるためである。
【００８５】
（第３の実施形態）
次に、本発明の第３の実施形態について説明する。
【００８６】
まず、本発明の第３の実施形態の構成について説明する。図７は、本発明の第３の実施形態における、機能構成を示すブロック図である。なお、第１の実施形態及び第２の実施形態と対応する構成に関しては同様の符号を付している。
【００８７】
図７を参照すると、マルチプロセッサシステム１０００は、運用サーバ１００と、監視サーバ２００を備えている。
【００８８】
運用サーバ１００と監視サーバ２００は、後述する第３プロセッサ通信部１３−２及び第１プロセッサ通信部４３を通じて通信可能に接続している。
【００８９】
監視サーバ２００は、運用サーバ１００の動作などを監視するサーバである。監視サーバ２００は、第３プロセッサ４と表示部５を備える。
【００９０】
第３プロセッサ４は、例えばＢＭＣなどの監視プロセッサである。
【００９１】
第３プロセッサ４は、表示制御部４１と第１プロセッサ通信部４３を有する。表示制御部４１は、運用サーバ１００の障害に関する情報の表示を制御する。
【００９２】
第１プロセッサ通信部４３は、第３プロセッサ４と第１プロセッサ１とを通信可能に接続する。第１プロセッサ通信部４３は、例えばバスインターフェイスである。
【００９３】
表示部５は、表示制御部４１によって表示指示された障害情報を表示する。例えば、表示部５はユーザに障害情報を提示するためのディスプレイである。
【００９４】
運用サーバ１００は、第１プロセッサ１と、第２プロセッサ２、ＰＣＩデバイス３１−１、ＰＣＩデバイス３１−２、メモリ３２−１、メモリ３２−２、を備える。
【００９５】
ＰＣＩデバイス３１−１及びＰＣＩデバイス３１−２は、ＰＣＩバスを通じて接続される周辺機器である。メモリ３２−１及びメモリ３２−２は、半導体メモリなどの主記憶装置である。メモリ３２−１及びメモリ３２−２は、第１プロセッサ１及び第２プロセッサ２で用いる各種データを記憶する。
【００９６】
ＰＣＩデバイス３１−１及びメモリ３２−１は、第１プロセッサ１と接続される。ＰＣＩデバイス３１−２及びメモリ３２−２は、第２プロセッサ２と接続される。
【００９７】
以下、ＰＣＩデバイス３１−１及びメモリ３２−１を区別しない場合、デバイス３−１、ＰＣＩデバイス３１−２及びメモリ３２−２を区別しない場合、デバイス３−２と示す。
【００９８】
また、ＰＣＩデバイス３１−１及びＰＣＩデバイス３１−２を区別しない場合、ＰＣＩデバイス３１、メモリ３２−１及びメモリ３２−２を区別しない場合、メモリ３２と示す。
【００９９】
第１プロセッサ１は、デバイス３１−１及びメモリ３２−１と接続されている。第１プロセッサ１は、制御部１１、第２プロセッサ通信部１３−１、第３プロセッサ通信部１３−２を備える。
【０１００】
第２プロセッサ通信部１３−１は、第１プロセッサ１と第２プロセッサ２と通信可能に接続する。例えばバスインターフェイスである。また、第２プロセッサ通信部１３−１は、インデックス情報記憶部１２を有する。
【０１０１】
第３プロセッサ通信部１３−２は、第１プロセッサ１と第３プロセッサ４と通信可能に接続する。第３プロセッサ通信部１３−２は、例えばバスインターフェイスである。ま
本実施形態では、運用サーバ１００に関する情報は、第３プロセッサ通信部１３−２を通じて監視サーバ２００へ送られる。
【０１０２】
制御部１１は、演算や制御を行う例えばプロセッサコアである。制御部１１は、ＰＣＩデバイス３１−１やメモリ３２−１にアクセスを行う。
【０１０３】
制御部１１は、更新部１１１を備える。更新部１１１は、第１プロセッサ１と接続されたデバイス３−１へのアクセスに関する情報を記録、更新する。
【０１０４】
アクセス情報１２０とは、第１プロセッサ１が行う、ＰＣＩデバイス３１−１及びメモリ３２−１へのアクセスに関する情報である。
【０１０５】
図８は、本発明の第３の実施形態における、アクセス情報１２０の一例を示す図である。
アクセス情報１２０は、例えば、デバイス識別情報１２１、アクセス回数情報１２２、アクセス完了情報１２３、処理実行情報１２４、異常状況情報１２５を含む。
【０１０６】
デバイス識別情報１２１は、第１プロセッサ１がアクセスしたデバイス３の識別情報である。アクセス回数情報１２２は、第１プロセッサ１のデバイス３へアクセスした回数を示す情報である。アクセス完了情報１２３は、第１プロセッサ１がデバイス３へのアクセスが完了したか否かを示す情報である。処理実行情報１２４は、第１プロセッサ１に異常が発生しているか判断する、異常検出動作が実行されているか否かを示す情報である。異常状況情報１２５は、第１プロセッサ１に異常が発生しているか否かを示す情報である。
【０１０７】
例えば、更新部１１１は、第１プロセッサ１がＰＣＩデバイス３１−１及びメモリ３２−１にアクセスを行う度に、記憶部１２のアクセス情報１２０を更新する。
【０１０８】
記憶部１２は、例えば、第２プロセッサ通信部１３−１が有するレジスタに設けられる。記憶部１２は、第１プロセッサ１が行う、ＰＣＩデバイス３１−１及びメモリ３２−１へのアクセスに関するアクセス情報１２０を記憶する。
【０１０９】
第２プロセッサ２は、第１プロセッサ通信部２３及び第２プロセッサ通信部１３−１を介して第１プロセッサ１と接続されている。また、第２プロセッサ２は、ＰＣＩデバイス３１−２、メモリ３２−２と接続されている。第２プロセッサ２は、制御部２１、第１プロセッサ通信部２３を備える。
【０１１０】
第１プロセッサ通信部２３は、第２プロセッサ２と第１プロセッサ１と通信可能に接続する。例えばバスインターフェイスである。また、第１プロセッサ通信部２３は、記憶部２２を有する。
【０１１１】
制御部２１は、演算や制御を行う例えばプロセッサコアである。制御部２１は、ＰＣＩデバイス３１−２やメモリ３２−２にアクセスを行う。
【０１１２】
制御部２１は、取得部２１１、判断部２１２、特定部２１３を備える。
【０１１３】
取得部２１１は、第１プロセッサ１の第１プロセッサ通信部２３を介して記憶部１２へアクセスし、アクセス情報１２０を取得する。
【０１１４】
判断部２１２は、アクセス情報１２０及び所定時間前のアクセス情報１２０を複製した第２アクセス情報２２０に基づいて、第１プロセッサ１の制御部１１に異常が発生しているか否か判断する。具体的には、判断部２１２は、アクセス情報１２０が更新されていない場合、第１プロセッサ１の制御部１１に異常が発生している可能性があると判断する。そして、判断部２１２は、第１プロセッサ１の制御部１１に異常が発生している可能性があると判断した場合、第１プロセッサ１の制御部１１にアクセスする。なお、第１プロセッサ１の制御部１１の異常とは、制御部１１が停止するようなストール状態も含む。
【０１１５】
また、判断部２１２は、記憶部１２から取得したアクセス情報１２０をコピーし、第２アクセス情報２２０として記憶部２２に格納する。なお、第２アクセス情報２２０はアクセス情報１２０と同様のフォーマットを有する。
【０１１６】
特定部２１３は、判断部２１２において、第１プロセッサ１に異常が発生していると判断した場合、アクセス情報１２０に基づいて、第１プロセッサ１の制御部１１に異常が発生した原因を特定する。
【０１１７】
例えば、特定部２１３は、アクセス情報１２０を参照し、デバイス３−１へのアクセスが完了しているか否か確認する。特定部２１３は、デバイス３−１へのアクセスが完了している場合、被疑部品を第１プロセッサ１であると判断する。特定部２１３は、デバイス３−１へのアクセスが完了していない場合、複数のデバイス識別情報１２１を含むデバイス対応情報２３１から障害情報２３２を特定し、被疑部品のデバイスを特定する。特定部２１３は、特定した被疑部品に関する障害情報２３２を、第２プロセッサ通信部１３−１、第３プロセッサ通信部１３−２、第１プロセッサ通信部４３を介して、監視サーバ２００に対して障害情報２３２を通知する。
【０１１８】
記憶部２２は、第１プロセッサ通信部２３が有するレジスタに設けられる。記憶部２２は、所定時間前の第１プロセッサ１が行う、ＰＣＩデバイス３１−１及びメモリ３２−１へのアクセスに関するアクセス情報１２０を第２アクセス情報２２０として記憶している。
【０１１９】
所定時間前のアクセス情報１２０とは、例えば、判断部２１２が前回動作した際に記憶したアクセス情報１２０である。
【０１２０】
さらに、記憶部２２は、対応情報２３０を記憶する。対応情報２３０は、故障被疑部品を特定するための情報である。例えば、複数のデバイス識別情報１２１を含むデバイス対応情報２３１と障害情報２３２の対応関係を示す情報である。デバイス対応情報２３１と障害情報２３２の対応関係には、それぞれの対応関係を識別するためのインデックス情報２３３が付与されている。
【０１２１】
なお、制御部１１、制御部２１、及び表示制御部４１が有する各種機能部は、例えば図示しない補助記憶装置に格納されたプログラムに基づいて、所定の処理を実行することによって実現する。もしくは、当該プログラムをＣＤＲＯＭ（Ｃｏｍｐａｃｔ Ｄｉｓｃ Ｒｅａｄ Ｏｎｌｙ Ｍｅｍｏｒｙ）等の記憶媒体に格納して制御部１１、制御部２１、及び表示制御部４１に提供することも可能である。
【０１２２】
次に、本発明のアクセス情報１２０の詳細について説明する。
【０１２３】
図９は、本発明の第３の実施形態における、アクセス情報１２０の詳細例を示す図である。
アクセス情報１２０は、デバイス識別情報１２１、アクセス回数情報１２２、アクセス完了情報１２３、処理実行情報１２４、異常状況情報１２５を含む。
【０１２４】
デバイス識別情報１２１は、第１プロセッサ１がアクセスしたデバイス３−１の識別情報である。例えば、デバイス識別情報１２１は、アクセス先のデバイスの種類を格納するアクセス先デバイス領域、アクセスするデバイス３−１の詳細情報を格納するＢｕｓ番号領域、Ｄｅｖｉｃｅ番号領域、Ｆｕｎｃｔｉｏｎ番号領域、Ｏｆｆｓｅｔ領域を有する。
【０１２５】
アクセス先デバイス領域は、第１プロセッサ１がアクセスするデバイス３−１の種類を格納する領域である。
【０１２６】
例えば、アクセス先デバイス領域の値が「０ｘ０１」であった場合、第１プロセッサ１は、ＰＣＩデバイス３１−１にアクセスしたことを示す。アクセス先デバイス領域の値が「０ｘ０２」であれば、第１プロセッサ１がメモリ３２−１にアクセスしたことを示す。アクセス先デバイスの領域の値が「０ｘＦＦ」であれば、ＰＣＩデバイス３１−１及びメモリ３２−１以外の未定義のデバイス３−１にアクセスしたことを示す。
【０１２７】
Ｂｕｓ番号領域、Ｄｅｖｉｃｅ番号領域、Ｆｕｎｃｔｉｏｎ番号領域、Ｏｆｆｓｅｔ領域は、アクセスするデバイス３−１の詳細情報を格納する領域である。
【０１２８】
例えば、第１プロセッサ１がＰＣＩデバイス３１−１にアクセスした場合、そのＰＣＩデバイス３１−１のＢｕｓ番号、Ｄｅｖｉｃｅ番号、アクセスするレジスタを表すＯｆｆｓｅｔを、それぞれＢｕｓ番号領域、Ｄｅｖｉｃｅ番号領域、Ｆｕｎｃｔｉｏｎ番号領域、Ｏｆｆｓｅｔ領域に格納する。
【０１２９】
第１プロセッサ１がメモリ３２−１にアクセスした場合、Ｂｕｓ番号領域には、アクセス元の情報を格納する。第１プロセッサ１がメモリ３２−１にアクセスした場合には、Ｂｕｓ番号領域には、第１プロセッサ１を示す情報を格納する。また、Ｄｅｖｉｃｅ領域には、メモリ３２−１の位置が識別可能な番号を格納する。
【０１３０】
アクセス回数情報１２２は、第１プロセッサ１がアクセスしたデバイス３−１の回数を含む情報である。例えば、アクセス回数情報１２２は、カウンタ領域を有する。アクセス情報１２０を書き換えるたびに、カウンタ領域のカウント数を加算する。
【０１３１】
アクセス回数情報１２２は、連続で同じデバイス３−１の同じ領域にアクセスした場合に、１回目のアクセスなのか、数回目のアクセスなのか判断するために用いる。
【０１３２】
アクセス完了情報１２３は、第１プロセッサ１のデバイス３−１へのアクセスが完了したか否かを示す情報である。アクセス完了情報１２３は、アクセス完了フラグを有する。例えば、アクセス完了フラグ「０ｘ００」は、第１プロセッサ１がデバイス３−１へのアクセスが完了したことを示す。アクセス完了フラグ「０ｘ０１」は、第１プロセッサ１がデバイス３−１へのアクセスをしていることを示す。
【０１３３】
処理実行情報１２４は、第２プロセッサ２が、第１プロセッサ１に異常が発生しているか否か判断する、異常検出動作が実行中か否かを示す情報である。処理実行情報１２４は、例えばセマフォ領域である。例えば、セマフォ領域が「０ｘ０１」であれば、第２プロセッサ２が、第１プロセッサ１に異常が発生しているか否か判断する、異常検出動作を実行中であることを示す。セマフォ領域が「０ｘ００」であれば、第２プロセッサ２が、第１プロセッサ１に異常が発生しているか否か判断する、異常検出動作を実行していないことを示す。
【０１３４】
異常状況情報１２５は、第２プロセッサ２が、第１プロセッサ１に異常が発生していると判断したか否かを示す情報である。異常状況情報１２５は、例えばストールフラグである。ストールフラグが「０ｘ０１」であれば、第２プロセッサ２が、第１プロセッサ１に異常が発生していると判断したことを示す。ストールフラグがが「０ｘ００」であれば、第２プロセッサ２が、第１プロセッサ１に異常が発生していないと判断していることを示す。
【０１３５】
すなわち、図９におけるアクセス情報１２０は、第１プロセッサ１のデバイス３−１へのアクセスは１回目であり、ＰＣＩデバイス３１−１にアクセスしたことを示している。また、第１プロセッサ１は異常状態と判断されておらず、第１プロセッサ１のデバイス３−１へのアクセスが完了していることを示す。また、第２プロセッサ２は、第１プロセッサ１に異常が発生しているか否かの異常検出動作をしていないことを示している。
【０１３６】
図１０は、本発明の第３の実施形態における対応情報２３０の一例を示す図である。
【０１３７】
対応情報２３０は、デバイス対応情報２３１と、障害情報２３２と、インデックス情報２３３と、を含む。
【０１３８】
デバイス対応情報２３１は、複数のデバイス３−１に関する識別情報である。デバイス対応情報２３１は、デバイス識別情報１２１と対応している。
【０１３９】
障害情報２３２は、デバイス対応情報２３１と対応する障害情報を示している。例えば、障害情報２３２は、被疑部品の名称や警告メッセージの番号を含む。
【０１４０】
デバイス対応情報２３１は、デバイス識別情報１２１と対応する情報であるため、デバイス識別情報１２１を検索キーとして障害情報２３２を検索可能である。
【０１４１】
インデックス情報２３３は、デバイス対応情報２３１と障害情報２３２と対応関係に対してそれぞれに付与され、デバイス対応情報２３１と障害情報２３２との対応関係を識別するための情報である。
【０１４２】
次に、本発明の第３の実施形態における動作を説明する。
【０１４３】
運用サーバ１００が起動を開始すると、第１プロセッサ１及び第２プロセッサ２に通電し、制御部１１及び制御部２１の起動動作を開始する。
【０１４４】
まず、第１プロセッサ１は、第１プロセッサ１の第３プロセッサ通信部１３−２と、第１プロセッサ通信部４３との間の初期化を行い、第１プロセッサ１と第３プロセッサ４間の通信を確立する。
【０１４５】
次に、第１プロセッサ１は、第１プロセッサ１の第２プロセッサ通信部１３−１と第２プロセッサ２の第１プロセッサ通信部２３間の初期化を実行し、第１プロセッサ１と第２プロセッサ２間の通信を確立させる。
【０１４６】
その後、第１プロセッサ１及び第２プロセッサ２に接続されているデバイス３の初期化を行う。
【０１４７】
図１１は、本発明の第３の実施形態における動作概要を示すタイミングチャートである。
【０１４８】
起動動作中に、以下のステップＳ１からＳ５を行うことで、第１プロセッサ１の異常を検出する。なお、図５における第２の実施形態のタイミングチャートと同等のステップに関しては同じ符号を付している。
【０１４９】
まず、第１プロセッサ１は、デバイス３−１へアクセスを行う度に、後述するアクセス情報記録動作を行い、アクセス情報１２０を記録、更新する（ステップＳ１）。
【０１５０】
次に、第２プロセッサ２は、第１プロセッサ１の制御部１１について後述する異常検出動作を行う（ステップＳ２）。
【０１５１】
なお、第２プロセッサ２が異常検出動作を実行するタイミングとしては、第１プロセッサ１のみが処理を実行中であって、第２プロセッサ２が待機状態の場合、定期的に異常検出動作を実行する。例えば、第１プロセッサ１の初期化や設定の初期化においては、第２プロセッサ２は、１０秒に１回、定期的に異常検出動作を実行する。
【０１５２】
第１プロセッサ１及び第２プロセッサ２がともに処理を実行している場合は、第１プロセッサ１がデバイス３−１にアクセスを行うタイミングで、第２プロセッサ２は、異常検出動作を実行する。
【０１５３】
第２プロセッサ２は、第１プロセッサ１の制御部１１について異常を検出した場合、被疑部品特定動作を実行する（ステップＳ３）。第２プロセッサ２は、第１プロセッサ１の制御部１１について異常を検出しなかった場合、被疑部品特定動作を終了し、ステップＳ１に戻る。
【０１５４】
第２プロセッサ２は、被疑部品特定動作によって特定された障害情報２３２を、第１プロセッサ１を通じて第３プロセッサ４に障害情報２３２の通知を行う（ステップＳ４）。
【０１５５】
そして、ステップＳ５において、第３プロセッサ４は表示部５に障害情報２３２の表示指示を行い、表示部５は、その障害情報２３２を表示する（ステップＳ５）。
【０１５６】
以上で、本発明の第３の実施形態における動作概要を示すタイミングチャートを終了する。
【０１５７】
詳細な動作については図１２から図１４のフローチャートにおいて説明する。
【０１５８】
まず、アクセス情報記録動作について説明する。図１２は、本発明の第３の実施形態における、アクセス情報記録動作を示すフローチャートである。本動作は、ステップＳ１の動作と対応する。
【０１５９】
まず、第１プロセッサ１の更新部１１１は、第２プロセッサ２が異常検出動作を実行しているか否か判断する（ステップＳ３００１）。具体的には、更新部１１１は、アクセス情報１２０の処理実行情報１２４を参照して、異常検出動作を実行しているか判断する。
【０１６０】
例えば、更新部１１１は、セマフォ領域が「０ｘ０１」である場合、第２プロセッサ２の判断部２１２が異常検出動作を実行していると判断する。セマフォ領域が「０ｘ００」の場合は、第２プロセッサ２が異常検出動作を実行していないと判断する。
【０１６１】
更新部１１１は、第２プロセッサ２が異常検出動作を実行していると判断した場合（ステップＳ３００１：ＹＥＳ）、アクセス情報１２０の更新は行わず、ステップＳ３００９に進む。
【０１６２】
更新部１１１は、第２プロセッサ２が異常検出動作を実行していないと判断した場合（ステップＳ３００１：ＮＯ）、第１プロセッサ１がアクセスを行うデバイス３−１が事前に定義済みのデバイスであるか否か判断する（ステップＳ３００２）。
【０１６３】
更新部１１１は、事前に定義されているデバイス３−１であると判断した場合（ステップＳ３００２：ＹＥＳ）、当該デバイス３−１の識別情報をデバイス識別情報１２１に格納する（ステップＳ３００４）。未定義のデバイス３−１であれば、更新部１１１は未定義である旨を示す情報を格納し（ステップＳ３００３）、ステップＳ３００５に進む。
【０１６４】
例えば、更新部１１１は、デバイス識別情報１２１のアクセス先デバイス領域に事前に定義がされている場合その値を格納し、未定義の場合、「０ＸＦＦ」を格納する。
【０１６５】
次に、更新部１１１は、第１プロセッサ１がアクセスするデバイス３−１の詳細情報を抽出する（ステップＳ３００５）。更新部１１１は、例えば詳細情報として、Ｂｕｓ番号、Ｄｅｖｉｃｅ番号、Ｆｕｎｃｔｉｏｎ番号を抽出する。
【０１６６】
更新部１１１は、ステップＳ３００５で抽出した詳細情報をデバイス識別情報１２１として格納する（ステップＳ３００６）。例えば、更新部１１１は、取得したＢｕｓ番号、Ｄｅｖｉｃｅ番号、Ｆｕｎｃｔｉｏｎ番号をそれぞれＢｕｓ番号領域、Ｄｅｖｉｃｅ番号領域、Ｆｕｎｃｔｉｏｎ番号領域に格納する。
【０１６７】
更新部１１１は、アクセス回数情報１２２の値に１を加算する（ステップＳ３００７）。例えば、更新部１１１は、カウンタ領域の値をリードし、その値に１を加算して格納カウンタ領域に格納する。
【０１６８】
更新部１１１は、アクセス完了情報１２３に、アクセスが未完了であることを示す情報を格納する（ステップＳ３００８）。例えば、更新部１１１は、アクセス完了フラグに「０ｘ００」を格納する。
【０１６９】
そして、制御部１１は、デバイス３−１へアクセスを実行する（ステップＳ３００９）。
【０１７０】
正常にデバイス３−１へのアクセスが完了した場合、更新部１１１は、アクセス完了情報１２３にアクセスが完了した旨を示す情報を格納する（ステップＳ３０１０）。例えば、更新部１１１は、アクセス完了フラグに「０ｘ０１」を格納する。
【０１７１】
以上で、本発明の第３の実施形態における、アクセス情報記録動作を示すフローチャートが終了する。
【０１７２】
次に、異常検出動作を説明する。図１３は、本発明の第３の実施形態における、異常検出動作を示すフローチャートである。本動作は、ステップＳ２の動作と対応する。
【０１７３】
まず、第２プロセッサ２の取得部２１１は、第１プロセッサ１の記憶部１２にアクセスを行い、第１プロセッサ１が最後にアクセスしたデバイス３−１のアクセス情報１２０を取得する（ステップＳ４００１）。具体的には、取得部２１１は、第１プロセッサ通信部２３を介して、第２プロセッサ通信部１３−１が有する記憶部１２のアクセス情報１２０を取得する。
【０１７４】
次に、第２プロセッサの判断部２１２は、他のプロセッサが異常検出動作を実行中か否かを判断する（ステップＳ４００２）。具体的には、判断部２１２は、アクセス情報１２０の処理実行情報１２４を参照し、他のプロセッサが異常検出動作を実行中か否かを判断する。例えば、判断部２１２は、処理実行情報１２４に含まれるセマフォ領域を参照し、「０ｘ０１」が格納されていた場合、他のプロセッサが異常検出を実行中と判断し、「０ｘ００」が格納されていた場合、他のプロセッサが異常検出動作を実行中ではないと判断する。
【０１７５】
判断部２１２は、他のプロセッサが異常検出動作を実行中であると判断した場合（ステップＳ４００２：ＹＳＥ）、本動作を終了する。
【０１７６】
判断部２１２は、他のプロセッサが異常検出動作を実行中でないと判断した場合（ステップＳ４００２：ＮＯ）、判断部２１２は、アクセス情報１２０の処理実行情報１２４に処理実行中であることを示す情報を格納する（ステップＳ４００３）。例えば、判断部２１２は、セマフォ領域に「０ｘ０１」を格納する。これにより、他のプロセッサがアクセス情報１２０の処理実行情報１２４以外にアクセスを行うことがなくなる。
【０１７７】
判断部２１２は、記憶部２２から第２アクセス情報２２０を読み込む（ステップＳ４００４）。
【０１７８】
なお、初めて異常検出動作を実行する場合は、第２アクセス情報２２０が格納されていない。この場合は、第２アクセス情報２２０の値を全て「０ｘ００」として読み込んでもよいし、アクセス情報１２０を第２アクセス情報２２０として扱ってもよい。もしくは、本ステップを行わずに、ステップＳ４００７に進んでもよい。
【０１７９】
判断部２１２は、第１プロセッサ１が新たにデバイス３−１へアクセスを行ったか否か判断する（ステップＳ４００５）
具体的には、判断部２１２は、アクセス情報１２０のアクセス回数情報１２２と、第２アクセス情報１２０のアクセス回数情報とを比較する。判断部２１２は、アクセス情報１２０のアクセス回数情報１２２の値が大きい場合、第１プロセッサ１が新たにデバイス３−１へアクセスを行ったと判断する。
【０１８０】
判断部２１２は、アクセス情報１２０のアクセス回数情報１２２と、第２アクセス情報１２０のアクセス回数情報とを比較し、同じであった場合、第１プロセッサ１が新たにデバイス３−１へアクセスを行っていないと判断する。
【０１８１】
判断部２１２は、第１プロセッサ１が新たにデバイス３−１へアクセスを行ったと判断した場合（ステップＳ４００５：ＮＯ）、第１プロセッサ１に異常が発生している可能性があると判断する（ステップＳ４００６）。
【０１８２】
判断部２１２は、第１プロセッサ１の制御部１１が停止しているか否かを確認するため、制御部１１へアクセスを行う（ステップＳ４００７）。判断部２１２は、例えば、割込みによるプロセッサ間通信を行う。
【０１８３】
そして、判断部２１２は、第１プロセッサ１の制御部１１から応答があるか否か判断する（ステップＳ４００８）。
【０１８４】
判断部２１２は、制御部１１から応答がない場合（ステップＳ４００８：ＮＯ）、第１プロセッサ１の制御部１１が停止していると判断する（ステップＳ４００９）。
【０１８５】
判断部２１２は、アクセス情報１２０の異常状況情報１２５に異常発生を示す情報を格納する。例えば判断部２１２は、ストールフラグに「０ｘ０１」を格納する。
そして本動作を終了する。
【０１８６】
判断部２１２は、制御部１１から応答がある場合（ステップＳ４００８：ＹＥＳ）、第１プロセッサ１の制御部１１に停止していないと判断する（ステップＳ４０１２）
そしてステップＳ４０１３に進む。
【０１８７】
一方、ステップＳ４００５にて、判断部２１２は、第１プロセッサ１が新たにデバイス３−１にアクセスを行ったと判断した場合（ステップＳ４００５：ＹＥＳ）、第１プロセッサ１の制御部１１に異常が発生していないと判断する（ステップＳ４０１１）。
【０１８８】
そして、判断部２１２は、アクセス情報１２０を第２アクセス情報２２０として、記憶部２２に格納する（ステップ４０１２）。
【０１８９】
そして、判断部２１２は、処理実行情報１２４に処理実行完了を示す情報を格納する（ステップＳ０１３）。例えば、判断部２１２は、セマフォ領域に「０ｘ００」を格納する。
【０１９０】
そして本動作を終了する。
【０１９１】
以上で、本発明の第３の実施形態における異常検出動作を示すフローチャートが終了する。
【０１９２】
なお、本実施形態では、第１プロセッサ１及び第２プロセッサを有する構成であるため、他のプロセッサが異常検出動作を実行する場合はないが、プロセッサが３つ以上ある場合に他のプロセッサが異常検出動作を実行する可能性もありうる。
【０１９３】
例えば、第１プロセッサ１、第２プロセッサ２、第４プロセッサを備えた構成において、第２プロセッサ２は、第１プロセッサ１に対して異常検出動作を実行していたとする。このとき、第４プロセッサが第１プロセッサ１に対して異常検出動作を実行しようとした場合、ステップＳ４００２と同様に、他のプロセッサが異常検出動作を実行中か否かを判断する。第４プロセッサは、他のプロセッサが異常検出動作していると判断し、異常検出動作を終了する。
【０１９４】
このように、各プロセッサが異常検出動作を実行する際に、ステップＳ４００２で他のプロセッサが異常検出動作を実行中か否かを判断するため、第１プロセッサ１に対する排他処理を確実に行うことができる。しかしながら、排他制御が必要でない場合は、ステップＳ４００２は省略することも可能である。
【０１９５】
最後に、被疑部品特定動作及び障害情報通知動作、障害情報表示動作を説明する。図１４は、本発明の第３の実施形態における、被疑部品特定動作及び障害情報通知動作、障害情報表示動作を示すフローチャートである。本動作は、図１１におけるステップＳ３からステップＳ５の動作と対応する。
【０１９６】
まず、第１プロセッサ１の特定部２１３は、異常検出動作において、判断部２１２が第１プロセッサ１の制御部１１の異常を検出したか否かを判断する（ステップＳ５００１）。具体的には、特定部２１３は、アクセス情報１２０の異常状況情報１２５を参照し、異常発生を示す情報が格納されているか否か判断する。
【０１９７】
特定部２１３は、第１プロセッサ１の制御部１１の異常を検出していないと判断した場合（ステップＳ５００１：ＮＯ）、本動作を終了する。
【０１９８】
特定部２１３は、第１プロセッサ１の制御部１１の異常を検出したと判断した場合（ステップＳ５００１：ＹＥＳ）、制御部１１のデバイス３−１へのアクセスが完了しているか否か判断する（ステップＳ５００２）。具体的には、特定部２１３は、アクセス情報１２０のアクセス完了情報１２３を参照し、アクセスが完了を示す情報が格納されているか否か判断する。
【０１９９】
例えば、アクセス完了フラグが「０ｘ００」の場合、特定部２１３は、アクセスが完了していると判断し、アクセス完了フラグが「０ｘ０１」の場合、特定部２１３は、アクセスが未完了と判断する。
【０２００】
特定部２１３は、制御部１１のデバイス３−１へのアクセスが完了していると判断した場合（ステップＳ５００２：ＹＥＳ）、アクセス完了後に異常が発生したことになる。ステップＳ５００９に進み、特定部２１３は、異常発生の原因となっている被疑部品が第１プロセッサ１であると判断する（ステップＳ５００９）。特定部２１３は、対応情報２３０内から第１プロセッサ１のインデックス情報２３３を取得する（ステップＳ５０１０）。そして、ステップＳ５０１１に進む。
【０２０１】
特定部２１３は、制御部１１のデバイス３−１へのアクセス未完了と判断した場合（ステップＳ５００２：ＮＯ）、アクセス先のデバイス３−１が原因で異常が発生したと考えられる。特定部２１３は、アクセス情報１２０のデバイス識別情報１２１を用いて、対応情報２３０から被疑部品を検索する（ステップＳ５００３）。
【０２０２】
具体的には、特定部２１３は、デバイス対応情報２３１から、デバイス識別情報１２１のＢｕｓ領域、Ｄｅｖｉｃｅ領域、Ｆｕｎｃｔｉｏｎ領域の値をキーとして、被疑部品を検索する。
【０２０３】
特定部２１３は、対応情報２３０内に、デバイス識別情報１２１と対応する被疑部品があるか否か判断する（ステップＳ５００４）。
【０２０４】
特定部２１３は、対応情報２３０内に、デバイス識別情報１２１と対応する被疑部品がある場合（ステップＳ５００４：ＹＥＳ）、ステップＳ５００７に進む。
【０２０５】
特定部２１３は、対応情報２３０内に、デバイス識別情報１２１と対応する被疑部品がないと判断した場合（ステップＳ５００４：ＮＯ）、対応情報２３０内からデバイス識別情報１２１のアクセスデバイス名領域を基に被疑部品を検索する（ステップＳ５００５）。
【０２０６】
具体的には、特定部２１３は、デバイス対応情報２３１から、デバイス識別情報１２１のアクセスデバイス名領域の値をキーとして、被疑部品を検索する。
【０２０７】
特定部２１３は、対応情報２３０内に、デバイス識別情報１２１と対応する被疑部品があるか否か判断する（ステップＳ５００６）。
【０２０８】
特定部２１３は、対応情報２３０内に、デバイス識別情報１２１と対応する被疑部品がある場合（ステップＳ５００４：ＹＥＳ）、ステップＳ５００７に進む。
【０２０９】
特定部２１３は対応情報２３０内に、デバイス識別情報１２１と対応する被疑部品がない場合（ステップＳ５００６：ＮＯ）、ステップＳ５００９に進み、第１プロセッサ１内のデータ不正として、異常発生の原因となっている被疑部品が第１プロセッサ１であると判断する（ステップＳ５００９）。特定部２１３は、対応情報２３０内から第１プロセッサ１のインデックス情報２３３を取得する（ステップＳ５０１０）。そして、ステップＳ５０１１に進む。
【０２１０】
特定部２１３は、対応情報２３０内に、デバイス識別情報１２１と対応する被疑部品がある場合（ステップＳ５００４またはステップＳ５００６：ＹＥＳ）、異常発生の原因となっている被疑部品は、対応情報２３０で検索された部品であると判断する（ステップＳ５００７）
特定部２１３は、対応情報２３０内から、ステップＳ５００７で検索された部品のインデックス情報２３３を取得する（ステップＳ５００８）。
【０２１１】
以上のＳ５００１からステップＳ５０１０が、図１１におけるステップＳ３と対応する被疑部品特定動作である。
【０２１２】
次に、特定部２１３は、ステップＳ５００８又はステップＳ５０１０において特定されたインデックス情報２３３と対応する障害情報２３２を第３プロセッサ４に送信する（ステップＳ５０１１）。
【０２１３】
具体的には、特定部２１３は、第１プロセッサ１の第３プロセッサ通信部１３−２にアクセスを行い、障害情報２３２を第３プロセッサ通信部１３−２に送信する。そして、第３プロセッサ通信部１３−２は、第１プロセッサ通信部４３に送信する。これによって、障害情報２３２は、第３プロセッサ４に送信される。
【０２１４】
なお、本ステップは、図１１におけるステップＳ４に対応する障害情報通知動作である。
【０２１５】
そして、第３プロセッサ４の表示制御部４１は、表示部５に障害情報２３２を表示する。
【０２１６】
図１５−１及び図１５−２は、本発明の第３の実施形態における、表示部５への表示例である。例えば、表示制御部４１は、図１５−１や図１５−２のように、障害の発生日時や障害の内容、故障被疑部品、補助情報を表示部５に表示するように制御する。
なお、本ステップは、図１１におけるステップＳ５に対応する、障害情報表示動作である。
【０２１７】
以上で、本発明の第３の実施形態における被疑部品特定動作、障害情報通知動作、障害情報表示動作を示すフローチャートが終了する。
【０２１８】
本発明の第３の実施形態は、プロセッサの異常状態を効率的に検出することができる。その理由は、第２プロセッサ２が、第１プロセッサ１が行うデバイス３へのアクセスに関するアクセス情報１２０を参照し、新たに第１プロセッサ１がアクセスを行ったか否かに基づいて、第１プロセッサ１に異常が発生したか否かを判断するためである。
【０２１９】
特許文献１のように、立ち上げ中のＣＰＵ間のインターフェース回路の初期設定を行っている段階において、ＣＰＵ側から応答がない場合に異常と検出する旨が記載されている。しかし、特許文献１の方法では、起動開始から起動完了までにかかる通常の起動完了時間待機する必要がある。
【０２２０】
一方、本発明の第３の実施形態は、第２プロセッサ２が第１プロセッサ１のアクセス情報１２０を確認することができるため、起動開始から起動完了までの起動完了時間を待機する必要がなく、迅速にプロセッサの異常を検出することができる。
【０２２１】
また、運用サーバが有するプロセッサが起動完了時間内に起動完了しない場合に、プロセッサに異常が発生したと判断する方法もある。しかしながら、上記方法では、プロセッサから起動完了の通知が来ないことをトリガとして異常を検出しているため、プロセッサに何らかの異常が発生していることはわかるものの、その異常の原因を知ることができない。
【０２２２】
一方、本発明の第３の実施形態は、第２プロセッサ２が、第１プロセッサ１がアクセスしたデバイス３−１の情報を確認することができるため、異常の原因となる被疑部品を特定することができる。
【０２２３】
また、本発明の第３の実施形態は、第２プロセッサと第３プロセッサが直接接続されていない場合であっても、第３プロセッサに異常を通知することができる。その理由は、第１プロセッサ１の通信部１３を介して、第３プロセッサ４に障害情報２３２を送信できるように構成したためである。
【０２２４】
本実施形態では、第１プロセッサ１及び第２プロセッサ２は、一つの制御部１１、制御部２１を有する構成を示したが、第１プロセッサ１及び第２プロセッサ２は複数の制御部を有するようなマルチコアプロセッサであってもよい。
【０２２５】
本実施形態では、アクセス情報１２０を格納する領域は、第２プロセッサ通信部１３−１が保持するレジスタとして説明したが、これに限られない。第１プロセッサ１がアクセス情報１２０を記憶でき、第２プロセッサ２がアクセスできる場所であれば構わない。
【０２２６】
本実施形態では、第２プロセッサ２が第１プロセッサ１の異常検出する例を示したが、同様の仕組みで、第１プロセッサ１が第２プロセッサ２の異常検出するとも可能である。プロセッサの数が増えた場合、各プロセッサ間で相互に異常を検出するように構成してもよい。
また、プロセッサの数が増えた場合には、各プロセッサに異常検出対象のプロセッサを割り当てて異常検出対象のプロセッサを分担させることも可能である。
【０２２７】
本実施形態では、被疑部品を第２プロセッサ２で特定しているが、アクセス情報１２０を第３プロセッサに送信し、第３プロセッサ４が被疑部品特定動作を実行しても構わない。
【０２２８】
また、第３プロセッサ４がアクセス情報１２０にアクセスできる場合は、第２プロセッサ２がアクセス情報１２０を第３プロセッサ４に送信するのではなく、直接、第３プロセッサ４がアクセス情報１２０を取得してもよい。
【０２２９】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。アクセス情報１２０など各種情報や、異常検出動作など各種動作の実行タイミングは一例を示したに過ぎずもちろんこれに限られない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【０２３０】
１０００    マルチプロセッサシステム
１００    運用サーバ
２００    監視サーバ
１    第１プロセッサ
１１    プロセッサコア、制御部
１１１    更新部
１２    レジスタ、記憶部
１２０    アクセス情報
１２１    デバイス識別情報
１２２    アクセス回数情報
１２３    アクセス完了情報
１２４    処理実行情報
１２５    異常状況情報
１３    通信部
１３−１    第２プロセッサ通信部
１３−２    第３プロセッサ通信部
２    第２プロセッサ
２１    プロセッサコア、制御部
２１１    取得部
２１２    判断部
２１３    特定部
２２    記憶部
２３    第１プロセッサ通信部
２２０    第２アクセス情報
２３０    対応情報
２３１    デバイス対応情報
２３２    障害情報
２３３    インデックス情報
２３    第１プロセッサ通信部
３    デバイス
３１    ＰＣＩデバイス
３２    メモリ
４    第３プロセッサ
４１  表示制御部
４３  第１プロセッサ通信部
５  表示部
【図１】
2019066991.tif 000003
【図２】
2019066991.tif 000004
【図３】
2019066991.tif 000005
【図４】
2019066991.tif 000006
【図５】
2019066991.tif 000007
【図６】
2019066991.tif 000008
【図７】
2019066991.tif 000009
【図８】
2019066991.tif 000010
【図９】
2019066991.tif 000011
【図１０】
2019066991.tif 000012
【図１１】
2019066991.tif 000013
【図１２】
2019066991.tif 000014
【図１３】
2019066991.tif 000015
【図１４】
2019066991.tif 000016
【図１５−１】
2019066991.tif 000017
【図１５−２】
2019066991.tif 000018