(57)【要約】  ウォッチドッグと通信するプロセッサの機能性を監視するためのウォッチドッグシステムおよび方法が提供される。少なくとも１つの実施形態では、プロセッサの機能性を監視するウォッチドッグシステムは、起動タイマと、禁止タイマと、ＡＣＫタイマと、サイクル周期タイマとを採用する。プロセッサがリセットから逃れるために所定の時間にプロセッサから一定数のＡＣＫ信号が待ち受けされる。例えば、（ｉ）起動タイマが期限切れになる前にＡＣＫ信号を１つも受信しないこと、（ｉｉ）ＡＣＫタイマが期限切れになる前にＡＣＫ信号を１つでも受信すること、（ｉｉｉ）禁止タイマが期限切れになる前にＡＣＫ信号を１つでも受信すること、（ｉｖ）サイクル周期タイマが期限切れになる前に全てのＡＣＫ信号を受信しないこと、のいずれか１つの条件が満足されたときにリセット信号が監視対象のプロセッサにアサートされる。
2007534049.tif 000002
【特許請求の範囲】
【請求項１】
Ｎ個のＡＣＫ信号入力を有する制御ロジックと、
当該ウォッチドッグシステムの起動と同時に開始される第１のタイマと、
第２のタイマと、
前記Ｎ個のＡＣＫ信号入力の１つにおいて第１のＡＣＫ信号を受信すると同時に前記第２のタイマと一緒に開始される第３のタイマと、
リセット信号発生器と
を含んでなる、プロセッサの機能性を監視するためのウォッチドッグシステム。
【請求項２】
前記リセット信号発生器は、
（ｉ）前記第１のタイマが期限切れになる前に前記Ｎ個のＡＣＫ信号入力の１つにおいてＡＣＫ信号を受信しないこと、
（ｉｉ）前記第２のタイマが期限切れになる前に前記Ｎ個のＡＣＫ信号入力の１つにおいてＡＣＫ信号を受信すること、
（ｉｉｉ）前記第３のタイマが期限切れになる前に前記Ｎ個のＡＣＫ信号入力の全てにおいてＡＣＫ信号を受信しないこと、のいずれか１つの条件が満足されたときにリセット信号を発生するものである請求項１に記載のウォッチドッグシステム。
【請求項３】
前記Ｎ個のＡＣＫ信号入力を介して前記制御ロジックに結合されており、監視対象のプロセッサを当該ウォッチドッグシステムに結合しているインタフェースを更に含む請求項１に記載のウォッチドッグシステム。
【請求項４】
前記リセット信号は前記プロセッサ・インタフェースに結合した監視対象のプロセッサをリセットするものである請求項３に記載のウォッチドッグシステム。
【請求項５】
リセットの直前に監視対象のプロセッサの状態に関する情報を保存するためのロジックを更に含むことを特徴とする請求項４に記載のウォッチドッグシステム。
【請求項６】
各前記タイマの継続時間は固有の値に設定することができることを特徴とする請求項１に記載のウォッチドッグシステム。
【請求項７】
前記Ｎ個のＡＣＫ信号入力はＩＯ（入力／出力）ラインである請求項１に記載のウォッチドッグシステム。
【請求項８】
前記Ｎ個のＡＣＫ信号入力はレジスタである請求項１に記載のウォッチドッグシステム。
【請求項９】
第１のタイマを開始するステップと、
第２のタイマを開始するステップと、
プロセッサまたはソフトウェア・モジュールから少なくとも１つのＡＣＫ信号を受信するステップと、
前記少なくとも１つのＡＣＫ信号をいずれか１つ受信するごとに同時に前記第１のタイマをリスタートするステップと、
（ｉ）前記第１のタイマが期限切れになる前に前記少なくとも１つのＡＣＫ信号のいずれか１つの信号を受信すること、（ｉｉ）前記第２のタイマが期限切れになる前に前記少なくとも１つのＡＣＫ信号の全てを受信しないこと、のいずれか１つの条件が満足された場合に監視対象のプロセッサをリセットするステップと
を含んでなる、プロセッサの機能性を監視する方法。
【請求項１０】
前記第１および第２のタイマは同時に開始されるものである請求項９に記載の方法。
【請求項１１】
監視対象のプロセッサが正しく初期化されたことを示す初期化信号を受信するステップを更に含み、前記第１および第２のタイマは前記初期化信号を受信すると同時に開始されるものである請求項１０に記載の方法。
【請求項１２】
いずれかの条件が満足されたときに監視対象のプロセッサをリセットするステップは、
監視対象のプロセッサに関する状態情報を記憶するステップを更に含むものである請求項９に記載の方法。
【請求項１３】
起動タイマを開始するステップと、
前記起動タイマが期限切れになる前に監視対象のプロセッサからそのプロセッサが正しく初期化されたことを示す初期化信号が受信されない場合には、その監視対象のプロセッサをリセットするステップと
を更に含む請求項９に記載の方法。
【請求項１４】
前記第１および第２のタイマは前記初期化信号を受信すると同時に両方とも開始されるものである請求項１３に記載の方法。
【請求項１５】
ウォッチドッグに結合したプロセッサをリセットするための方法であって、
前記プロセッサに結合したウォッチドッグを使用して前記プロセッサを監視するステップと、
前記ウォッチドッグを使用して前記プロセッサをリセットするステップと、
前記プロセッサをリセットする直前に前記プロセッサのリセット前の状態を示す状態情報を記憶するステップと
を含んでなる方法。
【請求項１６】
前記プロセッサの状態情報を記憶するステップはＮＭＩ（マスク不可能な割り込み）をアサートするステップを含むものである請求項１５に記載の方法。
【請求項１７】
Ｎ個のＡＣＫ信号入力を有する制御ロジックと、
プロセッサの起動が始まると同時に開始される起動タイマと、
監視対象のプロセッサの起動がうまく完了した後に動作サイクルが開始されるごとに開始される禁止タイマと、
前記Ｎ個のＡＣＫ信号入力の１つにおいてＡＣＫ信号を受信すると同時に開始されるＡＣＫタイマと、
監視対象のプロセッサの起動がうまく完了した後に動作サイクルが開始されるごとに開始されるサイクル周期タイマと、
リセット信号発生器と
を含んでなる、プロセッサの機能性を監視するためのウォッチドッグシステム。
【請求項１８】
前記リセット信号発生器は、
（ｉ）前記起動タイマが期限切れになる前に前記Ｎ個のＡＣＫ信号入力の第１の入力においてＡＣＫ信号を受信しないこと、
（ｉｉ）前記ＡＣＫタイマが期限切れになる前に前記Ｎ個のＡＣＫ信号入力のいずれか１つの入力においてＡＣＫ信号を受信すること、
（ｉｉｉ）前記禁止タイマが期限切れになる前に前記Ｎ個のＡＣＫ信号入力のいずれか１つの入力においてＡＣＫ信号を受信すること、
（ｉｖ）前記サイクル周期タイマが期限切れになる前に前記Ｎ個のＡＣＫ信号入力の全ての入力においてＡＣＫ信号を受信しないこと、
のいずれか１つの条件が満足されたときに監視対象のプロセッサに送信するためのリセット信号を発生するものである請求項１７に記載のウォッチドッグシステム。
【請求項１９】
前記Ｎ個のＡＣＫ信号入力を介して前記制御ロジックに結合されており、監視対象のプロセッサを当該ウォッチドッグシステムに結合しているインタフェースを更に含むものである請求項１７に記載のウォッチドッグシステム。
【請求項２０】
前記リセット信号は前記プロセッサ・インタフェースに結合した監視対象のプロセッサをリセットするものである請求項１９に記載のウォッチドッグシステム。
【請求項２１】
リセットの直前に監視対象のプロセッサの状態に関する情報を保存するためのロジックを更に含むものである請求項２０に記載のウォッチドッグシステム。
【請求項２２】
各前記タイマの継続時間は固有の値に設定することができるものである請求項１７に記載のウォッチドッグシステム。
【請求項２３】
前記Ｎ個のＡＣＫ信号入力はＩＯ（入力／出力）ラインである請求項１７に記載のウォッチドッグシステム。
【請求項２４】
前記Ｎ個のＡＣＫ信号入力はレジスタである請求項１７に記載のウォッチドッグシステム。
【請求項２５】
起動タイマを開始するステップと、
禁止タイマを開始するステップと、
サイクル周期タイマを開始するステップと、
少なくとも１つのＡＣＫ信号を受信するステップと、
前記少なくとも１つのＡＣＫ信号の１つを受信すると同時にＡＣＫタイマを開始するステップと、
（ｉ）前記起動タイマが期限切れになる前に前記少なくとも１つのＡＣＫ信号のどの信号も受信しない、（ｉｉ）前記ＡＣＫタイマが期限切れになる前に前記少なくとも１つのＡＣＫ信号のいずれか１つの信号を受信する、（ｉｉｉ）前記禁止タイマが期限切れになる前に前記少なくとも１つのＡＣＫ信号のいずれか１つの信号を受信する、（ｉｖ）前記サイクル周期タイマが期限切れになる前に前記少なくとも１つのＡＣＫ信号の全ての信号を受信しない、のいずれか１つの条件が満足されたときに監視対象のプロセッサをリセットするステップと
を含んでなる、プロセッサの機能性を監視する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ウォッチドッグ（watchdog）、特に、プロセッサと通信してその機能性を監視するためのウォッチドッグシステムおよび方法に関する。
【背景技術】
【０００２】
ウォッチドッグとは、プロセッサとの通信を通じて、プロセッサの機能性、例えばプロセッサにおけるソフトウェアの実行、を継続的に監視するために使用されるハードウェア・デバイスである。プロセッサが不安定状態または好ましくない状態にあると判断されると、ウォッチドッグはプロセッサをリセットするためにリセット信号をプロセッサまたはプロセッサシステムの他の部分に送信する。プロセッサはそのリセット信号を受信すると、制御された方法でリセットルーチンを実行する。リセットの後、プロセッサはそれ自身を初期化（“起動（boot up）”）してから、正常動作を試みる。
【０００３】
Vasanojaに帰属する米国特許第6,405,328号明細書には、連続して受信されるＡＣＫ（acknowledgement）信号の時間間隔を監視するウォッチドッグが開示されている。この特許文献の開示内容全体を引用することにより本願の一部をなすものとする。プロセッサは許容カウンタ（tolerance counter）が設定する許容範囲内にある限り定期的にＡＣＫ信号を提供することが期待される。ＡＣＫ信号が存在しないかあるいはＡＣＫ信号が非定期的に受信されると、リセット信号がプロセッサにアサート（assert）される結果となる。つまり、ＡＣＫ信号の受信が早過ぎたりもしくは遅過ぎたり、あるいは信号そのものが全く見つからなかったりしたときには、ウォッチドッグはプロセッサをリセットする。このタイプのウォッチドッグの１つの欠点は、それは受信されるＡＣＫ信号の受信の定期性（あるいは周期性）を課しているだけということ、言い換えると、ＡＣＫ信号はある許容度で特定の時間間隔で受信されなければならないだけということである。ＡＣＫ信号の順序または順番は問題になっていない。このため、このタイプのウォッチドッグは、例えば、定期的なＡＣＫ信号を継続的に送信する悪い無限ループ（indefinite-loop）プロセスを検出かつリセットすることができない。このタイプのウォッチドッグのもう１つの欠点は、リセットが例えば電源障害による実際のシステムリセットまたはユーザによるシステムのスイッチオフと区別することができないということである。さらに、頻繁に起こるシステム障害の場合にアラーム通知を開始する手段が一切与えられていない。
【発明の開示】
【０００４】
本発明は、従来技術のこれらの欠陥および他の欠陥を克服するために、１つ以上のプロセッサによって送信されたＡＣＫ信号の順序をそれらの信号のタイミングと併せて追跡するウォッチドッグシステムおよび方法を提供する。
【０００５】
本発明は、Ｎ本の異なるＩＯラインまたはＩＯラインとして機能するＮ個のレジスタを介して多くの異なるＡＣＫ信号が受信されることを要求することによって、リセットが必要なシステムエラーを見逃す可能性を消滅させるとまではいかないまでも減少させるウォッチドッグを提供する。このようにすることによって、ＡＣＫ信号の順序はそれらの定期性と一緒に監視される。
【０００６】
本発明の少なくとも１つの具体的な形態として、プロセッサの機能性を監視するためのウォッチドッグシステムであって、Ｎ個のＡＣＫ（acknowledgement）信号入力を有する制御ロジック（control logic）と、当該ウォッチドッグシステムの起動と同時に開始される第１のタイマと、第２のタイマと、前記Ｎ個のＡＣＫ信号入力の１つにおいて第１のＡＣＫ信号を受信すると同時に前記第２のタイマと一緒に開始される第３のタイマと、リセット信号発生器（reset signal generator）とを含んでなるウォッチドッグシステムが提供される。前記リセット信号発生器は、（ｉ）前記第１のタイマが期限切れになる前に前記Ｎ個のＡＣＫ信号入力の１つにおいてＡＣＫ信号を受信しないこと、（ｉｉ）前記第２のタイマが期限切れになる前に前記Ｎ個のＡＣＫ信号入力の１つにおいてＡＣＫ信号を受信すること、（ｉｉｉ）前記第３のタイマが期限切れになる前に前記Ｎ個のＡＣＫ信号入力の全てにおいてＡＣＫ信号を受信しないこと、のいずれか１つの条件が満足されたときにリセット信号を発生する。また、監視対象のプロセッサを当該ウォッチドッグシステムに結合するためのインタフェースが提供される。
【０００７】
本発明の少なくとも１つの具体的な形態として、プロセッサの機能性を監視するための方法であって、第１のタイマを開始するステップと、第２のタイマを開始するステップと、プロセッサまたはソフトウェア・モジュールから少なくとも１つのＡＣＫ信号を受信するステップと、前記少なくとも１つのＡＣＫ信号をどれか１つ受信するごとに同時に前記第１のタイマをリスタートするステップと、（ｉ）前記第１のタイマが期限切れになる前に前記少なくとも１つのＡＣＫ信号のいずれか１つの信号を受信すること、（ｉｉ）前記第２のタイマが期限切れになる前に前記少なくとも１つのＡＣＫ信号の全てを受信しないこと、のいずれか１つの条件が満足された場合に監視対象のプロセッサをリセットするステップとを含んでなる方法が提供される。監視対象のプロセッサが正しく初期化されたことを示す初期化信号を受信すると同時に、前記第１および第２のタイマは２つとも同時に開始される。
【０００８】
本発明の少なくとも１つの具体的な形態として、ウォッチドッグに結合したプロセッサをリセットするための方法であって、前記プロセッサに結合したウォッチドッグを使用して前記プロセッサを監視するステップと、前記ウォッチドッグを使用して前記プロセッサをリセットするステップと、前記プロセッサをリセットする直前に前記プロセッサのリセット前の状態を示す状態情報を記憶するステップとを含んでなる方法が提供される。
【０００９】
本発明の少なくとも１つの具体的な形態として、プロセッサの機能性を監視するためのウォッチドッグシステムであって、Ｎ個のＡＣＫ信号入力を有する制御ロジックと、プロセッサの起動が始まると同時に開始される起動タイマと、前記プロセッサの起動がうまく完了した後に動作サイクルが開始されるごとに開始される禁止タイマと、前記Ｎ個のＡＣＫ信号入力の１つにおいてＡＣＫ信号を受信すると同時に開始されるＡＣＫタイマと、前記プロセッサの起動がうまく完了した後に動作サイクルが開始されるごとに開始されるサイクル周期タイマと、リセット信号発生器とを含むウォッチドッグシステムが提供される。前記リセット信号発生器は、（ｉ）前記起動タイマが期限切れになる前に前記Ｎ個のＡＣＫ信号入力の第１の入力においてＡＣＫ信号を受信しないこと、（ｉｉ）前記ＡＣＫタイマが期限切れになる前に前記Ｎ個のＡＣＫ信号入力のいずれか１つの入力においてＡＣＫ信号を受信すること、（ｉｉｉ）前記禁止タイマが期限切れになる前に前記Ｎ個のＡＣＫ信号入力のいずれか１つの入力においてＡＣＫ信号を受信すること、（ｉｖ）前記サイクル周期タイマが期限切れになる前に前記Ｎ個のＡＣＫ信号入力の全ての入力においてＡＣＫ信号を受信しないこと、のいずれか１つの条件が満足されたときに前記プロセッサに送信するためのリセット信号を発生する。
【００１０】
本発明の少なくとも１つの具体的な形態として、プロセッサの機能性を監視するための方法であって、起動タイマを開始するステップと、禁止タイマを開始するステップと、サイクル周期タイマを開始するステップと、少なくとも１つのＡＣＫ信号を受信するステップと、前記少なくとも１つのＡＣＫ信号の１つを受信すると同時にＡＣＫタイマを開始するステップと、（ｉ）前記起動タイマが期限切れになる前に前記少なくとも１つのＡＣＫ信号のどの信号も受信しないこと、（ｉｉ）前記ＡＣＫタイマが期限切れになる前に前記少なくとも１つのＡＣＫ信号のいずれか１つの信号を受信すること、（ｉｉｉ）前記禁止タイマが期限切れになる前に前記少なくとも１つのＡＣＫ信号のいずれか１つの信号を受信すること、（ｉｖ）前記サイクル周期タイマが期限切れになる前に前記少なくとも１つのＡＣＫ信号の全ての信号を受信しないこと、のいずれか１つの条件が満足されたときに監視対象のプロセッサをリセットするステップとを含んでなる方法が提供される。
【００１１】
本発明の少なくとも１つの具体的な形態として、本発明のウォッチドッグシステムはリセット信号がアサートされる前にＮＭＩ（ノンマスカブル・インターラプト：nonmasksble interrupt）を提供する。ＮＭＩ／リセットがアサートされただけでレジスタが設定され、それにより、リセット（クラッシュ）の原因やクラッシュを引き起こした特定のモジュールもしくはタスクを解析するための手段が提供されることができる。レジスタは他のソースから発生したＮＭＩをウォッチドッグによってアサートされたＮＭＩと区別することが可能である。
【００１２】
本発明の１つの利点は、従来技術と比較してより汎用かつローバストなウォッチドッグが提供されることである。
【００１３】
本発明のもう１つの利点は、多数の異なるＩＯ（Input/Output）ラインまたはレジスタが採用されることにより、受信されるＡＣＫ信号の順序もそれらのＡＣＫ信号の定期性（あるいは周期性）またはタイミングと同程度に重要であることから、繰り返されるＡＣＫ信号をもたらす無限ループ（indefinite loop）がリセットを逃れることを防止することができるということである。
【００１４】
本発明の上記その他の特徴および利点は、以下の本発明の好ましい実施形態のより具体的な説明、添付図面、および特許請求の範囲の各請求から、より明らかになるであろう。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施の好ましい形態を添付図面１乃至３を参照して詳細に説明する。これらの好ましい実施形態は、ウォッチドッグによって監視される１つ以上のプロセッサを含むコンピュータプロセッサシステムの論脈において考察される。プロセッサという用語は、１つ以上の指令を実行するまたはタスクを遂行することができる任意のロジック、回路構成、ハードウェア、コード、ソフトウェア等またはそれらの任意の組み合わせを表し、その実装については当業者であれば明らかである。とはいえ、本発明は、状態のモニタリングおよび／または或る程度の同期またはタイミングの精度を必要とする任意のタイプのマシンまたはプロセスに適用することができる。
【００１６】
一般的に、組み込みソフトウェアのプロセッサにおける実行は以下のような制御フローの一連の手続を踏む。電源が入り、クリスタルおよびパワーが安定化するとリセット信号がプロセッサから取り除かれる。続いてプロセッサは、好ましくはＲＯＭ（Read Only Memory）にあるリセットベクタ（Reset Vector）と称される既知のアドレスから実行コードを開始する。一般的にＲＯＭはそこから実コードを実行するのに十分な速さを有しない。従って、有用コードはＲＡＭ（Random Access Memory）、例えばＲＯＭより高速なＳＤＲＡＭ（Synchronous Dynamic RAM）、から実行させる必要がある。このため、リセットベクタは、ＲＯＭからＲＡＭへ実コードを移してＲＡＭからコードの実行を開始するコード片を有する。このコード片はブートローダ（Boot Loader）と呼ばれ、そのプロセスは‘ブートローディング（boot loading）’として知られる。ソフトウェアは通常、周辺機器および他のソフトウェア・モジュール、例えば変数、割り込みレジスタ、および残りのコードによって使用される状態の初期化の後に実行を開始する。初期化が完了すると、プロセッサシステムはその要求（requirements）どおりの機能を開始する。要求はタスクと称される個別のソフトウェア・モジュールを使用して満足される。プロセッサシステムの複雑さに応じて、プロセッサシステムは１つ以上のタスクを有する場合がある。タスクはそれ自体、データを処理し、ユーザの入力および／または出力を取り扱い、そして他のタスクと相互作用することができる個別のプログラムと見なすことができる。タスクは、オペレーティングシステム（ＯＳ）の一部であるカーネル（kernel）によって実行（開始／停止／ブロック）される。本発明の少なくとも１つの実施形態によるウォッチドッグシステムはハードウェアに実装され、ソフトウェアのパフォーマンスのあらゆる段階を監視して最も早い時点で不安定性および／またはクラッシュを発見し、それによりソフトウェア作業を復旧しおよび／またはプロセッサシステムをリセットすることができる。
【００１７】
図１に本発明の少なくとも１つの実施形態によるウォッチドッグシステム（または“状態マシン”）１００を示す。特に、ウォッチドッグシステム１００は、プロセッサ・インタフェース（processor interface）１１０と、制御ロジック（control logic）１２０と、遅延コンポーネント（delay component）１３０と、同期入力（synchronous input）１４０と、最大値バンク（max value bank）１５０と、セーブ＆リセット・ロジック（save & reset logic）１６０と、カウンタバンク（counter bank）１７０と、モニタ１８０とを含む。プロセッサ・インタフェース１１０は、制御ロジック１２０をウォッチ（つまり監視もしくはモニタ）対象である１つ以上のプロセッサ（図示せず）（以下、単に「プロセッサ」と呼ぶ）に結合させる。例えば、プロセッサ・インタフェース１００はプロセッサのバスに接続され、その実装は当業者には明らかである。本発明の好ましい実施形態では、プロセッサ・インタフェース１１０は制御ロジック１２０に、各々のラインがプロセッサによって生成される対応するＮ番目（順番）のＡＣＫ信号に関連するＮ本の固有のＩＯ（Input/Output）ライン１１５Ａ−Ｎを提供する。更により詳しく説明するように、プロセッサはリセットを回避するために特定の方法によって各々のＩＯライン１１５Ａ−Ｎをトグル（toggle）する。
【００１８】
本発明の代わりの実施形態では、ＩＯラインを持たないプロセッサを監視するか、あるいはＩＯラインを採用してはいるがその中の任意数のＩＯラインは他の目的で自由にしてあるプロセッサを監視することができるようにするために、Ｎ個のレジスタ（図示せず）または同様のものがＩＯライン１１５Ａ−Ｎの代わりに実装される。このタイプの実装では、ＡＣＫ信号は特定のレジスタへのあるデータパターンの書き込みに相当する。好ましくは、固有のデータパターンが各レジスタに書き込まれる。各レジスタは固有アドレスによって識別できるが、固有データパターンも各レジスタに書き込まれることが好ましい。例えば、プロセッサは固有データパターン（例えば０ｘＡＡ）が特定のレジスタロケーション（０ｘＦＦ８８００００）に書き込まれるように書き込み操作を実行する。これにより、偽りのＡＣＫ信号を与える可能性のあるプロセッサのソフトウェアにおける誤ったあるポインタ操作を回避する。固有データをアドレスの異なる多数のレジスタに書き込むことを要求することにより、ウォッチドッグシステム１００が偽りのＡＣＫ信号にだまされる可能性が減る。このタイプの設定（configuration）はＦＰＧＡ（Field Programmable Gate Array）によって実施される。
【００１９】
制御ロジック１２０は、ウォッチドッグシステム１００がプロセッサの機能性を監視することを可能にする３つのカウンタ／タイマ（図示せず）を含むカウンタバンク１７０に結合される。これらの３つのカウンタは、サイクル（繰り返し）周期カウンタ（cycle period counter）と、禁止期間カウンタ（forbidden period counter）と、ＡＣＫ期間カウンタ（acknowledgment period counter）と呼ばれ、その実施については以下のパラグラフでより詳細に説明される。制御ロジック１２０は同期入力１４０によって与えられた適切な数の同期入力イベントをカウントするために特定の時間にこれらのカウンタを作動させる。同期入力１４０は、例えば発振器または正確な周期信号を提供する任意の他のタイプのタイミング発生器もしくはインタフェースなどの周期的なイベント入力である。例えば、Ｅ１・ＰＣＭ（pulse code modulation）デジタル回線からのフレーム同期信号がカウンタを駆動させるために利用することができ、その実施については当業者には明らかである。
【００２０】
制御ロジック１２０には、起動時にプロセッサに指定された遅延時間（“起動期間（boot up period）”）を与えるタイマである遅延コンポーネント１３０が結合される。この起動期間はプロセッサが初期化してＡＣＫ信号を送信するのに十分な量の時間を指定する。従って本発明の少なくとも１つの実施形態では、ＡＣＫ信号はこの起動期間の満了前に待ち受け（expect）される。制御ロジック１２０が起動期間中ではなく起動期間の満了後に例えばＩＯライン１１５Ａを介してＡＣＫ信号を受信するようなことがあればプロセッサは正しく初期化するのに失敗したことがわかるので、遅延コンポーネント１３０はプロセッサのリセットをトリガーする。プロセッサがリセットされたときはいつでも、遅延コンポーネント１３０は別の起動期間を時間計測するために即座にリスタートされる。
【００２１】
最大値バンク（max value bank）１５０は、起動期間タイマと、サイクル周期カウンタと禁止期間カウンタとＡＣＫ期間カウンタとの所定の閾値を記憶するメモリとを含む。これらの値は監視対象のプロセッサの特定の動作特性に応じて設定可能である。好ましくは、これらの値は制御ロジック１２０のみによって読み出され、プロセッサ内のソフトウェアによって消去可能または再プログラム可能ではない。そうでなければ、プロセッサはリセットを逃れるためにこれらの値を修正することができてしまうからである。
【００２２】
セーブ＆リセット・ロジック１６０はプロセッサをリセットするリセット信号を作動させるコンポーネントである。特に、セーブ＆リセット・ロジック１６０はリセット信号１６４を適切なときにプロセッサに提供する。本発明の選択的な実施形態では、セーブ＆リセット・ロジック１６０は、ＮＭＩ（nonmaskable interrupt）として実現することができるセーブ（保存）信号１６８をプロセッサに更にアサートする。かかる設定において、セーブ信号１６８はリセット信号１６４に先行し、リセットの原因周辺のデータとデバッギング（debuggging）に有用でありうる任意の他の基本データを特定する情報を記憶する。これは特に、ＩＯラインが個別のソフトウェア・モジュール／プロセッサによって制御されるマルチタスク／マルチプロセッサ環境において有用である。例えば、一般的なＮＭＩハンドラ、すなわちＩＳＲ（Interrupt Service Routine）は、致命的な（vital）タスク／ハードウェア状態を記憶することができ、この割り込みをトリガーしたイベントを特定し記憶することもできる。例えば、ＮＭＩは、限定はされないが電力障害またはユーザによるプロセッサシステムのリセットを含む多くの理由から生じる場合がある。さらに、ＩＳＲは、特定のＩＯラインが誤動作したこと、つまりトグルされなかったことを特定する情報を記憶することができる。これはどのＩＯラインがリセットを引き起こしたかを特定する助けになるのに必要なデバッグ情報を提供することができる。リセット直前のサイクルでＩＯライン１１５Ａ−Ｎがトグルされたか否かを反映する情報（またはＮ個のレジスタに最後に書き込まれたデータ）を保存することによって、機能しなかったプロセッサの特定のモジュールまたはコンポーネントおよび／または特定のパラメータが特定可能である。この情報はリセットの原因を特定することを可能にするのみならず、プロセッサをその最後の適正な動作状態に復元するための重要なデータも提供する。
【００２３】
モニタ１８０は、（以下のパラグラフにおいて詳しく説明する）記憶された監督ポリシーに従って制御ロジック１２０によって受信されたＡＣＫパルスの周期性（あるいは定期性）および順番を監督する。好ましくは、このポリシーのいかなる違反もセーブ＆リセット・ロジック１６０がプロセッサをリセットするようトリガーする。例えば、モニタ１８０は、サイクル周期の満了前にＮ個のＡＣＫ信号が全て受信されないこと、あるいは禁止期間もしくはＡＣＫ期間の間にＮ個のＡＣＫ信号のいずれか１つが受信されたこと、あるいは受信したＡＣＫ信号の特定の順番が間違っていることを見つけた場合には、セーブ＆リセット・ロジック１６０にプロセスをリセットするよう指令する。
【００２４】
図２に本発明の少なくとも１つの実施形態によるウォッチドッグシステム１００の全状態図２００を示す。状態図２００は、ブート状態（boot state）２１０と、リセット状態（reset state）２２０と、動作状態（operational state）２３０との３つの状態を含む。動作に関して言えば、ウォッチドッグシステム１００は、電源が入ったときまたは起動したときにブート状態２１０にある。ブート状態２１０には遅延コンポーネント１３０によって提供される起動期間（boot up period）が伴う。起動期間の満了前にプロセッサがＡＣＫ信号を送信することができない場合にはウォッチドッグシステム１００はリセット状態２２０に移行し、その状態においてセーブ＆リセット・ロジック１６０はプロセッサをリセットする。しかしながら、ＡＣＫ信号が起動期間中に受信された場合、ウォッチドッグシステム１００は動作状態２３０に直ちに移行する。動作状態２３０はウォッチドッグシステム１００がプロセッサの起動後の活動を監視する状態である。更に説明されるように、ＡＣＫ信号の正しいタイミングを指示するウォッチドッグポリシー（watchdog policy）にいかなる違反があっても、ウォッチドッグシステム１００は動作状態２３０からリセット状態２２０へ遷移する。例えば、第１のＡＣＫ信号が禁止期間中に受信された場合、またはそれより後のＡＣＫ信号がＡＣＫ期間中に受信された場合、ウォッチドッグシステム１００はリセット状態２２０に入る。さらに、１サイクル周期の満了前に全てのＡＣＫ信号が受信されない場合、ウォッチドッグシステム１００はリセット状態２２０に入る。
【００２５】
図３に本発明の少なくとも１つの実施形態によるウォッチドッグポリシー３００を示す。このポリシーは単なる例示であり、議論を単純化するためのものであって、Ｎ＝３、すなわち３つの異なるＩＯライン１１５Ａ−Ｃが採用されるシステム１００に適用可能である。ウォッチドッグポリシー３００は、既に導入した４つの期間として、起動期間（“ｔB”）と禁止期間（“ｔ0”）とＡＣＫ期間（“ｔ1”）とサイクル周期（“Ｔ”）とを採用する。プロセッサが起動すると同時に、起動期間ｔBが開始される。この期間の満了前に、第１のＡＣＫ信号３１０（“Ａｃｋ１”）、すなわち第１のＩＯ１１５Ａのトグリング（toggling）、が待ち受けされる。起動期間中に第１のＡＣＫ信号を受信できない場合には、プロセッサがリセット状態に移行する結果となる。起動期間中にＡＣＫ信号３１０を受信するとすぐに、正常動作状態サイクル２３０が始まる。
【００２６】
起動期間ｔBは、プロセッサまたはプロセッサが接続されたボードが正しく初期化（ブート）することができるのにちょうど十分な長さの期間を与える。プロセッサが起動するために与えられた起動期間より長く時間を費やした場合、またはそれが全く起動しない場合、第１のＡＣＫ信号３１０は時間内に受信されず、このためウォッチドッグシステム１００はプロセッサをリセットすることになる。
【００２７】
第１のＡＣＫ信号３１０が受信されるとすぐに、動作状態２３０の第１のサイクルが禁止期間ｔ0およびサイクル周期Ｔと共に始まる。禁止期間が満了した時点において、別の第１のＡＣＫ信号３２０（“Ａｃｋ１”）、すなわち第１のＩＯライン１１５Ａのトグリングが待ち受けされる。本発明の関係する実施形態では、ＩＯライン１１５Ａ−Ｃのいずれとも異なる独立なＩＯラインが（どの他のモジュールにも使用されない“Ａｃｋ０”と称されるＡＣＫ信号３１０を受信するために）ブートプロセスのためだけに導入することができる場合がある。ブートだけのための別個のＩＯラインは、資源（リソース）、すなわちＩＯラインの使用がそれらの使用を抑制するよう制約されなかった場合に可能である。このケースでは、Ｎ＋１本のＩＯラインがシステム１００に必要である。本発明の別の関係する実施形態では、ＡＣＫ信号３１０はＩＯライン１１５Ａ−Ｃのいずれか１つのラインを介して受信することができる。
【００２８】
Ａｃｋ１が受信された後、ＡＣＫ期間ｔ1が開始される。このＡＣＫ期間が満了した時点で、第２のＡＣＫ信号３３０（“Ａｃｋ２”）、すなわち第２のＩＯライン１１５Ｂのトグリングが待ち受けされる。第２のＡＣＫ信号３３０が受信されるとすぐに、ＡＣＫ期間がリスタートされる。この第２のＡＣＫ期間が満了した時点で、第３のＡＣＫ信号３４０（“Ａｃｋ３”）、すなわち最後のＩＯライン１１５Ｃのトグリングが待ち受けされる。Ｎ番目のＡＣＫ信号、例えば本例では第３のＡＣＫ信号３４０の受信で１サイクルが終了し、動作状態２３０の新しいサイクルが開始される。つまり、禁止期間とサイクル周期がリスタートされ、起動期間を含まない上記プロセスが繰り返される。ＡＣＫ信号の順序、すなわちＡｃｋ１、Ａｃｋ２、およびＡｃｋ３は、あらゆるサイクルで同一である必要がある。
【００２９】
ＡＣＫ信号が禁止期間中またはいずれかのＡＣＫ期間中に受信された場合、プロセッサはウォッチドッグシステム１００によってリセットされる。さらに、Ｎ番目のＡＣＫ信号（図３ではＡｃｋ３）はサイクル周期Ｔの満了前に受信されなければならない。Ｎ番目のＡＣＫ信号をサイクル周期Ｔの満了前に受信することができなかった場合もシステム１００はプロセッサをリセットする。モニタ１８０は受信ＡＣＫ信号３１０−３４０の順序も監視する。例えば、Ａｃｋ３がＡｃｋ２より前に受信されたがそれ以外ウォッチドッグポリシーの全てのパラメータが満足された場合、モニタ１８０はプロセッサのリセットをトリガーする。サイクル周期Ｔと起動期間ｔBと禁止期間ｔ0とＡＣＫ期間ｔ1とは個別に任意の望ましい期限に設定できる。さらに、禁止期間ｔ0の満期とＡｃｋ１との間の経過時間と、いずれかのＡＣＫ期間ｔ1の満期と次の対応する連続するＡＣＫ信号（例えばＡｃｋ２またはＡｃｋ３）との間の経過時間は、サイクル周期Ｔの満了前にＮ番目のＡＣＫ信号、例えばＡｃｋ３が受信される限り変動する可能性がある。
【００３０】
上述したように、Ｎ番目のＡＣＫ信号（すなわちＡｃｋ３）がサイクル周期Ｔの終了前に正しく受信された場合、動作状態２３０は別のサイクルを繰り返すことによって継続される。かかる場合には、禁止期間およびサイクル周期は、Ｎ番目のＡＣＫ信号を受信すると同時にリスタートされる。以前のサイクルと同様、禁止期間が満了した後に第１のＡＣＫ信号Ａｃｋ１が待ち受けされる。Ａｃｋ１を受信した後、ＡＣＫ期間ｔ1が開始され、サイクルが正しく終了するまで、第２のＡＣＫ信号Ａｃｋ２等が待ち受けされる。このプロセスは、ウォッチドッグポリシー３００の違反が生じるかまたはシステム１００もしくはプロセッサがシャットダウンするまで継続的に繰り返される。
【００３１】
本発明の少なくとも１つの実施形態では、禁止期間とＡＣＫ期間は同じ値に設定することができ、しかも同じカウンタ／タイマによって提供することができる。
【００３２】
本発明はプロセッサの適正動作を確保するためにプロセッサを定期的にチェックするスキームを提供する。要するに、このことは、プロセッサから比較的一定の間隔でＡＣＫ信号を受信すること、例えばＩＯラインのトグル、によって遂行される。ウォッチドッグシステム１００は、サイクル周期Ｔと禁止期間ｔ0とＡＣＫ期間ｔ1とを提供する３つのタイマまたはカウンタによってサポートされる動作状態２３０にある。このスキームでは、プロセッサは禁止期間およびＡＣＫ期間の間に“肯定応答（acknowledge）しない”ことが要求される。各サイクルごとに、禁止期間の満了をもって、ＡＣＫ期間がＮ−１回繰り返される。１回の全サイクル周期（Ｔ）内に、Ｎ個の異なるＩＯラインがトグルされていなければならない。ＡＣＫ信号の順番が正しくないか、またはＡＣＫ信号の定期性が損なわれていれば、ウォッチドッグシステム１００がリセット状態２２０へ遷移する結果となり、それによりプロセッサがリセットされる。
【００３３】
本発明のウォッチドッグスキームはＮ本の異なるＩＯラインを使用するので、受信されたＡＣＫ信号の同一性および順序がそれらのＡＣＫ信号のタイミングと全く同程度に重要であるときには繰り返されるＡＣＫ信号を生成する無限ループ（indefinite-loop）はリセットを免れることができない。
【００３４】
本発明はＩＯピンの無いプロセッサに適している。例示的な実施形態では、第１のレジスタロケーションへの“０ｘ５５”の書き込みは第１のＩＯトグルに等しく、第２のレジスタロケーションへの“０ｘＡＡ”の書き込みは第２のＩＯトグルに等しい。これらのロケーションへ他のどのようなパターンが書き込まれてもそれらのパターンは適正なＩＯトグルとは見なされることなく、従ってプロセッサはリセットされる。
【００３５】
本発明はタスクが同期的または非同期的なソフトウェアを監視するのによく適している。タスクが同期的なソフトウェアに関しては、各タスクの実行順序は予め定められており、各タスクはＩＯラインをトグルすることによってウォッチドッグシステムに肯定応答（acknowledge）する。従って、ウォッチドッグシステムは定期性の他に実行順序も監視する。タスクが非同期的なソフトウェアに関しては、ウォッチドッグシステムはウォッチドッグによって要求されたときにＩＯラインをトグルする中央ウォッチドッグタスクマネジャとインタフェースすることができる。次に、中央ウォッチドッグタスクマネジャは、定期的なクエリー・レスポンス機構（query-response mechanism）によって各個別のタスクの活動を監視する。ウォッチドッグタスクマネジャは、クエリー（問い合わせ）またはリクエストを定期的に送信することによってシステムに存在する全てのタスクと相互作用するソフトウェアコンポーネントである。呼び出されたタスクはレスポンスを送信することによって応答する。ウォッチドッグタスクマネジャはレスポンスを受信した場合にはウォッチドッグシステム１００にＡＣＫ信号を送信することになっており、ウォッチドッグシステム１００はそのＡＣＫ信号を受信しなければプロセッサをリセットすることになる。必要に応じて、レスポンスを返さなかったタスクを無効にするためのより洗練されたウォッチドッグタスクマネジャが実装可能であり、それにより全てのその他の残りのタスクが正しく実行されていれば無効にされたタスクを個別にリロードすることが可能となる。
【００３６】
本発明はマルチプロセッサ・アーキテクチャにも適している。かかるシナリオでは、各プロセッサから１本以上のＩＯラインが制御ロジック１２０に接続される。マルチプロセッサシステムでは、システム制御プロセッサは他の残りのプロセッサにもクエリーを同報し、それらのプロセッサはウォッチドッグシステム１００にＡＣＫ信号を直接送信すべきである。
【００３７】
以上の説明において、特に幾つかの好ましい実施形態に関して本発明を説明してきたが、特許請求の範囲の各請求項によって画定される本発明の範囲を逸脱することなく形態の細部に様々な変更を加えられることを当業者であれば理解するであろう。
【図面の簡単な説明】
【００３８】
【図１】本発明の少なくとも１つの好ましい実施形態によるウォッチドッグシステム（または“状態マシン”）の構成図である。
【図２】本発明の少なくとも１つの好ましい実施形態によるウォッチドッグシステムの全状態図である。
【図３】本発明の少なくとも１つの好ましい実施形態によるウォッチドッグポリシーを説明するための図である。
【図１】
2007534049.tif 000003
【図２】
2007534049.tif 000004
【図３】
2007534049.tif 000005
【国際調査報告】
2007534049.tif 000006
2007534049.tif 000007
2007534049.tif 000008