(57)【特許請求の範囲】
【請求項１】
プログラム制御プロセッサ上で実行されているプログラムの暴走を監視する回路において、
前記プログラム制御プロセッサが使用するバス上のアドレス情報およびデータ情報を設定されたタイミングで読み取るバス情報読み取り手段と、
前記読み取られたアドレス情報およびデータ情報の組をエントリ情報として前記設定されたタイミングごとに交互に蓄積する第１メモリ手段および第２メモリ手段と、
前記第１メモリ手段に蓄積された第１エントリ情報と前記第２メモリ手段に蓄積された第２エントリ情報とを比較して同一情報領域の存在の有無を判定する比較判定手段と、
前記比較判定手段の判定結果に基づいてプログラムの暴走を監視する監視手段と、
を有することを特徴とするプログラム暴走監視回路。
【請求項２】
前記バス情報読み取り手段は、前記バス上のイネーブル信号を契機として、前記バス上のアドレス情報およびデータ情報を前記プログラム制御プロセッサの動作クロックに従って読み取ることを特徴とする請求項１に記載のプログラム暴走監視回路。
【請求項３】
前記同一情報領域は同一情報が同一順序で複数配列された領域であることを特徴とする請求項１または２に記載のプログラム暴走監視回路。
【請求項４】
前記監視手段は、前記比較判定手段による同一情報領域の存在を示す判定結果が複数回発生したときに、プログラムの暴走を検出することを特徴とする請求項１−３のいずれかに記載のプログラム暴走監視回路。
【請求項５】
前記監視手段は、前記同一情報領域の存在を示す判定結果の回数をカウントするカウント手段を有し、前記カウント値が所定しきい値を超えたときにプログラムの暴走を検出することを特徴とする請求項４に記載のプログラム暴走監視回路。
【請求項６】
前記所定しきい値は、プログラム暴走の誤認を回避できる値に設定されたことを特徴とする請求項５に記載のプログラム暴走監視回路。
【請求項７】
プログラム制御プロセッサ上で実行されているプログラムの暴走を監視する方法において、
前記プログラム制御プロセッサが使用するバス上のアドレス情報およびデータ情報の組をエントリ情報として設定されたタイミングで順次読み取り、
前回のタイミングで読み取られた第１エントリ情報と今回のタイミングで読み取られた第２エントリ情報とを比較して同一情報領域を検索し、
前記同一情報領域の有無によりプログラムの暴走を監視する、
ことを特徴とするプログラム暴走監視方法。
【請求項８】
前記同一情報領域は同一情報が同一順序で複数配列された領域であることを特徴とする請求項７に記載のプログラム暴走監視方法。
【請求項９】
前記同一情報領域が複数回検索されたときに、プログラムの暴走を検出することを特徴とする請求項７または８に記載のプログラム暴走監視方法。
【請求項１０】
前記同一情報領域が所定しきい値を超える回数検索されたときにプログラムの暴走を検出することを特徴とする請求項９に記載のプログラム暴走監視方法。
【請求項１１】
前記所定しきい値は、プログラム暴走の誤認を回避できる値に設定されたことを特徴と
する請求項１０に記載のプログラム暴走監視方法。
【請求項１２】
請求項１−６のいずれかに記載のプログラム暴走監視回路を有する情報処理装置。
【請求項１３】
請求項７−１１のいずれかに記載のプログラム暴走監視方法を採用した情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はプログラム制御プロセッサ上で実行されているプログラムの暴走を監視する技術に関する。
【背景技術】
【０００２】
プログラムの暴走を監視する技術としてはこれまで種々のものが提案されてきた。たとえば、特開昭６３−２９８４５３号公報（特許文献１）には、プログラムの単一ステップの実行の有無に依存するのではなく、複数の任意ステップの命令コードのシグネチャと予め求めたシグネチャデータとを比較することにより暴走を検出するプログラム暴走監視回路が開示されている。この暴走監視回路は、実行した命令コードのシグネチャを求めるためのリニア・フィードバック・シフトレジスタ（ＬＦＳＲ）を有し、プログラムメモリには、このＬＦＳＲに取り込む命令コードかどうかを判断するためのイネーブルビットが付加されている。
【０００３】
特開平６−２５９２８８号公報（特許文献２）に開示された暴走監視回路では、ＣＰＵの命令のプログラムアドレスに対して次のアドレスを予め記憶しておき、当該次のアドレスとＣＰＵが実際に発生する次のプログラムアドレスとを常に比較して不一致が生じたときに暴走を検出する。
【０００４】
また、特開２０００−５７０２１号公報（特許文献３）には、ウォッチドッグタイマ内に、その動作状態を判別する手段を設け、スタンバイ制御信号によりウォッチドッグタイマが動作を停止させているときに限り、供給されるクロックを停止させることによりウォッチドッグタイマの誤動作を回避する方法が開示されている。
【０００５】
【特許文献１】特開昭６３−２９８４５３号公報
【特許文献２】特開平６−２５９２８８号公報
【特許文献３】特開２０００−５７０２１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、ウォッチドッグタイマやプログラムの単一ステップに依存することなく、プログラムの暴走を確実に検出することができる新たなプログラム暴走監視方法および回路を提供する。
【課題を解決するための手段】
【０００７】
本発明によれば、プログラム実行中のプログラム制御プロセッサが使用するバス上のデータを用いてプログラムの暴走の有無を検出する。たとえば、バス上の情報を設定された時間間隔で読み取り、前回の読取情報と今回の読取情報とから同一情報の領域を検索し、その検索結果に基づいてプログラムの暴走の有無を検出する。
【０００８】
本発明によるプログラム暴走監視回路は、プログラム制御プロセッサが使用するバス上のアドレス情報およびデータ情報を設定されたタイミングで読み取るバス情報読み取り手段と、読み取られたアドレス情報およびデータ情報の組をエントリ情報として設定されたタイミングごとに交互に蓄積する第１メモリ手段および第２メモリ手段と、第１メモリ手段に蓄積された第１エントリ情報と第２メモリ手段に蓄積された第２エントリ情報とを比較して同一情報領域の存在の有無を判定する比較判定手段と、比較判定手段の判定結果に基づいてプログラムの暴走を監視する監視手段と、を有することを特徴とする。
【０００９】
前記バス情報読み取り手段は、前記バス上のイネーブル信号を契機として、前記バス上のアドレス情報およびデータ情報を前記プログラム制御プロセッサの動作クロックに従って読み取ることができる。
【００１０】
前記監視手段は、前記比較判定手段による同一情報領域の存在を示す判定結果が複数回発生したときにプログラムの暴走を検出することができる。監視手段は、前記同一情報領域の存在を示す判定結果の回数をカウントするカウント手段を有し、前記カウント値が所定しきい値を超えたときにプログラムの暴走を検出することが望ましい。特に、所定しきい値はプログラム暴走の誤認を回避できる値に設定されることが望ましい。
【００１１】
本発明によるプログラム暴走監視方法は、プログラム制御プロセッサが使用するバス上のアドレス情報およびデータ情報の組をエントリ情報として設定されたタイミングで順次読み取り、前回のタイミングで読み取られた第１エントリ情報と今回のタイミングで読み取られた第２エントリ情報とを比較して同一情報領域を検索し、同一情報領域の有無によりプログラムの暴走を監視する、ことを特徴とする。
【発明の効果】
【００１２】
本発明によれば、プログラム制御プロセッサが使用するバス上のアドレス情報およびデータ情報の組をエントリ情報として用いてプログラムの暴走の有無を検出することができる。すなわち、前回のタイミングで読み取られたバス上のエントリ情報と今回のタイミングで読み取られたエントリ情報とを比較し、それらの情報の間に同一情報領域が存在するか否かの判定に基づいてプログラム暴走の確実な監視が可能である。
【００１３】
特に、同一情報領域の存在を示す判定が所定しきい値を超える回数続いた場合にプログラム暴走と判定することにより、暴走の検出精度が向上するとともに暴走の誤認を確実に回避することができ、暴走監視の信頼性を向上させることができる。
【発明を実施するための最良の形態】
【００１４】
図１は本発明の一実施形態によるプログラム暴走監視回路のブロック図である。ＣＰＵ(Central Processing Unit)１はプログラム制御プロセッサであり、予めプログラムされた命令に従って動作を行い、バスを通して、アドレスおよびデータ情報Ｂ、ＣＰＵ動作クロックＣ、イネーブル信号Ａを含む制御信号など種々の情報を転送する。
【００１５】
プログラム暴走監視回路に設けられたタイマ部２は、外部から供給されるクロックに従って時間計測を行い、外部より設定された時間が経過すると読み取り部３へ開始通知を出力して時間計測を停止する。タイマ部２の時間計測は、後述するメモリ部４あるいは５からの許容容量到達通知により再開する。
【００１６】
読み取り部３は、ＣＰＵ動作クロックＣおよびイネーブル信号Ａに従って、アドレスおよびデータ情報Ｂをバスから読み出す。読み出されたアドレスおよびデータ情報は、読み取り動作ごとに交互に選択されたメモリ部４あるいはメモリ部５に格納される。読み取り部３の読み取り動作は、タイマ部２からの開始通知により開始し、メモリ部４あるいは５からの許容容量到達通知により停止する。
【００１７】
メモリ部４およびメモリ部５は、それぞれ予め設定された許容容量を有するメモリであり、読み取り部３からのイネーブル信号により選択されたメモリ部４または５が読み取られたアドレスおよびデータ情報を格納する。メモリ部４および５は、データを許容容量まで蓄積すると、許容容量到達通知をタイマ部２、読み取り部３および比較判定部６へそれぞれ出力する。
【００１８】
比較判定部６は、メモリ部４およびメモリ部５にそれぞれ格納された前回および今回のアドレスおよびデータ情報Ｂを比較し、同じ順序で格納された同一情報を検索する。同一順序の同一情報が存在すれば、比較判定部６はカウンタ監視部７へ同一情報検出通知を出力する。
【００１９】
カウンタ監視部７は同一情報検出通知の回数をカウントし、カウント値が外部から与えられた所定のしきい値を超えたときにアラームを外部へ出力する。
【００２０】
図２は本実施形態によるプログラム暴走監視回路の動作を説明するための状態遷移図である。
【００２１】
状態Ｓ１０：  まず、タイマ部２が起動され、外部クロックに従って時間計測を開始する。設定された時間が経過すると、タイマ部２は時間計測を停止し、開始通知を出力する。
【００２２】
状態Ｓ２０：  開始通知により読み取り部３が起動する。読み取り部３は、イネーブル信号Ａに従ったタイミングで、アドレスおよびデータ情報ＢをバスからＣＰＵ動作クロックＣに従って読み出す。読み取り部３は、前回選択したメモリ部とは別のメモリ部を選択し、選択したメモリ部４あるいは５に読み出されたアドレスおよびデータ情報を蓄積する。
【００２３】
状態Ｓ３０：  メモリ部４あるいは５から許容容量到達通知を入力すると、読み取り部３は読み取り動作を停止する。そして次の情報を読み取るために状態Ｓ１０へ戻ってタイマ部２が起動され、上述した状態Ｓ１０〜状態Ｓ３０がメモリ部４および５を交互に選択しながら繰り返される。このように読み取り動作を実行することで、メモリ部４および５には前回の読み取り情報と今回の読み取り情報とが交互に蓄積されることになる。
【００２４】
状態Ｓ４０：  メモリ部４あるいは５から許容容量到達通知を入力すると、比較判定部６はメモリ部４およびメモリ部５にそれぞれ格納された前回および今回のアドレスおよびデータ情報Ｂを比較し、同じ順序で格納された同一データの有無を判定する。同一順序の同一情報を検出したとき、あるいは、メモリ部４あるいは５の上限に格納された情報が一致したとき、比較判定部６はカウンタ監視部７へ同一情報検出通知を出力する。同一順序の同一データを検出したとき、あるいは、検索中にメモリ部４あるいは５のアドレス上限値に到達したときには、比較判定部６は検索動作を停止する。なお、比較判定部６の検索動作の詳細は後述する。
【００２５】
状態Ｓ５０：  カウンタ監視部７は同一情報検出通知の発生を監視し、その回数をカウントする。カウント値は所定のしきい値と比較され、カウント数がしきい値を超えたときに、カウンタ監視部７はプログラムの暴走と判断してアラームを外部へ通知する。
【００２６】
なお、タイマ部２の設定時間により読み取り動作の周期を調整することができ、適切な頻度でプログラム暴走監視が可能となる。
【００２７】
図３は本実施形態における比較判定部６の検索動作を説明するための模式図である。メモリ部４には、バスから前回読み取られたアドレス（A10, A11, A12, … A1n）とそれぞれのアドレスに対応したデータ（D10, D11, D12, … D1n）とがメモリ部４の下限(Start)から上限(End)へ向けて順に蓄積されているものとする。メモリ部５には、今回読み取られたアドレス（B10, B11, B12, … B1m）とそれぞれのアドレスに対応したデータ（E10, E11, E12, … E1m）とがメモリ部５の下限(Start)から上限(End)へ向けて順に蓄積されているものとする。なお、ここではｍ＝ｎとする。
【００２８】
比較判定部６はメモリ部４およびメモリ部５からエントリ情報を順次読み出して比較し、同一順序の同一データを検索する。次に、図３に示すメモリの状態を仮定して、比較判定部６の検索動作を詳細に説明する。
【００２９】
図４は比較判定部６の検索動作の流れを概略的に示すフローチャートである。比較判定部６は、今回の読み取り情報を蓄積したメモリ部５から許容容量到達通知を入力すると（ステップＳ１０１）、前回の読み取り情報を蓄積したメモリ部４の最初のエントリ情報(A10, D10)を読み出し、メモリ部５に同一情報が存在するかどうかをサーチする。存在しなければ、次のエントリ情報(A11, D11)を読み出し同様のサーチを繰り返す。以下同様に、エントリ情報(A1n, D1n)を上限として、メモリ部４から順次データを読み出しながら、同一情報が検出されるまで上記サーチを繰り返す（ステップＳ１０２）。
【００３０】
このサーチによりメモリ部４のエントリ情報(A1i, D1i)とメモリ部５のエントリ情報(B1j, E1j)とが一致したと仮定する。図３の例では、メモリ部４のエントリ情報(A13, D13)と同一の情報がメモリ部５のエントリ情報(B11, E11)として存在するものとする。
【００３１】
この一致を検出すると、比較判定部６は、一致したエントリ情報に続くエントリ情報をメモリ部４および５からそれぞれ読み出す。ここでは、メモリ部４のエントリ情報(A1i+1, D1i+1)とメモリ部５のエントリ情報(B1j+1, E1j+1)とがそれぞれ読み出され、同一か否かが判定される。 (A1i+1, D1i+1)＝(B1j+1, E1j+1)であれば、さらに続くデータをメモリ部４および５からそれぞれ読み出す。ここでは、メモリ部４の情報(A1i+2, D1i+2)とメモリ部５の情報(B1j+2, E1j+2)とがそれぞれ読み出され、同一か否かが判定される。(A1i+1, D1i+1)≠(B1j+1, E1j+1)であれば、この時点で検索を中止する（ステップＳ１０５）。以下同様に、同一であれば次のエントリ情報の比較を行うという動作をいずれかのエントリ情報がメモリ部の上限に到達するまで繰り返し、同一でなければその時点で検索を中止する（ステップＳ１０３）。
【００３２】
こうして一方のメモリ部のエントリ情報が上限に到達すると、同一のエントリ情報が同一の順序で両方のメモリ部に格納されていると判断し、同一情報検出通知をカウント監視部７へ送出する（ステップＳ１０４）。たとえば、図３に示すように、メモリ部４の領域ａのエントリ情報(A13, D13)〜(A1n, D1n)とメモリ部５の領域ｂのエントリ情報(B11, E11)〜(B1(m-2), E1(m-2))とが一致したと判定される。
【００３３】
なお、ステップＳ１０２において一方のメモリ部の上限エントリ情報が一致した場合には、上限エントリに到達しているのでステップＳ１０３では「全て一致」と判定され、同一情報検出通知がカウント監視部７へ出力されることになる。しかしながら、この一致は実際には同一情報検出とは言えない。したがって、このような同一情報検出通知だけでアラームが外部へ出力される事態を回避するのが望ましい。そこで、本実施形態では、カウント監視部７にカウントしきい値を設定し、同一情報検出通知の回数が設定しきい値を超えない限りアラームを出力しないようにしている。
【００３４】
このようにカウント監視部７にしきい値を設定することは暴走監視の信頼性を向上させるという利点もある。プログラム暴走が発生した場合には同一情報検出通知が繰り返しカウント監視部７に出力されるはずであるから、カウントしきい値を適当な値に設定することで、プログラム暴走の誤認を回避できると共に、実際の暴走を迅速にかつ確実に検知することもできる。
【００３５】
また、上記実施形態では、ステップＳ１０３に示すように、同一であれば次のエントリ情報の比較を行うという動作をいずれかのエントリ情報がメモリ部の上限に到達するまで繰り返すが、メモリ部の上限に到達する前であっても、所定の長さ同一情報領域が継続していれば「全て一致」と判定するようにしても良い。
【産業上の利用可能性】
【００３６】
本発明によるプログラム暴走監視回路および方法は、ＣＰＵを用いたコンピュータあるいは情報処理装置などに適用可能である。
【図面の簡単な説明】
【００３７】
【図１】本発明の一実施形態によるプログラム暴走監視回路のブロック図である。
【図２】本実施形態によるプログラム暴走監視回路の動作を説明するための状態遷移図である。
【図３】本実施形態における比較判定部６の検索動作を説明するための模式図である。
【図４】比較判定部６の検索動作の流れを概略的に示すフローチャートである。
【符号の説明】
【００３８】
１  ＣＰＵ
２  読み取り部
３  タイマ部
４  メモリ部
５  メモリ部
６  比較判定部
７  カウント監視部
【図１】
0004454566.tif 000002
【図２】
0004454566.tif 000003
【図３】
0004454566.tif 000004
【図４】
0004454566.tif 000005