JP2011002993A - ウォッチドックタイマ監視装置、ウォッチドックタイマ監視方法 - Google Patents
ウォッチドックタイマ監視装置、ウォッチドックタイマ監視方法 Download PDFInfo
- Publication number
- JP2011002993A JP2011002993A JP2009145182A JP2009145182A JP2011002993A JP 2011002993 A JP2011002993 A JP 2011002993A JP 2009145182 A JP2009145182 A JP 2009145182A JP 2009145182 A JP2009145182 A JP 2009145182A JP 2011002993 A JP2011002993 A JP 2011002993A
- Authority
- JP
- Japan
- Prior art keywords
- cpu
- cpus
- reset
- watchdog timer
- standby
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Power Sources (AREA)
- Debugging And Monitoring (AREA)
Abstract
【課題】CPUを個別に低電力モードにしても、CPUの異常を正確に検出できるマルチプロセッサシステムのウォッチドックタイマ監視装置及びウォッチドックタイマ監視方法を提供すること。
【解決手段】各CPUが個別に低電力モードに移行するマルチプロセッサシステムのウォッチドックタイマ監視装置100であって、各CPU毎に、プログラムが動作していることを示す動作状態情報を更新しながら記憶する動作状態記憶手段14と、動作状態記憶手段に動作状態情報が記憶されている場合、ウォッチドッグタイマ12をリセットするリセット手段13と、各CPU毎に、低電力モードであることを示す低電力モード状態情報を記憶するモード記憶手段15と、を有し、モード記憶手段に低電力モード状態情報が記憶されている場合、リセット手段は、動作状態記憶手段に動作状態情報が記憶されていなくても、ウォッチドッグタイマをリセットする、ことを特徴とする。
【選択図】図6
【解決手段】各CPUが個別に低電力モードに移行するマルチプロセッサシステムのウォッチドックタイマ監視装置100であって、各CPU毎に、プログラムが動作していることを示す動作状態情報を更新しながら記憶する動作状態記憶手段14と、動作状態記憶手段に動作状態情報が記憶されている場合、ウォッチドッグタイマ12をリセットするリセット手段13と、各CPU毎に、低電力モードであることを示す低電力モード状態情報を記憶するモード記憶手段15と、を有し、モード記憶手段に低電力モード状態情報が記憶されている場合、リセット手段は、動作状態記憶手段に動作状態情報が記憶されていなくても、ウォッチドッグタイマをリセットする、ことを特徴とする。
【選択図】図6
Description
本発明は、マルチプロセッサシステムのウォッチドックタイマ監視装置等に関し、特に、各CPU毎に、低電力モードに入っても、マルチプロセッサシステムを監視可能なウォッチドックタイマ監視装置及びウォッチドックタイマ監視方法に関する。
CPUの異常を検出する手段としてウォッチドッグタイマが知られている。ウォッチドッグタイマは、クロック信号をカウントしてカウンタがオーバフローするとCPUをリセットすることで、CPUを初期化する等の異常ルーチンを実行する(例えば、特許文献1参照。)。また、CPUは消費電力の低減のためクロック信号の供給を停止又はクロック信号を遅くするスタンバイモードを有するが、スタンバイモードではウォッチドッグタイマへのクロック供給も停止されるため、スタンバイモードではCPUの異常を検出することが困難とされている。
ところで、車両には多くの電子制御ユニット(以下、ECUという)が搭載されているが、搭載するECUの数と処理性能が共に増大し、ECUの増加と消費電力の増加がコストアップ要因となっている。このため、複数のECUの機能を統合することでECUの数及びコストの低減化が進められており、機能を統合するために1つのECUにマルチコアCPU又は仮想CPUを搭載することが検討されている。マルチコアCPU又は仮想CPUにおいても、消費電力を低減するには、動作の不要なCPU又は仮想CPUをスタンバイモードにすることが有効である。
一方、機能が統合されると、ECUの信頼性を確保する技術、信頼性の向上技術が益々重要になるが、マルチプロセッサシステムにおいてウォッチドッグタイマでCPUの異常を検出することが提案されている(例えば、特許文献2参照。)。特許文献2記載のマルチプロセッサシステムは、CPU毎にカウンタをリセットするフラグと、各CPUで実行されフラグを設定する監視プログラムと、1つのウォッチドッグタイマとを有する。監視プログラムは、自分のフラグを設定すると共に、他のCPUが設定したフラグの状態を監視し、フラグの数がCPUの数に等しいか否かに基づき複数のCPUのいずれかに異常が生じていると判定する。すなわち、1つのウォッチドッグタイマで各CPUの異常を検出する。
しかしながら、特許文献2記載のマルチプロセッサシステムは、各CPUが個別にスタンバイモードに入った場合の異常検出が考慮されておらず、結果的に、CPUが個別にスタンバイモードに入ることができず、消費電力の低減が困難であるという問題がある。図を用いて説明する。
図1は、特許文献2記載のウォッチドッグタイマのカウント値を模式的に示す図の一例である。監視プログラム1〜3は、CPU1〜3がそれぞれ実行する監視プログラムである。監視プログラム1〜3が正常に動作している場合、監視プログラム1〜3がフラグ1〜3をセットするため、カウンタリセット要求がオンになり、WDTカウント値もリセットされる。しかし、例えば、CPU1、3をスタンバイモードにした場合、監視プログラム2が検出するフラグの数(例えば1になる)とCPUの数(3つ)が一致しないので、カウンタリセット要求がオンにならず、タイムアウトしてしまう。
また、特許文献2には、監視するCPUの数を設定できる旨の記載がある。しかしながら、特許文献2記載の方法では、各CPUが監視するCPUの数を共有しなければならないという不都合がある。
図2は、特許文献2記載のウォッチドッグタイマのカウント値を模式的に示す図の一例である。例えば、2つのCPUを監視する設定の場合、監視プログラム2,3が2つのフラグがオンであることを検出できればよい。しかしながら、特許文献2記載の方法では、監視プログラム2,3が、CPU1がスタンバイモードであることを検知する必要があるため、各CPUが動的にスタンバイモードになった場合には、それを互いに通知する手段が必要になる。例えば、CPU1がスタンバイモードの間に、CPU2がスタンバイモードになった場合、CPU1がスタンバイモードを解除すると、監視プログラム1はCPU2を監視対象とするか否か判定できない。このように、特許文献2記載の異常検出方法では、CPU1〜3を動的にスタンバイモードにした場合、正確に異常を検出することが困難である。
車両では、駐車中もいくつかの機能が動作する必要があり、統合ECUのように複数のCPUを搭載した場合は、CPUを動的にスタンバイモードにできないと、駐車中にバッテリ残量が低下してしまう。このため、ECUの異常を検出する場合、マルチコアCPU又は複数の仮想CPUが、動的にスタンバイモードになっても、信頼性を保証することが要請される。
本発明は、上記課題に鑑み、CPUを動的に低電力モードにしても、CPUの異常を正確に検出できるマルチプロセッサシステムのウォッチドックタイマ監視装置及びウォッチドックタイマ監視方法を提供することを目的とする。
上記課題に鑑み、本発明は、各CPUが個別に低電力モードに移行するマルチプロセッサシステムのウォッチドックタイマ監視装置であって、各CPU毎に、プログラムが動作していることを示す動作状態情報を更新しながら記憶する動作状態記憶手段と、動作状態記憶手段に前記動作状態情報が記憶されている場合、ウォッチドッグタイマをリセットするリセット手段と、各CPU毎に、低電力モードであることを示す低電力モード状態情報を記憶するモード記憶手段と、を有し、モード記憶手段に低電力モード状態情報が記憶されている場合、リセット手段は、動作状態記憶手段に前記動作状態情報が記憶されていなくても、ウォッチドッグタイマをリセットする、ことを特徴とする。
CPUを個別に低電力モードにしても、CPUの異常を正確に検出できるマルチプロセッサシステムのウォッチドックタイマ監視装置及びウォッチドックタイマ監視方法を提供することができる。
以下、本発明を実施するための最良の形態について図面を参照しながら実施例を挙げて説明する。
〔WDT監視装置100の概略〕
図3は、マルチプロセッサシステムのWDT監視装置100がウォッチドッグタイマ(以下、WDT12という)のオーバフローを検出する手順の一例を示すフローチャート図である。マルチプロセッサは、例えば3つのCPUを有し、それぞれが個別にスタンバイモードになることができる。WDT監視装置100は、CPU毎に、WDT12をリセットするリセットフラグを有する(S2)。リセットフラグがオンでないことはそのCPUに異常が生じていることを示す(S3)。WDT監視装置100は、1以上のCPUに異常が発生すると、WDT12をタイムアウトさせ(S5)、異常のCPUが1つもなければ、WDT12をリセットする(S6)。
図3は、マルチプロセッサシステムのWDT監視装置100がウォッチドッグタイマ(以下、WDT12という)のオーバフローを検出する手順の一例を示すフローチャート図である。マルチプロセッサは、例えば3つのCPUを有し、それぞれが個別にスタンバイモードになることができる。WDT監視装置100は、CPU毎に、WDT12をリセットするリセットフラグを有する(S2)。リセットフラグがオンでないことはそのCPUに異常が生じていることを示す(S3)。WDT監視装置100は、1以上のCPUに異常が発生すると、WDT12をタイムアウトさせ(S5)、異常のCPUが1つもなければ、WDT12をリセットする(S6)。
このようなWDT監視装置100において、本実施例では、CPUがスタンバイモードの場合(S1のYes)、リセットフラグがオンであるとみなすことで、そのCPUを監視対象から除外する。こうすることで、スタンバイモードのCPUから異常検出されることを防止できる(S3)。したがって、マルチプロセッサシステムの各CPUをCPU毎にスタンバイモードにしても、WDT12がタイムアウトすることを防止できる。また、各CPUは、他のCPUがスタンバイモードか否か関わらずに独立して異常を検出するので、各CPUは他のCPUがスタンバイモードか否かを判定する必要もない。
なお、スタンバイモードとは、CPU1〜3の全体に全く動作クロック及び電力が供給されない状態、CPU1〜3の一部の回路に動作クロック及び電力が供給されない状態、又は、CPU1〜3の全体若しくは一部の回路に供給される動作クロックの周波数が低減される状態、のいずれであってもよい。
〔ハードウェア構成〕
図4は、マルチプロセッサシステムのWDT監視装置100の概略構成図の一例を示す。マルチプロセッサシステムは3つのCPU1〜3を有し、それぞれスタンバイ状態テーブル15、リセットフラグテーブル14、及び、WDTリセット信号生成部13と接続されている。また、CPU1〜3は、それぞれのスタンバイモードを制御するスタンバイ制御部1〜3、及び、クロック信号を供給するCLKジェネレータ1〜3と接続されている。
図4は、マルチプロセッサシステムのWDT監視装置100の概略構成図の一例を示す。マルチプロセッサシステムは3つのCPU1〜3を有し、それぞれスタンバイ状態テーブル15、リセットフラグテーブル14、及び、WDTリセット信号生成部13と接続されている。また、CPU1〜3は、それぞれのスタンバイモードを制御するスタンバイ制御部1〜3、及び、クロック信号を供給するCLKジェネレータ1〜3と接続されている。
なお、図4では、各CPU1〜3が実在するCPUとして記載されているが、CPU1〜3のいずれか又は全てが仮想CPUであってもよい。仮想CPUとは、例えば、ハードウェアにより複数のスレッドを切り替えて実行可能な物理CPUにおける各スレッドを言う。物理CPUは、スレッド毎にプログラムカウンタ、命令バッファ、レジスタファイル、等を有し、演算回路を時分割して利用する。プログラムカウンタ等が独立しているため、演算回路を共有してもオーバーヘッドを最小にして、各スレッドが独立して各プログラムの命令を実行することができる。1つのスレッドが1つの仮想CPUに相当する。仮想CPUの場合、例えばレジスタファイルにスタンバイフラグ1〜3とリセットフラグ1〜3を確保すればよく、本実施例のWDT監視装置100を好適に適用できる。
スタンバイ状態テーブル15とリセットフラグテーブル14は、CPU1〜3の数以上の記憶素子(例えば、レジスタ、フリップフロップ、ラッチ回路等)を有する。スタンバイ状態テーブル15はスタンバイフラグ1〜3がオンかオフかを記憶できればよく、リセットフラグテーブル14はリセットフラグ1〜3がオンかオフかを記憶できればよいので、1つの記憶素子は1ビットあればよい。CPU1はスタンバイフラグ1及びリセットフラグ1を、CPU2はスタンバイフラグ2及びリセットフラグ2を、CPU3はスタンバイフラグ3及びリセットフラグ3を、それぞれオン又はオフに操作することができる。
なお、スタンバイフラグ1〜3は、オン(1)の場合にそのCPU1〜3がスタンバイモードであることを示し、リセットフラグ1〜3はオン(1)である場合にCPU1〜3が正常に動作していることを示す。
WDTリセット信号生成部13は、CPU1〜3の全てが正常な場合にリセット信号を生成してWDT12に供給し、CPU1〜3のいずれか1以上が正常でない場合にリセット信号を生成しない。リセット信号の生成については後に詳述する。なお、WDT12には、CPU1〜3の1以上が動作している場合(CPU1〜3の全てがスタンバイモードでない場合)、動作クロックが供給される。WDT12に供給される動作クロックの周波数は、CPU1〜3と同じでもよいし、より小さい周波数でもよい。
CPU1〜3の全てが正常であれば、WDTリセット信号生成部13がリセット信号をWDT12に供給するので、WDT12がタイムアウトしない。一方、WDTリセット信号生成部13が、予め定められた時間(タイムアウト時間)内にリセット信号をWDT12に供給しない場合、WDT12がタイムアウトすることでタイムアウト処理部11にタイムアウト時の処理を要求する。タイムアウト処理部11は、例えば、CPU1〜3の再起動信号を生成する回路であってもよいし、CPU1〜3の全てのOSにソフトウェア割り込みを要求する回路であってもよい。後者の場合、OSがCPU1〜3の再起動に必要なRAMやレジスタ、アプリケーションのパラメータを退避させた後、再起動するなどの手法を採用できる。
スタンバイ制御部1〜3は、CPU1〜3の要求に応じてCLKジェネレータ1〜3がCPU1〜3に供給するクロック信号を停止又はクロック信号の周波数を遅くする。すなわち、クロックゲーティングによりスタンバイモード時の消費電力を低減する。スタンバイ制御部1〜3は、CPU1〜3の全体にクロックゲーティングしてもよいし、長期間使用されていない個別の回路へクロックゲーティングしてもよい。クロックゲーティングする回路はCPU1〜3により選定される。また、スタンバイ制御部は、CPU1〜3の要求に応じて、CPU1〜3の全体又は個別の回路へ供給される電力を停止してもよい(パワーゲーティング)。こうすることで、リーク電流を防止でき、クロックゲーティングのみで低消費電力するよりも更に消費電力を低減できる。
〔スタンバイモードになるアプリケーションプログラム〕
各CPU1〜3は、アプリケーションプログラム(以下、単に「プログラム」という)を実行することで実現されるスタンバイフラグ設定部1〜3、リセットフラグ設定部1〜3、及び、スタンバイ要求部1〜3を有する。
各CPU1〜3は、アプリケーションプログラム(以下、単に「プログラム」という)を実行することで実現されるスタンバイフラグ設定部1〜3、リセットフラグ設定部1〜3、及び、スタンバイ要求部1〜3を有する。
CPU1〜3がスタンバイモードになるプログラムは、例えば駐車中に使用されるものである。駐車中の車両は、例えばバッテリ残量を監視したり、キーレスエントリーシステムが検出エリアに進入した電子キーを監視している。バッテリ残量は、駐車中に急激に変動することは少ないので、長いターム(例えば、数秒から数時間)毎に監視すればよく、電子キーは1秒程度の間隔で検出しても、車両に接近した運転者に違和感を与えることは少ない。したがって、それぞれのプログラムに好適なサイクルで、スタンバイ要求部1〜3を呼び出す。呼び出されたスタンバイ要求部1〜3は、スタンバイ制御部1〜3に、CPU1〜3をスタンバイモードとするよう要求する。スタンバイ制御部1〜3は、上記の方法でCPU1〜3をスタンバイモードに設定する。こうすることで、駐車中の消費電力を低減できる。
例えば、バッテリ残量を監視するプログラムのスタンバイ要求部1〜3は、IG及びアクセサリがオフになり、予め定められた所定時間が経過するとプログラムを実行するCPU1〜3をスタンバイモードに設定するようスタンバイ制御部1〜3に要求する。また、スタンバイ要求部1〜3は、スタンバイフラグ設定部1〜3にスタンバイフラグ1〜3の操作を要求する。スタンバイフラグ設定部1〜3は、スタンバイモードに入る直前、入る時、又は、入った直後、スタンバイフラグ1〜3をオンに操作する。これにより、CPU1〜3がスタンバイモードになると、WDT12の監視対象から除外することができる。
また、スタンバイモードに入る前に、スタンバイ要求部1〜3はタイマを設定しておく。そして、CPU1〜3は、タイマ割込みが発生すると、スタンバイモードを解除してプログラムを実行する。
プログラムがキーレスエントリーシステムの場合も同様である。すなわち、ドアロックされてから、予め定められた所定時間が経過すると、プログラムを実行するCPU1〜3をスタンバイモードに設定するようスタンバイ制御部1〜3に要求する。また、スタンバイ要求部1〜3は、スタンバイフラグ設定部1〜3にスタンバイフラグ1〜3の操作を要求する。また、スタンバイモードに入る前に、スタンバイ要求部1〜3はタイマを設定しておく。
なお、スタンバイモードの解除はタイマ割込みに限られず、乗員の操作、IGオン、アクセサリオン、携帯電話網等を介した通信の発生等によっても、スタンバイモードは解除される。
また、スタンバイモードの解除によりプログラムが再起動すると、例えばMAIN関数からスタンバイフラグ設定部1〜3が呼び出され、スタンバイフラグ設定部1〜3はスタンバイフラグ1〜3をオフに操作する。スタンバイモードの解除時に、CPU1〜3に再起動信号が入力される場合、スタンバイフラグも自動的に初期化(オフ)されるので、この場合、プログラムが起動した後、スタンバイフラグ設定部1〜3がスタンバイフラグをオフに操作する必要はない。
一方、スタンバイモードでない(起動中の)CPU1〜3は、タイムアウト時間よりも充分に短い時間間隔でリセットフラグ1〜3をオンに操作する。オン操作のタイミングはプログラムに記述されている。例えば、タイムアウト時間の1/10〜1/2程度の時間が経過する毎に、プログラムはリセットフラグ設定部1〜3を呼び出す。リセットフラグ設定部1〜3は、リセットフラグ1〜3をオンに操作して、プログラムに制御を戻す。
図5は、各CPU1〜3がスタンバイモードに入る手順を示すフローチャート図の一例である。スタンバイモードに入る前、各CPU1〜3は、OS及びプログラムを実行している。図5のフローチャート図は、各CPU1〜3が独立に実行する。
プログラムは、実行しているCPU1〜3のいずれかをスタンバイモードに設定するタイミングか否かを判定する(S10)。スタンバイモードに設定するタイミングでない場合(S10のNo)、このCPU1〜3はWDT12の監視対象となるので、タイムアウトしないように、リセットフラグ設定部1〜3がリセットフラグ1〜3をオンに操作する(S20)。その後、リセットフラグ1〜3を再度、オン操作するタイミングとなるまで、リセットフラグ設定部1〜3はスケジュール待ちとなるが(S30)、その間、プログラムが必要な処理を実行する場合もある。
ステップS10に戻り、スタンバイモードに設定するタイミングになった場合(S10のYes)、スタンバイフラグ設定部1〜3が呼び出され、スタンバイフラグ設定部1〜3はスタンバイフラグ1〜3をオン操作する(S40)。
また、スタンバイ要求部1〜3は、スタンバイ制御部1〜3にCPU1〜3をスタンバイモードに設定するよう要求する。これにより、CPU1〜3はスタンバイモードに入る(S50)。スタンバイモードに入ったCPU1〜3は、クロック信号や電力供給が低減されるので消費電力を低減できる。すなわち、CPU1〜3毎に消費電力を低減できることになる。
スタンバイモードに入ったCPU1〜3は、スタンバイモードの間、スタンバイモードを解除するか否かを判定する(S60)。具体的には、タイマ割込み、乗員の操作、センサの信号検出による再起動信号が入力されたか否かを判定する。
スタンバイモードを解除する場合(S60のYes)、プログラムから呼び出されたスタンバイフラグ設定部1〜3はスタンバイフラグ1〜3をオフに操作する(S70)。これにより、CPU1〜3はWDT12の監視対象となる。CPU1〜3がプログラムの実行を再開することで、各CPU1〜3はバッテリ監視やドアのアンロック等の処理を再開する。各CPU1〜3は、以上の処理を繰り返す。
〔WDT12のリセット判定〕
図6は、スタンバイフラグ1〜3及びリセットフラグ1〜3の状態の組み合わせによるWDT12のリセット判定を模式的に示す図の一例である。図示するように、スタンバイフラグ1とリセットフラグ1がOR回路1に、スタンバイフラグ2とリセットフラグ2がOR回路2に、スタンバイフラグ3とリセットフラグ3がOR回路3に、それぞれ接続されている。また、OR回路1〜3の出力がAND回路21に接続されている。AND回路21の出力がWDT12に接続されている。OR回路1〜3とAND回路21は、スタンバイフラグ1〜3とリセットフラグ1〜3の状態に応じて、リセット信号を生成する。しがたって、OR回路1〜3とAND回路21は、WDTリセット信号生成部13を論理回路で表したものである。AND回路21が「1」を出力することが、WDTリセット信号生成部13がリセット信号を出力することに対応する。
図6は、スタンバイフラグ1〜3及びリセットフラグ1〜3の状態の組み合わせによるWDT12のリセット判定を模式的に示す図の一例である。図示するように、スタンバイフラグ1とリセットフラグ1がOR回路1に、スタンバイフラグ2とリセットフラグ2がOR回路2に、スタンバイフラグ3とリセットフラグ3がOR回路3に、それぞれ接続されている。また、OR回路1〜3の出力がAND回路21に接続されている。AND回路21の出力がWDT12に接続されている。OR回路1〜3とAND回路21は、スタンバイフラグ1〜3とリセットフラグ1〜3の状態に応じて、リセット信号を生成する。しがたって、OR回路1〜3とAND回路21は、WDTリセット信号生成部13を論理回路で表したものである。AND回路21が「1」を出力することが、WDTリセット信号生成部13がリセット信号を出力することに対応する。
OR回路1〜3は、スタンバイフラグ1〜3又はリセットフラグ1〜3のどちらかがオンであれば、「1」を出力する。例えば、CPU1〜3がスタンバイモードでない場合、リセットフラグ設定部1〜3が定期的にリセットフラグ1〜3をオンに操作するので、スタンバイフラグ1〜3がオンでなくても、OR回路1〜3は「1」を出力する。同様に、CPU1〜3がスタンバイモードであり、スタンバイフラグ1〜3がオンの場合、リセットフラグ1〜3の状態に関係なく、OR回路1〜3は「1」を出力する。これにより、AND回路21は「1」を出力する。なお、AND回路21の出力はリセットフラグ1〜3をオフに操作する信号として、リセットフラグ1〜3に入力される。
したがって、CPU1〜3がスタンバイモードの場合、そのCPU1〜3はWDT12の監視対象から除外できる。また、スタンバイモードになったCPU1〜3を他のCPU1〜3が把握しておくことも必要ない。換言すると、CPU1〜3がスタンバイモードでなく、かつ、プログラムが暴走するなどCPU1〜3に異常が生じたためリセットフラグ1〜3がオンに操作されない場合にのみ、OR回路1〜3が「1」を出力しないことになる。AND回路21は、OR回路1〜3が全て「1」を出力しないと「1」を出力しないので、1つのWDT12で全てのCPU1〜3を監視できる。
図7は、WDT12のカウント値を模式的に示す図の一例である。スタンバイフラグ1〜3に示すように、時刻t1までCPU1〜3はスタンバイモードに入っていない。また、プログラムは時刻t1までいずれも暴走することなく実行されており、リセットフラグ設定部1〜3は、リセットフラグ1〜3のオン操作のタイミングになると、リセットフラグ1〜3をオンに操作する。この結果、AND回路が「1」を出力し(WDTリセット信号生成部13がリセット信号を出力し)、時刻t1にWDT12がリセットされている。
一方、時刻t2にはCPU1がスタンバイモードに入っている。このため、CPU1はWDT12の監視対象から除外される。そして、時刻t2以降、CPU3に異常が生じた。この結果、リセットフラグ3がオンに操作されない。このため、OR回路1,2からは「1」が出力されるが、OR回路3からは「1」が出力されないことになり、AND回路21が「1」を出力することができない。すなわち、WDTリセット信号生成部13はWDT12にリセット信号を出力できず、時刻t3にWDT12がタイムアウトしている。
以上説明したように、本実施例のWDT監視装置100は、マルチプロセッサシステムのCPU1〜3を個別にスタンバイモードに設定することで消費電力を低減でき、スタンバイモードに入ったCPUを監視対象から除外できる。
本実施例では、CPU1〜3毎に、スタンバイモードの間もWDT12の監視対象にするか否かを設定できるWDT監視装置100について説明する。
図8は、タイムアウト時間とスタンバイモード時間の関係を模式的に示す図の一例である。図8(a)では、スタンバイモード時間がタイムアウト時間よりも長い。スタンバイモードの間、実施例1ではリセットフラグ設定部1〜3がリセットフラグ1〜3をオンに操作しないので、スタンバイモードのCPU1〜3を監視対象にすると、WDT12がタイムアウトしてしまう。したがって、図8(a)のようなプログラムの実行態様であれば、スタンバイモードの間、CPU1〜3を監視対象から除外すればよい。
図8(b)では、タイムアウト時間よりもスタンバイモード時間の方が短い。したがって、このような実行態様のプログラムであれば、スタンバイモードの間、CPU1〜3を監視対象にしても、WDT12はタイムアウトしない。また、スタンバイモードの間、CPU1〜3を監視対象から除外しても、実行時間の方が圧倒的に長いので、プログラムの実行中にCPU1〜3の異常を検出できると考えられる。したがって、図8(b)のようなプログラムの実行態様であれば、スタンバイモードの間、CPU1〜3を監視対象から除外してもよいし、しなくてもよい。
図8(c)では、スタンバイモード時間がタイムアウト時間よりも長く、かつ、プログラムの実行時間がタイムアウト時間よりも短い。したがって、スタンバイモードの間、監視対象にすると、CPU1〜3に異常が発生していなくても、WDT12がタイムアウトしてしまう。また、CPU1〜3に異常が生じていても、実行時間内にWDT12がタイムアウトしないので、CPU1〜3を監視することが困難になる。したがって、図8(c)のようなプログラムの実行態様であれば、スタンバイモードの間、CPU1〜3を監視対象から除外しないことが好ましい。しかしながら、スタンバイモードの間、WDT12がタイムアウトしてしまうので、何らかの対処が必要である。
図8(d)では、スタンバイモード時間がタイムアウト時間よりも短く、かつ、プログラムの実行時間がタイムアウト時間よりも短い。このような実行態様のプログラムでは、CPU1〜3に異常が生じていても、実行時間内にWDT12がタイムアウトしないので、CPU1〜3を監視することが困難になる。一方、スタンバイモードの間、CPU1〜3を監視対象にしても、WDT12はタイムアウトしない。したがって、したがって、図8(d)のようなプログラムの実行態様であれば、スタンバイモードの間、CPU1〜3を監視対象から除外しないことが好ましい。
以上から、図8(c)及び図8(d)のようなプログラムの実行態様では、スタンバイモードでもCPU1〜3を監視対象にする。こうすることで、図8(c)(d)のように、実行時間がタイムアウト時間よりも短い実行態様でも、CPU1〜3の異常を検出できる。
また、図8(c)のように、スタンバイモード時間がタイムアウト時間よりも長い実行態様では、スタンバイモード中に、定期的にリセットフラグ設定部1〜3を立ち上げリセットフラグ1〜3をオンに操作する。こうすることで、スタンバイモード中に、WDT12がタイムアウトすることを防止でき、かつ、プログラムの実行時間が短くてもスタンバイモードの間と実行時間のいずれもでもCPU1〜3を監視することができる。
図9は、マルチプロセッサシステムのWDT監視装置100の概略構成図の一例を示す。図9において図4と同一部には同一の符号を付しその説明は省略する。図9のCPU1〜3はそれぞれイネーブルフラグテーブル16と接続されている。イネーブルフラグテーブル16はオンかオフかを記憶する記憶素子である。CPU1〜3が有するイネーブルフラグ設定部1〜3は、イネーブルフラグ1〜3をそれぞれオン又はオフに操作する。イネーブルフラグ1〜3は、オン(1)の場合にスタンバイモードのCPU1〜3を監視対象としないことを示し、オフ(0)である場合にスタンバイモードのCPU1〜3を監視対象とすることを意味する。
プログラムの実行態様に応じてイネーブルフラグ1〜3をオンにするか否かは決まっている。イネーブルフラグ設定部1〜3は、予めプログラムに記述されたパラメータに従いイネーブルフラグ1〜3をオン又はオフに操作する。また、本実施例のリセットフラグ設定部1〜3は、スタンバイモードの間もリセットフラグ1〜3をオンに操作することができる。この場合、プログラムを立ち上げてプログラムのMAIN関数からリセットフラグ設定部1〜3を呼び出してもよいし、リセットフラグ設定部1〜3だけを起動させてもよい。後者のようなリセットフラグ設定部1〜3は、例えば、タイマにリセットフラグ1〜3をオン操作する間隔である時間を設定し、タイマがゼロになる度に立ちがありリセットフラグ1〜3をオンにする監視用のプログラムとして実現できる。
また、本実施例のスタンバイ制御部1〜3は、プログラムの実行態様に応じて、スタンバイモードの実現方法を変えることができる。すなわち、図8(b)(d)のようにスタンバイモード時間が短いCPU1〜3では、クロックゲーティングによりスタンバイモードに入り、図8(a)(c)のようにスタンバイモード時間が長いCPU1〜3ではパワーゲーティングによりスタンバイモードに入る。こうすることで、プログラムの実行態様に応じて、きめ細かな省電力制御が可能となる。なお、スタンバイ要求部1〜3は、プログラムの実行態様に応じて、好ましいスタンバイの実現方法をスタンバイ制御部1〜3に通知する。
図10は、各CPU1〜3がスタンバイモードに入る手順を示すフローチャート図の一例である。図10において図5と同一ステップには同一の符号を付しその説明は省略する。本実施例では、CPU1〜3がプログラムを実行すると、適当なタイミングでイネーブルフラグ設定部1〜3を呼び出し、イネーブルフラグ設定部1〜3がイネーブルフラグ1〜3をオン又はオフに操作する(S5)。オンに操作するか、オフに操作するかは、プログラム毎に決まっている。
例えば、図8(a)のような実行態様のCPU1〜3では、イネーブルフラグ1〜3はオンに操作される。図8(b)〜(d)のような実行態様のCPU1〜3では、イネーブルフラグ1〜3はオフに操作される。
以降の処理(ステップS10〜S50の処理)は実施例1と同様である。ステップS50でスタンバイモードに入ると、CPU1〜3は、クロック信号や電力供給が低減されるので消費電力を低減できる。すなわち、CPU1〜3毎に消費電力を低減できることになる。
そして、リセットフラグ設定部1〜3は、イネーブルフラグ1〜3がオフに操作され、スタンバイモードでも監視対象のままのCPU1〜3について、スタンバイモードの間もタイムアウト時間よりも短い時間間隔で、リセットフラグ1〜3をオンに操作する(S55)。こうすることで、図8(c)のように、スタンバイモード時間が長く、実行時間が短いプログラムの暴走を検出することができる。以降の処理は実施例1と同様である。
〔WDT12のリセット判定〕
図11は、イネーブルフラグ1〜3、スタンバイフラグ1〜3及びリセットフラグ1〜3の状態の組み合わせによるWDT12のリセット判定を模式的に示す図の一例である。図11において図6と同一部には同一の符号を付しその説明は省略する。図示するように、イネーブルフラグ1とスタンバイフラグ1がAND回路1に、イネーブルフラグ2とスタンバイフラグ2がAND回路2に、イネーブルフラグ3とスタンバイフラグ3がAND回路3に、それぞれ接続されている。AND回路1の出力とリセットフラグ1がOR回路1に、AND回路2の出力とリセットフラグ2がOR回路2に、AND回路3の出力とリセットフラグ3がOR回路3に、それぞれ接続されている。また、OR回路1〜3の出力がAND回路21に接続されている。AND回路21の出力がWDT12に接続されている。AND回路1〜3、OR回路1〜3及びAND回路21は、WDTリセット信号生成部13を論理回路で表したものである。AND回路21が「1」を出力することが、WDTリセット信号生成部13がリセット信号を出力することに対応する。
図11は、イネーブルフラグ1〜3、スタンバイフラグ1〜3及びリセットフラグ1〜3の状態の組み合わせによるWDT12のリセット判定を模式的に示す図の一例である。図11において図6と同一部には同一の符号を付しその説明は省略する。図示するように、イネーブルフラグ1とスタンバイフラグ1がAND回路1に、イネーブルフラグ2とスタンバイフラグ2がAND回路2に、イネーブルフラグ3とスタンバイフラグ3がAND回路3に、それぞれ接続されている。AND回路1の出力とリセットフラグ1がOR回路1に、AND回路2の出力とリセットフラグ2がOR回路2に、AND回路3の出力とリセットフラグ3がOR回路3に、それぞれ接続されている。また、OR回路1〜3の出力がAND回路21に接続されている。AND回路21の出力がWDT12に接続されている。AND回路1〜3、OR回路1〜3及びAND回路21は、WDTリセット信号生成部13を論理回路で表したものである。AND回路21が「1」を出力することが、WDTリセット信号生成部13がリセット信号を出力することに対応する。
スタンバイフラグ1〜3がオン、かつ、イネーブルフラグ1〜3がオンの場合、AND回路1〜3が「1」を出力する。イネーブルフラグ1〜3がオフの場合、スタンバイフラグ1〜3がオンでも、AND回路1〜3は「1」を出力しないので、リセットフラグ1〜3がオンにならない限り、リセット要求が出力されない。したがって、イネーブルフラグ1〜3をオフに操作しておくことで、リセットフラグ1〜3の状態に基づき、スタンバイモードの間、CPU1〜3を監視することができる。
図12は、WDT12のカウント値を模式的に示す図の一例である。イネーブルフラグ1〜3に示すように、CPU1はスタンバイモードの間、WDT12の監視対象から除外され、CPU2,3はスタンバイモードの間、WDT12の監視対象である。CPU1は時刻t4からスタンバイモードになり、CPU2は時刻t2から時刻t5までの間と、時刻t6からスタンバイモードになる。CPU3はスタンバイモードにならない。
CPU1〜3で実行されるプログラムは、いずれも時刻t3まで暴走することなく実行されており、リセットフラグ設定部1〜3は、リセットフラグ1〜3のオン操作のタイミングになると、リセットフラグ1〜3をオンに操作する。この結果、AND回路が「1」を出力し(WDTリセット信号生成部13がリセット信号を出力し)、時刻t3にWDT12がリセットされている。
時刻t3の後、CPU1は時刻t4にスタンバイモードに入るが、CPU1はWDT12の監視の対象外であり、AND回路1が「1」を出力するので、OR回路1は「1」を出力する。また、CPU3はスタンバイモードに入らないが、プログラムが暴走することなく、リセットフラグ設定部3がリセットフラグ3をオンに操作している。このため、OR回路3は「1」を出力する。これに対し、CPU2はスタンバイモードの間、監視対象であるが、スタンバイモードの間又は実行中に異常をきたしリセットフラグ設定部2がリセットフラグ2をオンに操作できなかった。このため、AND回路2も「1」を出力することなくリセットフラグ2もオンにならず、OR回路2が「1」を出力しないことになる。この結果、AND回路21は「1」を出力することができないので(WDTリセット信号生成部13はWDT12にリセット信号を出力できないので)、時刻t7にWDT12がタイムアウトしている。
以上説明したように、本実施例のWDT監視装置100は、スタンバイモードにおいても、プログラムの実行態様に応じては監視対象に含めることで、特にスタンバイモード時間が短いCPU1〜3の異常を確実に検出することができる。
11 タイムアウト処理部
12 ウォッチドックタイマ(WDT)
13 WDTリセット信号生成部
14 リセットフラグテーブル
15 スタンバイ状態テーブル
16 イネーブルフラグテーブル
21 AND回路
12 ウォッチドックタイマ(WDT)
13 WDTリセット信号生成部
14 リセットフラグテーブル
15 スタンバイ状態テーブル
16 イネーブルフラグテーブル
21 AND回路
Claims (5)
- 各CPUが個別に低電力モードに移行するマルチプロセッサシステムのウォッチドックタイマ監視装置であって、
各CPU毎に、プログラムが動作していることを示す動作状態情報を更新しながら記憶する動作状態記憶手段と、
前記動作状態記憶手段に前記動作状態情報が記憶されている場合、ウォッチドッグタイマをリセットするリセット手段と、
各CPU毎に、低電力モードであることを示す低電力モード状態情報を記憶するモード記憶手段と、を有し
前記モード記憶手段に前記低電力モード状態情報が記憶されている場合、前記リセット手段は、前記動作状態記憶手段に前記動作状態情報が記憶されていなくても、ウォッチドッグタイマをリセットする、
ことを特徴とするウォッチドックタイマ監視装置。 - 各CPU毎に、前記低電力モード状態情報を無効化させる無効化情報を記憶する無効化情報記憶手段を有し、
前記リセット手段は、前記モード記憶手段に前記低電力モード状態情報が記憶されていても、前記無効化情報記憶手段に、前記無効化情報が記憶されていない場合、ウォッチドックタイマをリセットしない、
ことを特徴とする請求項1記載のウォッチドックタイマ監視装置。 - 低電力モードに移行した後、各CPU毎に、前記動作状態情報を定期的に更新する更新手段を有する、
ことを特徴とする請求項2記載のウォッチドックタイマ監視装置。 - 低電力モードに移行するCPUは、車両の駐車中に実行されるプログラムを実行する、
ことを特徴とする請求項1〜3いずれか1項記載のウォッチドックタイマ監視装置。 - 各CPUが個別に低電力モードに移行するマルチプロセッサシステムのウォッチドックタイマ監視方法であって、
各CPU毎に、更新手段が、プログラムが動作していることを示す動作状態情報を動作状態記憶手段に記憶するステップと、
リセット手段が、前記動作状態記憶手段に前記動作状態情報が記憶されている場合、ウォッチドッグタイマをリセットするステップと、
各CPU毎に、状態記憶手段が、モード記憶手段に低電力モードであることを示す低電力モード状態情報を記憶するステップと、
前記モード記憶手段に前記低電力モード状態情報が記憶されている場合、前記リセット手段は、前記動作状態記憶手段に前記動作状態情報が記憶されていなくても、ウォッチドッグタイマをリセットするステップと、
ことを特徴とするウォッチドックタイマ監視方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009145182A JP2011002993A (ja) | 2009-06-18 | 2009-06-18 | ウォッチドックタイマ監視装置、ウォッチドックタイマ監視方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009145182A JP2011002993A (ja) | 2009-06-18 | 2009-06-18 | ウォッチドックタイマ監視装置、ウォッチドックタイマ監視方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2011002993A true JP2011002993A (ja) | 2011-01-06 |
Family
ID=43560904
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009145182A Pending JP2011002993A (ja) | 2009-06-18 | 2009-06-18 | ウォッチドックタイマ監視装置、ウォッチドックタイマ監視方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2011002993A (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103885563A (zh) * | 2014-03-31 | 2014-06-25 | 浙江知祺电力自动化有限公司 | 自供电微机保护装置微处理器管理电路 |
KR101511608B1 (ko) | 2013-11-26 | 2015-04-13 | 현대오트론 주식회사 | 다중 와치독 감시 장치 및 방법 |
US9009509B2 (en) | 2011-02-04 | 2015-04-14 | Panasonic Intellectual Property Corporation Of America | Virtual computer system, device sharing control method, computer-readable recording medium, and integrated circuit |
WO2017219834A1 (zh) * | 2016-06-20 | 2017-12-28 | 中兴通讯股份有限公司 | 监控方法、装置及看门狗系统 |
JP7474761B2 (ja) | 2018-11-26 | 2024-04-25 | マルクス、ブライアン | ソフトウェア・バグを検出するためにシステムをトレーニングするためのシステム及び方法 |
-
2009
- 2009-06-18 JP JP2009145182A patent/JP2011002993A/ja active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9009509B2 (en) | 2011-02-04 | 2015-04-14 | Panasonic Intellectual Property Corporation Of America | Virtual computer system, device sharing control method, computer-readable recording medium, and integrated circuit |
KR101511608B1 (ko) | 2013-11-26 | 2015-04-13 | 현대오트론 주식회사 | 다중 와치독 감시 장치 및 방법 |
CN103885563A (zh) * | 2014-03-31 | 2014-06-25 | 浙江知祺电力自动化有限公司 | 自供电微机保护装置微处理器管理电路 |
WO2017219834A1 (zh) * | 2016-06-20 | 2017-12-28 | 中兴通讯股份有限公司 | 监控方法、装置及看门狗系统 |
JP7474761B2 (ja) | 2018-11-26 | 2024-04-25 | マルクス、ブライアン | ソフトウェア・バグを検出するためにシステムをトレーニングするためのシステム及び方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10628275B2 (en) | Runtime software-based self-test with mutual inter-core checking | |
US6775786B2 (en) | Method and apparatus for power mode transition in a multi-thread processor | |
CN106201793B (zh) | 半导体装置和诊断测试方法 | |
JP4603583B2 (ja) | プロセッサ、装置、及び方法 | |
EP1868095B1 (en) | Program-execution monitoring method, system, and program | |
JP5244981B2 (ja) | マイクロコンピュータ及びその動作方法 | |
JP2011022934A (ja) | 電子制御ユニット、異常検出方法 | |
JP2011002993A (ja) | ウォッチドックタイマ監視装置、ウォッチドックタイマ監視方法 | |
JP4151566B2 (ja) | マイクロコンピュータ | |
JP2014191655A (ja) | マルチプロセッサ、電子制御装置、プログラム | |
EP3036629B1 (en) | Handling time intensive instructions | |
JP5928358B2 (ja) | 情報処理装置、監視装置、制御装置 | |
JP5517301B2 (ja) | データ処理システム | |
US6463492B1 (en) | Technique to automatically notify an operating system level application of a system management event | |
JP5796452B2 (ja) | 電子制御装置 | |
JP5652198B2 (ja) | 電子制御装置、起動制御方法 | |
JP2013061783A (ja) | マルチコア・プロセッサ | |
JP2018112977A (ja) | マイクロコンピュータ | |
JP2013084218A (ja) | コア監視装置、情報処理装置 | |
WO2018003560A1 (ja) | 電子制御装置 | |
JP2010140319A (ja) | 半導体装置 | |
JP5299681B2 (ja) | プログラム検査方法 | |
JP2020173644A (ja) | 電子制御装置 | |
US9679145B2 (en) | Increased flexibility of security framework during low power modes management | |
JP2005107757A (ja) | プログラムの暴走検出方法およびプログラムの暴走検出装置 |