(57)【特許請求の範囲】
【請求項１】
複数のプロセッサと、当該複数のプロセッサによって共用されるメモリとを備えたマルチプロセッサシステムであって、
所定の診断処理を、各プロセッサに順次行わせる診断制御手段を有し、
前記所定の診断処理において、前記プロセッサは、
メモリの特定領域からデータを読み出し、
当該読み出したデータの値が所定値であるかどうかを調べ、
前記読み出したデータの値が前記所定値である場合には、当該読み出したデータに対して所定の演算を施し、当該演算の演算結果の正常性を検証すると共に、当該検証の検証結果が正常であった場合には、前記メモリの前記特定領域へ前記所定値のデータの書き込みを行い、当該検証の検証結果が異常であった場合には、前記メモリの前記特定の領域に異常の旨を表すデータの書き込みを行い、
前記読み出したデータの値が前記所定値でない場合には、前記所定値に対して所定の演算を施し、当該演算の演算結果の正常性を検証すると共に、当該検証の検証結果が正常であった場合には、前記メモリの前記特定領域へ前記所定値のデータの書き込みを行い、当該検証の検証結果が異常であった場合には、前記メモリの前記特定の領域に前記異常の旨を表すデータの書き込みを行うことを特徴とするマルチプロセッサシステム。
【請求項２】
請求項１記載のマルチプロセッサシステムであって、
前記所定の診断処理において、前記プロセッサは、前記メモリの特定領域から読み出したデータが異常の旨を表すものである場合に、当該プロセッサの直前に前記診断処理を行ったプロセッサが異常である旨の出力を行うことを特徴とするマルチプロセッサシステム。
【請求項３】
請求項１または２記載のマルチプロセッサシステムであって、
前記複数のプロセッサの各々は、マルチコアプロセッサのコアであることを特徴とするマルチプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサまたはプロセッサコアを複数備えたマルチプロセッサシステムにおいて、正常性の診断を行う技術に関するものである。
【背景技術】
【０００２】
プロセッサまたはプロセッサコアを複数備えたマルチプロセッサシステムにおいて、正常性の診断を行う技術としては、各プロセッサに自己診断機能を設け、各プロセッサにおいて自己の正常性の診断を行う技術（たとえば特許文献１）や、各プロセッサに定期的に所定の出力を行わせ、プロセッサとは別に設けた異常検出部において各プロセッサの前記所定の出力の有無より、プロセッサの暴走を検出する技術（たとえば、特許文献２）が知られている。
【特許文献１】特開平11-065868号公報
【特許文献２】特開平05-257747号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
前記特許文献１記載の技術によれば、各プロセッサが、各々独立的に自己の診断を行うために、必ずしも全プロセッサについての効率的な診断を行うことができない。一方、特許文献２の技術では、プロセッサの暴走等の動作異常を検出するものであって、前記所定の出力に関連しないプロセッサの機能部の故障等の異常を検出することはできない。
【０００４】
そこで、本発明は、マルチプロセッサシステムにおいて、より実効性のある各プロセッサまたはプロセッサコアの正常性の診断を効率的に行うことを課題とする。
【課題を解決するための手段】
【０００５】
前記課題達成のために、本発明は、複数のプロセッサと、当該複数のプロセッサによって共用されるメモリとを備えたマルチプロセッサシステムに、所定の診断処理を、各プロセッサに順次行わせる診断制御手段を備え、前記所定の診断処理において、前記プロセッサが、メモリの特定領域からのデータを読み出し、読み出したデータに対して所定の演算を施し、当該演算の演算結果の正常性を検証すると共に、当該検証の検証結果が正常であった場合に前記メモリの前記特定領域へ所定のデータの書き込みを行い、当該検証の検証結果が異常であった場合に異常の旨を表す出力を行うようにしたものである。なお、ここで言うプロセッサは、マルチコアプロセッサにおけるプロセッサコアを含む。
【０００６】
このようなマルチプロセッサシステムによれば、各プロセッサにおいて、演算機能の検証を行う診断処理を、直前に診断処理を行ったプロセッサのメモリへの書き込み機能及び自プロセッサのメモリからの読み込み機能の検証と共に、直前に診断処理を行ったプロセッサがメモリに書き込んだデータを用いて、順次行うことができるので、効率的に実効性のある各プロセッサの正常性の診断を行うことができるようになる。
【０００７】
ここで、このようなマルチプロセッサシステムは、前記所定の診断処理において、前記プロセッサは、前記検証の検証結果が異常であった場合に、前記出力として、前記メモリの前記特定の領域に異常の旨を表すデータの書き込みを行うと共に、前記メモリの特定領域からデータを読み出した際に当該データの値が所定値であるかどうかを調べ、所定値でない場合には、前記メモリの特定領域から読み出したデータに代えて、前記検証の検証結果が正常であった場合に前記メモリの前記特定領域への書き込みに用いる前記所定のデータを用いて、前記所定の演算を行うように構成してもよい。また、この場合には、前記所定の診断処理において、前記プロセッサは、前記メモリの特定領域から読み出したデータが異常の旨を表すものである場合に、当該プロセッサの直前に前記診断処理を行ったプロセッサが異常である旨の出力を行うように構成してもよい。
【発明の効果】
【０００８】
以上のように、本発明によれば、マルチプロセッサシステムにおいて、より実効性のある各プロセッサまたはプロセッサコアの正常性の診断を効率的に行うことができる。
【発明を実施するための最良の形態】
【０００９】
以下、本発明の実施形態をマルチコアプロセッサへの適用を例にとり説明する。
図１に本実施形態に係るマルチプロセッサシステムの構成を示す。
図示するようにマルチプロセッサシステムは、マルチコアプロセッサ１と、メインメモリ２、メモリマネージャ３、ブリッジ４等を有する。また、マルチコアプロセッサ１は、複数のコア１０と、診断制御部１１とを有する。
そして、このような構成において、マルチコアプロセッサ１の各コア１０は、メモリマネージャ３を介してメインメモリ２にアクセスしたり、ブリッジ４を介して、各種I/Oデバイスにアクセスすることができる。
ここで、マルチコアプロセッサ１の各コア１０は、各々、命令キャッシュ１０１、データキャッシュ１０２、命令キャッシュ１０１やデータキャッシュ１０２と外部との間のロード/ストアを制御するメモリコントローラ１０３、プログラムカウンタ１０４、命令フェッチ/デコーダ１０５、各種演算を行う演算装置１０６、各種レジスタ群１０７、全体の動作を制御するコントローラ１０８などの、一般的なマイクロプロセッサとしての構成の他、所定の診断処理を行うための診断処理プログラムを予め記憶した診断処理プログラムメモリ１０９を備えている。
【００１０】
そして、このような構成において、各コア１０のコントローラ１０８は、診断制御部１１から診断処理の起動を指示されると、診断処理プログラムメモリ１０９の診断処理プログラムの先頭アドレスをプログラムカウンタ１０４にセットすることにより、当該コア１０において診断処理プログラムを実行する。
【００１１】
図２に、このような診断処理プログラムに従って各コア１０が行う診断処理の手順を示す。
図示するように、この処理において、コア１０は、まず、メインメモリ２の所定の領域からデータを読み込み、予め定められた評価基準値と比較する（ステップ２０２）。そして、両者が一致した場合には、読み込んだデータに対して所定の演算処理を施し演算結果を得て（ステップ２０６）、ステップ２０８に進む。
【００１２】
一方、インメモリの所定の領域から読み込んだデータが評価基準値と一致しない場合には（ステップ２０４）、エラーを診断制御部１１に通知した上で（ステップ２１６）、評価基準値に対して所定の演算処理を施し演算結果を得て（ステップ２０８）、ステップ２０８に進む。
【００１３】
なお、ステップ２０６またはステップ２１８で行う演算の内容は同じものであり、その演算の内容は、演算装置１０６の備える各種演算を組みあわせたものとする。または、異なる種類の演算を複数行うようにしてもよい。
そして、ステップ２０８では、ステップ２０６またはステップ２１８で得られた演算結果と、予め定められた自コア判定値を比較する。ここで、自コア判定値は、評価基準値に対してステップ２０６またはステップ２１８で行った演算が正常であった場合に得られる演算結果を表すものとする。
そして、両者が一致したならば（ステップ２１０）、評価基準値をメモリの前述した特定領域に書き込んで（ステップ２１２）、診断制御部１１に診断処理終了を通知し（ステップ２１４）、診断処理を終える。一方、演算結果と、予め定められた自コア判定値が一致しなかった場合には（ステップ２１０）、所定のエラー表示値をメモリの前述した特定領域に書き込んで（ステップ２２０）、診断制御部１１に診断処理終了を通知し（ステップ２１４）、診断処理を終える。
【００１４】
以上、各コア１０が行う診断処理について説明した。
次に、図３に、本マルチプロセッサシステムの起動時に診断制御部１１が行う診断制御処理を示す。
図示するように、この処理において診断制御部１１は、診断する各コア１０について、順次（ステップ３０２、３０８、３１０）、当該コア１０のコントローラ１０８に診断処理の起動を指示し（ステップ３０４）、当該コア１０からの診断処理終了の通知を待つ（ステップ３０６）処理を行う。
【００１５】
そして、診断する全てのコア１０について以上の処理を行ったならば、診断する１番目のコア１０について、再度、当該コア１０のコントローラ１０８に診断処理の起動を指示し（ステップ３１２）、当該コア１０からの診断処理終了の通知を待つ（ステップ３１４）処理を行う。
【００１６】
そして、以上の処理によって、ｋ番目のコア１０から、エラーが通知されていれば、ｋ番目のコア１０とｋ-１番目のコア１０を異常可能性のあるコア１０と診断する（ステップ３１６）。ただし、２度診断処理を起動する１番目のコア１０から最初の診断処理で通知されたエラーは無視し、２度目の診断処理でエラーが通知された場合に、１番目のコア１０と最後（ｎ番目）のコア１０を異常可能性のあるコア１０と診断するようにする。
【００１７】
そして、以上の処理で異常可能性のあると判定したコア１０が存在したかどうかを調べ（ステップ３１８）、存在しなければ、そのまま診断制御処理を終了し、存在した場合には、異常可能性のあると判定したコア１０のうちから、真に異常のあるコア１０を抽出し、抽出したコア１０を以降の処理に用いられないように無効化する異常コア無効化処理を起動し（ステップ３２０）、診断制御処理を終了する。
ここで、ステップ３２０で起動する異常コア無効化処理は診断制御部が行う処理であり、この異常コア無効化処理における異常可能性のあるコア１０のうちからの真に異常のあるコア１０の抽出は、たとえば、次のように行う。
すなわち、コア１０iからエラー通知が発行された場合、エラーはコア１０iとコア１０i-1（コアｉが最初のコア１０のときは最後のコア１０）との双方が異常可能性あるコア１０として判定されることになるが、実際にはコア１０iとコア１０i-1のいずれか一方のみが異常である場合がある。コアｉの前に診断処理を行ったコアｉ-1の演算機能、メインメモリ２への書き込み機能、コアｉのメインメモリ２からの読み込み機能の異常のいずれによってもコア１０iからエラー通知が発行されるからである。
【００１８】
そこで、異常コア無効化処理では、以上に示した診断制御処理を、診断処理を行うコア１０の順番や組み合わせを変更して行って、真に異常を有するコア１０を検出する。すなわち、たとえば、コアＡ、コアＢ、コアＣが存在し、コアＡ、コアＢ、コアＣ、コアＡの順に診断処理を行ってコアＣから前エラー通知が発行され、コアＣとコアＢとが異常可能性のあるコア１０と判定された場合には、コアＡ、コアＢ、コアＡの順に診断処理を行って、いずれのコア１０からも前エラー通知が発行されなかった場合には、コアＢに異常はなく、コアＣに真に異常があると判定し、コアＡ、コアＣ、コアＡの順に診断処理を行って、いずれのコア１０からも前エラー通知が発行されなかった場合には、コアＣに異常はなく、コアＢに真に異常があると判定する。
【００１９】
ただし、異常コア無効化処理における異常可能性のあるコア１０のうちからの真に異常のあるコア１０の抽出は、各コア１０に個々に適当な自己診断機能を設け、これによって行うようにするなど、他の手法によって行うようにしてもよい。
以上、診断制御部１１が行う診断制御処理について説明した。
以下、このような診断制御処理と各コア１０の診断処理によって実現されるマルチプロセッサシステムの診断動作を図４に示す。
図示するように、コア０からコアＮ-1のＮ個のコア１０の診断を行う場合、この診断動作では、まず、メインメモリ２の特定領域のデータがコア０に読み込まれ＃１、評価基準値３１と比較３２される。ここでは、メインメモリ２の特定領域のデータは、初期状態であるので、この比較３２は不一致となり、エラー＃２が診断制御部１１に通知される。ここでこのエラー＃２は、最初のコア１０の最初の診断処理によるものであるので診断制御部１１において無視される。また、コア０において、この比較３２が不一致であることより、評価基準値３１が選択３３されて、評価基準値３１に対して演算３４が行われ、演算結果と自コア判定値３５が比較３６される。そして、比較結果が一致すれば評価基準値３１が、比較結果が一致しなければエラー表示値３７が選択３８され、メインメモリ２の特定領域に書き込まれる＃３。
【００２０】
すると、次に、コア１において、メインメモリ２の特定領域にコア０によって書き込まれた＃３データが読み込まれ＃４、評価基準値３１と比較３２される。そして、比較結果が一致しなければ、コア０において演算結果と自コア判定値３５が一致しなかったこと、または、コア０の書き込み＃３に異常があったこと、または、コア１の読み込み＃４に異常があったこと、または、比較３２に異常があったことを表しているので、エラー通知＃５を診断制御部１１に通知する。そして、この通知より診断制御部１１はコア０とコア１を異常可能性あるコア１０と判定する。一方、比較結果が一致すれば、コア０において演算結果と自コア判定値３５が一致していることを表しているので、エラー通知＃５は診断制御部１１に通知せず、診断制御部１１においてコア０とコア１の異常可能性のあるコア１０としての判定は行われない。
【００２１】
次に、コア１において、比較３２における比較結果に応じて、メインメモリ２の特定領域から読み込んだデータもしくは評価基準値３１が選択３３されて演算３４が行われ、演算結果と自コア判定値３５が比較３６される。そして、比較結果が一致すれば評価基準値３１が、比較結果が一致しなければエラー表示値３７が選択３８され、メインメモリ２の特定領域に書き込まれる＃６。
【００２２】
以降、コア３からコアＮにおいて、コア１と同様の処理が行われ、各コア１０から通知されるエラー通知に基づいて、診断制御部１１において、コア１からコアＮ-1の異常可能性の有無が判定される。
そして、コアＮ-1の異常診断処理が終了し、コアＮ-１によってメインメモリ２の特定領域への書き込み＃３Ｎが行われたならば、再度コア０によって上述したコア１と同様の処理が行われ、コア０からエラー通知が通知されたならば、２度目の診断処理によるエラー通知であるので、診断制御部１１においてコア０とコアＮ-1を異常可能性あるコア１０として判定する。
【００２３】
以上、本発明の実施形態について説明した。
このように、本実施形態によれば、各コア１０において、演算機能の検証を行う診断処理を、直前に診断処理を行ったコア１０のメモリへの書き込み機能及び自コアのメモリからの読み込み機能の検証と共に、直前に診断処理を行ったコア１０がメモリに書き込んだデータを用いて、順次行うことができるので、効率的に実効性のある各コア１０の正常性の診断を行うことができるようになる。
【００２４】
なお、本実施形態で示した診断の技術はマルチコアプロセッサ１を用いずに、複数のマイクロプロセッサを用いて構成したマルチプロセッサシステムにも同様に適用することができる。
【図面の簡単な説明】
【００２５】
【図１】本発明の実施形態に係るマルチプロセッサシステムの構成を示すブロック図である。
【図２】本発明の実施形態に係る診断処理を示すフローチャートである。
【図３】本発明の実施形態に係る診断制御処理を示すフローチャートである。
【図４】本発明の実施形態に係る診断動作を示す図である。
【符号の説明】
【００２６】
１…マルチコアプロセッサ、２…メインメモリ、３…メモリマネージャ、４…ブリッジ、１０…コア、１１…診断制御部、１０１…命令キャッシュ、１０２…データキャッシュ、１０３…メモリコントローラ、１０４…プログラムカウンタ、１０５…デコーダ、１０６…演算装置、１０７…レジスタ群、１０８…コントローラ、１０９…診断処理プログラムメモリ。
【図１】
0005057911.tif 000002
【図２】
0005057911.tif 000003
【図３】
0005057911.tif 000004
【図４】
0005057911.tif 000005