(57)【要約】【課題】本明細書は、複数のＣＰＵを監視するのに適したコンピュータシステムを提供する。【解決手段】本明細書が開示するコンピュータシステム２は、メインＣＰＵと複数のサブＣＰＵを備えている第１コンピュータと、メインＣＰＵに接続されている監視ＣＰＵを備えている第２コンピュータを備えている。メインＣＰＵは、全てのサブＣＰＵが正常に動作している間は予め定められたパルス幅の確認信号を周期的に第２コンピュータへ送信する。メインＣＰＵは、いずれかのサブＣＰＵの異常を検知した場合、異常が検知されたサブＣＰＵに応じて確認信号のパルス幅を変更する。【選択図】図１
2020067685.tif 000002
【特許請求の範囲】
【請求項１】
メインＣＰＵと複数のサブＣＰＵを備えている第１コンピュータと、
前記メインＣＰＵに接続されている監視ＣＰＵを備えている第２コンピュータと、
を備えており、
前記メインＣＰＵは、全ての前記サブＣＰＵが正常に動作している間は予め定められたパルス幅の確認信号を周期的に前記第２コンピュータへ送信し、いずれかの前記サブＣＰＵの異常を検知した場合、異常が検知された前記サブＣＰＵに応じて前記パルス幅を変更する、コンピュータシステム。
【請求項２】
前記第１コンピュータは、それぞれの前記サブＣＰＵに対応したカウンタを備えており、それぞれの前記サブＣＰＵは、所定の周期で自身に対応するカウンタのカウンタ値を変更し、
前記メインＣＰＵは、前記周期が経過してもカウンタ値が変更されていない場合は、そのカウンタに対応するサブＣＰＵで異常が発生したと判断する、請求項１に記載のコンピュータシステム。
【請求項３】
前記監視ＣＰＵは、前記確認信号の前記パルス幅の変化を検知した場合に、変更された前記パルス幅に応じた待ち時間の後にリセット信号を前記第１コンピュータへ送信する、請求項１または２に記載のコンピュータシステム。
【請求項４】
前記監視ＣＰＵは、前記確認信号が途絶えたときには直ちにリセット信号を前記第１コンピュータへ送信する、請求項３に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書が開示する技術は、第１コンピュータと第２コンピュータが通信可能に接続されているコンピュータシステムに関する。
【背景技術】
【０００２】
コンピュータのＣＰＵ（Central Processing Unit：中央演算装置）の異常を検知する方法としてウォッチドッグタイマ方式が知られている。監視する側のコンピュータのＣＰＵ（監視ＣＰＵ）は、ウォッチドッグタイマと呼ばれるタイマを備えている。監視される側のコンピュータのＣＰＵ（管理下ＣＰＵ）は、周期的にウォッチドッグタイマクリア信号（ＷＤＣ信号）を監視ＣＰＵへ送信する。ＷＤＣ信号を受信した監視ＣＰＵはウォッチドッグタイマをゼロクリアする。管理下ＣＰＵで異常が発生すると、ＷＤＣ信号が途切れる。監視ＣＰＵは、ウォッチドッグタイマが所定の値までカウントアップすると管理下ＣＰＵで異常が発生したと判断し、リセット信号を管理下ＣＰＵへ送信する。
【０００３】
１個の監視ＣＰＵが複数の管理下ＣＰＵを監視することができる技術が特許文献１に開示されている。特許文献１に開示されたコンピュータシステムでは、複数の管理下ＣＰＵのそれぞれがＷＤＣ信号を時分割して出力する。複数の管理下ＣＰＵの時分割されたＷＤＣ信号を合成した一つのＷＤＣ信号が監視ＣＰＵに送信される。いずれかの管理下ＣＰＵで異常が発生した場合、その管理下ＣＰＵが受け持つ期間はＷＤＣ信号が途切れ、ウォッチドッグタイマがカウントアップし、監視ＣＰＵからリセット信号が出力される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−５３９５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１の技術は、複数の管理下ＣＰＵを時分割して監視することにほかならず、特定の管理下ＣＰＵを監視している間は、別の管理下ＣＰＵを監視できない。また、管理下ＣＰＵの数が増えると、全部の管理下ＣＰＵを監視するのに要する時間が増えてしまう。本明細書は、複数のＣＰＵを監視するのに適したコンピュータシステムを提供する。
【課題を解決するための手段】
【０００６】
本明細書が開示するコンピュータシステムは、第１コンピュータと第２コンピュータを備えている。第１コンピュータは、メインＣＰＵと、複数のサブＣＰＵを備えている。第２コンピュータは、第１コンピュータのメインＣＰＵに通信可能に接続されている監視ＣＰＵを備えている。第１コンピュータのメインＣＰＵとサブＣＰＵが上述した管理下ＣＰＵに対応し、第２コンピュータの監視ＣＰＵが、管理下ＣＰＵを監視する監視ＣＰＵに対応する。
【０００７】
メインＣＰＵは、全てのサブＣＰＵが正常に動作している間は予め定められたパルス幅の確認信号を周期的に監視ＣＰＵへ送信する。メインＣＰＵは、いずれかのサブＣＰＵの異常を検知した場合、異常が検知されたサブＣＰＵに応じて確認信号のパルス幅を変更する。監視ＣＰＵは、確認信号のパルス幅をチェックすることで、どのサブＣＰＵで異常が生じたかを判別することができる。パルス幅が可変である確認信号が、従来のＷＤＣ信号にかわる信号である。
【０００８】
メインＣＰＵによる複数のサブＣＰＵの監視の一例は次の通りである。第１コンピュータは、それぞれのサブＣＰＵに対応したカウンタを備えている。それぞれのサブＣＰＵは、所定の周期で自身に対応するカウンタのカウンタ値を変更する。メインＣＰＵは、それぞれのカウンタのカウンタ値を確認し、サブＣＰＵのカウンタ更新周期が経過してもカウンタ値が変更されていない場合は、そのカウンタに対応するサブＣＰＵで異常が発生したと判断する。
【０００９】
上記したコンピュータシステムは、異常が生じたサブＣＰＵに応じて、リセット信号を送信するタイミングを異ならしめることができる。例えば、重要なサブＣＰＵで異常発生が検知された場合は直ちにリセット信号を第１コンピュータへ送信し、重要性の比較的に低いサブＣＰＵでの異常発生の場合は、一定時間待ってからリセット信号を第１コンピュータへ送ってもよい。重要性の低いサブＣＰＵの場合は、ほかのデバイスのリセット処理などを実行してから、第１コンピュータをリセットするように構成してもよい。すなわち、監視ＣＰＵは、確認信号のパルス幅の変化を検知した場合に、変更されたパルス幅に応じた待ち時間の後にリセット信号を第１コンピュータへ送信するように構成してもよい。
【００１０】
なお、第１コンピュータは、それぞれのＣＰＵがリセット端子を備えている場合には、異常が検知されたサブＣＰＵのリセット端子へリセット信号を送信するように構成されていてもよい。あるいは、第１コンピュータが一つのリセット端子のみを備えている場合は、異常が検知されたサブＣＰＵに関わらずに、単一のリセット端子へリセット信号を送信すればよい。
【００１１】
メインＣＰＵで異常が発生した場合は、確認信号そのものが途絶える（確認信号はＨＩＧＨレベルかＬＯＷレベルのいずれかに固定される）。そこで、監視ＣＰＵは、メインＣＰＵからの確認信号が途絶えたときには直ちにリセット信号を第１コンピュータ（メインＣＰＵ）へ送信するようにしてもよい。メインＣＰＵで異常が発生した場合は全てのサブＣＰＵの監視が行えなくなるので、直ちにリセットすることが好ましいからである。
【００１２】
本明細書が開示する技術の詳細とさらなる改良は以下の「発明を実施するための形態」にて説明する。
【図面の簡単な説明】
【００１３】
【図１】実施例のコンピュータシステムのブロック図である。
【図２】確認信号の例を示す信号タイムチャートである。
【図３】サブＣＰＵが実行する処理のフローチャートである。
【図４】メインＣＰＵが実行する確認信号出力処理のフローチャートである。
【図５】監視ＣＰＵが実行する監視処理のフローチャートである。
【発明を実施するための形態】
【００１４】
図面を参照して実施例のコンピュータシステム２を説明する。図１に、コンピュータシステム２のブロック図を示す。実施例のコンピュータシステム２は、第１コンピュータ３と第２コンピュータ４が信号線４１で相互に通信可能に接続されているシステムである。第１コンピュータ３と第２コンピュータ４は、機械を制御するコントローラであってよい。
【００１５】
第１コンピュータ３は、マルチコアコンピュータであり、複数のＣＰＵ（メインＣＰＵ１０と、第１サブＣＰＵ２０ａ、第２サブＣＰＵ２０ｂ）を含んでいる。第１コンピュータ３のメインＣＰＵ１０とサブＣＰＵ２０ａ、２０ｂは、第２コンピュータ４の監視ＣＰＵ３０によって、異常が生じてないか監視される。より具体的には、第１コンピュータ３のメインＣＰＵ１０が、複数のサブＣＰＵ２０ａ、２０ｂで異常が生じてないか監視し、その結果（異常発生の有無）を、確認信号によって監視ＣＰＵ３０へ通知する。
【００１６】
第１コンピュータ３は、クロック発生器１４も備えている。クロック発生器１４は、割り込みによりメインＣＰＵ１０の定周期タイミング生成処理１３を起動する。定周期タイミング生成処理１３では、予め定められた周期でメインＣＰＵ１０の確認信号出力処理１１と、第１サブＣＰＵ２０ａの定周期処理２１を起動する。図示は省略されているが、定周期タイミング生成処理１３は、第２サブＣＰＵ２０ｂの定周期処理も起動する。
【００１７】
メインＣＰＵ１０とサブＣＰＵ２０ａ、２０ｂは、内部バス４２（コンピュータ内部の信号線）で相互に通信可能に接続されており、定周期タイミング生成処理１３が生成する所定の処理の起動信号も、内部バス４２を介してサブＣＰＵ２０ａ、２０ｂに送信される。また、各ＣＰＵの定周期処理２１は、複数のサブＣＰＵのそれぞれに固有の機能を実現する処理である。例えば、コンピュータシステム２が電気自動車のコントローラに適用されており、第１コンピュータが２個のモータを制御するコントローラである場合、第１サブＣＰＵ２０ａには第１モータを制御するための固有の定周期処理が実装されており、第２サブＣＰＵ２０ｂには第２モータを制御するための固有の定周期処理が実装される。
【００１８】
第１サブＣＰＵ２０ａの定周期処理２１には、パルス信号出力処理２２が含まれる。定周期処理２１が起動され、所定の処理が実行された後、パルス信号出力処理２２により、メインＣＰＵ１０へパルス信号が送信される。第１サブＣＰＵ２０ａが送信するパルス信号は、メインＣＰＵ１０が備える第１カウンタ１２ａのカウンタ値を＋１だけ増加させる。メインＣＰＵ１０は、第２サブＣＰＵ２０ｂ用に第２カウンタ１２ｂも備えている。すなわち、メインＣＰＵ１０は、複数のサブＣＰＵ２０ａ、２０ｂのそれぞれに対応したカウンタを備えている。
【００１９】
第１サブＣＰＵ２０ａと第２サブＣＰＵ２０ｂは、それぞれ、一定の周期で対応するカウンタのカウンタ値を１ずつ増加させる。いずれかのサブＣＰＵが暴走すると（あるいは停止すると）、カウンタ値が更新されなくなる。メインＣＰＵ１０は、確認信号出力処理１１において、各カウンタのカウンタ値を確認する。サブＣＰＵの定周期処理の周期に相当する時間が経過してもカウンタ値が変化しない場合、メインＣＰＵ１０は、そのカウンタ値に対応するサブＣＰＵで異常が生じたと判断する。メインＣＰＵ１０は、異常が検知されない間は、確認信号出力処理によって所定のパルス幅の確認信号を第２コンピュータ４の監視ＣＰＵ３０へ送信する。メインＣＰＵ１０は、いずれかのサブＣＰＵでの異常発生を検知した場合、正常時とは異なるパルス幅の確認信号を監視ＣＰＵ３０へ送信する。監視ＣＰＵ３０は、確認信号のパルス幅をチェックすることで、第１コンピュータ３で異常が発生しているサブＣＰＵを特定することができる。
【００２０】
第２コンピュータ４の監視ＣＰＵ３０は、受信した確認信号のパルス幅を計測して記憶する計測部３１と、計測部３１に保持されたパルス幅を使って第１コンピュータ３の複数のＣＰＵ（メインＣＰＵ１０、サブＣＰＵ２０ａ、２０ｂ）を監視する監視処理３２を備えている。計測部３１は回路で構成されており、監視処理３２は、プログラムで実現される。監視処理３２にて、上述した確認信号のパルス幅のチェックが行われる。監視処理３２では、第１コンピュータ３のいずれかのＣＰＵで異常が発生した場合、異常が発生したＣＰＵを特定し、そのＣＰＵに応じた処理を実行する。具体的には、監視ＣＰＵ３０は、異常が発生したＣＰＵに対応した待ち時間の後に、リセット信号を第１コンピュータ３へ送信する。確認信号とリセット信号は、第１コンピュータ３と第２コンピュータ４を接続している信号線４１を介して授受される。
【００２１】
図２に、第１コンピュータ３のメインＣＰＵ１０から第２コンピュータ４の監視ＣＰＵ３０に送られる確認信号の例のタイムチャートを示す。確認信号は、ＨＩＧＨレベルとＬＯＷレベルの電圧が交互に現れる信号である。メインＣＰＵ１０は、一定周期（周期Ｔ１）で、パルス幅ＰＷ０の確認信号を監視ＣＰＵ３０へ送信する。図２（Ａ）は、全てのサブＣＰＵが正常に動作しているときの確認信号のタイムチャートである。異常が検知されていない間、メインＣＰＵ１０は、パルス幅ＰＷ０の確認信号を監視ＣＰＵ３０へ送信する。なお、パルス幅ＰＷ０は、確認信号の周期Ｔ１の半分の長さに相当する。図２の時刻ｔ１、ｔ２、ｔ３、ｔ４は、確認信号の各パルスの先頭の時刻である。
【００２２】
メインＣＰＵ１０は、複数のサブＣＰＵ２０ａ、２０ｂで異常が発生しているか否かを監視するが、メインＣＰＵ１０自体も異常を起こし得る。メインＣＰＵ１０で異常が生じた場合の確認信号のタイムチャート例を図２（Ｂ）、（Ｃ）に示す。図２（Ｂ）は、時刻ｔ２１でメインＣＰＵ１０に異常が生じたときの確認信号のタイムチャートであり、図２（Ｃ）は、時刻ｔ２２でメインＣＰＵに異常が生じたときの確認信号のタイムチャートである。メインＣＰＵ１０の処理は後に詳しく説明するが、メインＣＰＵは、一定周期（パルス幅ＰＷ０に相当する（Ｔ１／２）の時間周期）で確認信号出力処理を実行する。確認信号出力処理では、メインＣＰＵ１０は、（Ｔ１／２）周期で確認信号のＨＩＧＨレベルとＬＯＷレベルを反転する。確認信号がＨＩＧＨレベルに保持されている時刻ｔ２１においてメインＣＰＵ１０で異常が発生した場合、時刻ｔ２１以降、メインＣＰＵ１０は確認信号を反転することができない。それゆえ、時刻ｔ２１以降、確認信号はＨＩＧＨレベルに保持され続けることになる。一方、確認信号がＬＯＷレベルに保持されている時刻ｔ２２においてメインＣＰＵ１０で異常が発生した場合、時刻ｔ２２以降、メインＣＰＵ１０は確認信号を反転することができない。それゆえ、時刻ｔ２２以降、確認信号はＬＯＷレベルに保持され続けることになる。第２コンピュータ４の監視ＣＰＵ３０は、確認信号の周期Ｔ１を超えて確認信号がＨＩＧＨレベルあるいはＬＯＷレベルに保持された場合、メインＣＰＵ１０で異常が発生したと判断することができる。確認信号が周期Ｔ１を超えてＨＩＧＨレベルあるいはＬＯＷレベルに保持されることは、確認信号が途絶えたことに他ならない。したがって、別言すれば、監視ＣＰＵ３０は、確認信号が途絶えた場合、メインＣＰＵ１０で異常が発生したと判断することができる。
【００２３】
図２（Ｄ）は、第１サブＣＰＵ２０ａの異常が検知された場合の確認信号のタイムチャートであり、図２（Ｅ）は、第２サブＣＰＵ２０ｂの異常が検知された場合の確認信号のタイムチャートである。メインＣＰＵ１０は、いずれかのサブＣＰＵの異常を検知した場合、異常が検知された前記サブＣＰＵに応じて確認信号のパルス幅を変更する。具体的には、メインＣＰＵ１０は、第１サブＣＰＵ２０ａでの異常発生を検知した場合、確認信号のパルス幅を、正常時のパルス幅ＰＷ０とは異なるパルス幅ＰＷ１（ＰＷ１＜ＰＷ０）に変更する（図２（Ｄ））。また、メインＣＰＵ１０は、第２サブＣＰＵ２０ｂでの異常発生を検知した場合、確認信号のパルス幅を、正常時のパルス幅ＰＷ０、及び、サブＣＰＵ２０ａの異常発生に対応するパルス幅ＰＷ１とは異なるパルス幅ＰＷ２（ＰＷ１＜ＰＷ２＜ＰＷ０）に変更する（図２（Ｅ））。
【００２４】
なお、メインＣＰＵ１０は、第１サブＣＰＵ２０ａの異常を検知したのが時刻ｔ２１であっても時刻ｔ２２であっても、確認信号の周期の先頭である時刻ｔ３にパルス幅ＰＷ１の確認信号を出力する（図２（Ｃ））。同様に、メインＣＰＵ１０は、第２サブＣＰＵ２０ｂの異常を検知したのが時刻ｔ２１であっても時刻ｔ２２であっても、確認信号の周期の先頭である時刻ｔ３にパルス幅ＰＷ２の確認信号を出力する。なお、メインＣＰＵ１０は、監視ＣＰＵからリセット信号を受信し、ＣＰＵリセット処理を行うまで、異常を生じたサブＣＰＵに対応したパルス幅の確認信号を周期Ｔ１で出力し続ける。
【００２５】
図３に、第１サブＣＰＵ２０ａが定期的に実行する定周期処理２１のフローチャートを示す。先に述べたように、定周期処理２１は、メインＣＰＵ１０の定周期タイミング生成処理１３から送られてくる信号で起動される。第１サブＣＰＵ２０ａは、まず、自身に割り当てられている固有の処理を実行する（ステップＳ２）。固有の処理とは、例えば、先に述べた第１モータを制御する処理である。定周期で実行すべき固有の処理を終了したら、第１サブＣＰＵ２０ａは、メインＣＰＵ１０が有している第１カウンタ１２ａのカウンタ値を増加させるパルス信号を出力する（ステップＳ３）。そして。定周期処理を終了する。カウンタ値を増加させるパルス信号が出力されると、第１カウンタ１２ａのカウンタ値が「１」だけ増加する。第２サブＣＰＵ２０ｂも、図２のフローチャートの処理と同様の処理を実行する。すなわち、第２サブＣＰＵ２０ｂは、自身に割り当てられた固有の処理を実行した後、メインＣＰＵ１０の第２カウンタ１２ｂのカウンタ値を１だけ増加させるパルス信号を出力する。サブＣＰＵ２０ａ、２０ｂが正常に動作していれば、それぞれの周期毎に、対応するカウンタ１２ａ、１２ｂのカウンタ値が１ずつ増加する。
【００２６】
図４に、メインＣＰＵ１０が実行する確認信号出力処理のフローチャートを示す。確認信号出力処理は、確認信号の周期Ｔ１の半分の時間（Ｔ１／２）の周期で起動される。メインＣＰＵ１０は、サブＣＰＵ２０ａ、２０ｂのそれぞれに対応したカウンタ１２ａ、１２ｂのカウンタ値を読み込む（ステップＳ１２）。次に、メインＣＰＵ１０は、第１サブＣＰＵ２０ａに対応している第１カウンタ１２ａのカウンタ値が前回から変化したか否かを確認する（ステップＳ１３）。第１カウンタ１２ａのカウンタ値が前回から変化していた場合（ステップＳ１３：ＹＥＳ）、メインＣＰＵ１０は、第１サブＣＰＵ２０ａが正常に動作していると判断する。次にメインＣＰＵ１０は、第２サブＣＰＵ２０ｂに対応している第２カウンタ１２ｂのカウンタ値が前回から変化したか否かを確認する（ステップＳ１４）。第２カウンタ１２ｂのカウンタ値が前回から変化していた場合（ステップＳ１４：ＹＥＳ）、メインＣＰＵ１０は、第２サブＣＰＵ２０ｂも正常に動作していると判断する。その場合、メインＣＰＵ１０は、確認信号のレベルを反転する（ステップＳ１５）。
【００２７】
先に述べたように、確認信号出力処理は、周期（Ｔ１／２）で起動される。全てのサブＣＰＵが正常の場合、周期（Ｔ１／２）で確認信号のレベルが反転する。すなわち、パルス幅ＰＷ０が（Ｔ１／２）の確認信号が周期Ｔ１で出力されることになる。
【００２８】
ステップＳ１３にて、第１カウンタ１２ａのカウンタ値が変化していなかった場合、メインＣＰＵ１０は、第１サブＣＰＵ２０ａにて異常が発生していると判断する（ステップＳ１３：ＮＯ）。その場合、メインＣＰＵ１０は、そのときの確認信号のレベルがＬＯＷレベルであれば、正常時のパルス幅ＰＷ０とは異なるパルス幅ＰＷ１（ＰＷ１＜ＰＷ０）の確認信号を出力する（ステップＳ１６：ＹＥＳ、Ｓ１７）。ステップＳ１３の判断がＮＯの後、そのときの確認信号のレベルがＨＩＧＨレベルの場合は、メインＣＰＵ１０は、正常時と同様に確認信号を反転し、処理を終了する（ステップＳ１６：ＮＯ、Ｓ１５）。その場合、次回の確認信号出力処理において、必ずステップＳ１６の分岐判断がＹＥＳとなり、パルス幅ＰＷ１の確認信号が出力される。ステップＳ１６の処理により、図２（Ｄ）に示したように、時刻ｔ２１と時刻ｔ２２のいずれでも第１サブＣＰＵ２０ａの異常が検知された場合、時刻ｔ３（すなわち、確認信号の周期の先頭）でパルス幅ＰＷ１の確認信号が出力される。また、第１サブＣＰＵ２０ａで異常が発生している間は、図４の処理の２回に１回は、ステップＳ１６の分岐判断がＹＥＳとなり、パルス幅ＰＷ１の確認信号が信号周期Ｔ１で繰り返し出力される。
【００２９】
ステップＳ１４にて第２カウンタ１２ｂのカウンタ値が変化していなかった場合も、ステップＳ１３の場合と同様である。すなわち、メインＣＰＵ１０は、確認信号のレベルがＨＩＧＨレベルであれば、確認信号を反転する（ステップＳ１８：ＮＯ、Ｓ１５）。確認信号のレベルがＬＯＷレベルであれば、パルス幅ＰＷ２の確認信号を出力する（ステップＳ１８：ＹＥＳ、Ｓ１９）。第２サブＣＰＵ２０ｂに対応するパルス幅ＰＷ２は、正常時のパルス幅ＰＷ０とも相違するし、第１サブＣＰＵ２０ａに対応するパルス幅ＰＷ１とも相違する。
【００３０】
図５に、監視ＣＰＵ３０が実行する監視処理のフローチャートを示す。監視処理は、確認信号の周期Ｔ１と同期して実行される必要はない。監視処理は、確認信号の周期Ｔ１と同じかそれよりも長い周期で実行されればよい。
【００３１】
監視処理は、リセット信号が出力された直後はスキップされる（ステップＳ２２：ＹＥＳ）。これは、リセット信号が出力され、第１コンピュータ３がリセット中であると、確認信号のパルス幅が不定となる可能性があるからである。
【００３２】
リセット信号出力直後でない場合、監視ＣＰＵ３０は、最新の確認信号のパルス幅を取得する。監視ＣＰＵ３０は、確認信号の最新のパルス幅を保持する回路（図１の計測部３１）を有しており、その回路は、確認信号の立ち上がりエッジをトリガにして割り込み処理で実行される。したがって、図５のプログラム処理の実行に関わらず、監視ＣＰＵ３０は確認信号の最新のパルス幅を取得することができる。
【００３３】
パルス幅が確認信号の周期Ｔ１以上か、または、ゼロの場合、確認信号がＨＩＧＨまたはＬＯＷに保持されているとして、監視ＣＰＵ３０は、第１コンピュータ３のメインＣＰＵ１０で異常が生じていると判断する。メインＣＰＵ１０で異常が生じていると、他のサブＣＰＵの監視ができなくなる。そのような異常は重大な異常であるので、監視ＣＰＵ３０は、第１コンピュータ３に対して直ちにリセット信号を出力する（ステップＳ２４：ＹＥＳ、Ｓ３１）。
【００３４】
パルス幅が確認信号の周期以上でなく、かつ、ゼロでもない場合、監視ＣＰＵ３０は、確認信号のパルス幅をチェックする。パルス幅がＰＷ０、すなわち、正常時のパルス幅である場合は、処理を終了する（ステップＳ２５：ＰＷ０）。
【００３５】
パルス幅がＰＷ１である場合（ステップＳ２５：ＰＷ１）、監視ＣＰＵ３０は、第１サブＣＰＵ２０ａで異常が発生していると判断して、第１サブＣＰＵ異常時の処理を実行し（ステップＳ２６）、ついで所定時間ｄＴ１だけ待った後（ステップＳ２７）、リセット信号を出力する（ステップＳ３１）。また、パルス幅がＰＷ２である場合（ステップＳ２５：ＰＷ２）、監視ＣＰＵ３０は、第２サブＣＰＵ２０ｂで異常が発生していると判断して、第２サブＣＰＵ異常時の処理を実行し（ステップＳ２９）、ついで所定時間ｄＴ２だけ待った後（ステップＳ３０）、リセット信号を出力する（ステップＳ３１）。所定時間ｄＴ１とｄＴ２は異なる時間に設定されている。すなわち、監視ＣＰＵ３０は、異常が生じたサブＣＰＵに応じた時間だけ待った後に、リセット信号を第１コンピュータ３へ出力する。これは、サブＣＰＵごとに固有の処理が相違するため、異常が生じたサブＣＰＵに対応した異常時対応処理に要する時間が異なるからである。ただし、先に述べたように、メインＣＰＵ１０で異常が生じた場合は、監視ＣＰＵ３０は直ちに第１コンピュータ３へリセット信号を出力する。
【００３６】
ステップＳ２５では、所定の許容幅を伴った上で、確認信号のパルス幅と、ＰＷ０、ＰＷ１、ＰＷ２が比較される。例えば、確認信号のパルス幅がＰＷ０プラスマイナスｄＷの範囲に属していれば、監視ＣＰＵ３０は、確認信号のパルス幅が正常時のパルス幅ＰＷ０に等しいと判断する。同様に、確認信号のパルス幅がＰＷ１（ＰＷ２）プラスマイナスｄＷの範囲に属していれば、監視ＣＰＵ３０は、確認信号のパルス幅がパルス幅ＰＷ１（ＰＷ２）に等しいと判断する。
【００３７】
以上説明したように、コンピュータシステム２は、複数のＣＰＵを同時に監視することができる。実施例のコンピュータシステム２は、複数のサブＣＰＵ２０ａ、２０ｂをカウンタにより監視するとともに異常を生じたサブＣＰＵに対応したパルス幅の確認信号を出力するメインＣＰＵ１０と、受信した確認信号のパルス幅によって異常を生じたサブＣＰＵを特定する監視ＣＰＵ３０を備える。これら２個のＣＰＵが協業して複数のサブＣＰＵを同時に監視することが可能となる。
【００３８】
実施例で説明した技術に関する留意点を述べる。実施例では、カウンタ１２ａ、１２ｂは、メインＣＰＵ１０の中に設けられていた。それぞれのサブＣＰＵに対応したカウンタは、メインＣＰＵの外に設けられていてもよい。実施例では、第１コンピュータ３は、２個のサブＣＰＵを含んでいる。本明細書が開示する技術は、３個以上のサブＣＰＵを含んでいるコンピュータに適用することも可能である。その場合、それぞれのサブＣＰＵに応じて、対応するパルス幅が用意される。メインＣＰＵは、異常が生じたサブＣＰＵに対応したパルス幅の確認信号を出力する。メインＣＰＵは、いずれかのサブＣＰＵの異常を検知した場合、異常が検知されたサブＣＰＵに応じて正常時のパルス幅を変更するように構成されていればよい。サブＣＰＵは、所定の周期でカウンタのカウンタ値を変更すればよい。
【００３９】
それぞれのサブＣＰＵは、所定の周期で自身に対応するカウンタのカウンタ値を変更し、メインＣＰＵは、サブＣＰＵのカウンタ更新周期が経過してもカウンタ値が変更されていない場合は、そのカウンタに対応するサブＣＰＵで異常が発生したと判断するように構成されていればよい。
【００４０】
本明細書が開示する技術は特にマルチコアのコンピュータにおいて複数のコア（複数のサブＣＰＵ）を同時に監視するのに好適である。
【００４１】
確信信号を出力するハードウエアは、ＣＰＵが一般に備えているＷＤＣ信号（ウォッチドッグクリア信号）に関係するハードウエアを活用するとよい。
【００４２】
以上、本発明の具体例を詳細に説明したが、これらは例示に過ぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成し得るものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【符号の説明】
【００４３】
２：コンピュータシステム
３：第１コンピュータ
４：第２コンピュータ
１０：メインＣＰＵ
１１：確認信号出力処理
１２ａ、１２ｂ：カウンタ
１３：定周期タイミング生成処理
１４：クロック発生器
２０ａ、２０ｂ：第１サブＣＰＵ
２１：定周期処理
２２：パルス信号出力処理
３０：監視ＣＰＵ
３１：計測部
３２：監視処理
４１：信号線
４２：内部バス
【図１】
2020067685.tif 000003
【図２】
2020067685.tif 000004
【図３】
2020067685.tif 000005
【図４】
2020067685.tif 000006
【図５】
2020067685.tif 000007