JP2001188688A - 暴走検知回路 - Google Patents

暴走検知回路

Info

Publication number
JP2001188688A
JP2001188688A JP2000000245A JP2000000245A JP2001188688A JP 2001188688 A JP2001188688 A JP 2001188688A JP 2000000245 A JP2000000245 A JP 2000000245A JP 2000000245 A JP2000000245 A JP 2000000245A JP 2001188688 A JP2001188688 A JP 2001188688A
Authority
JP
Japan
Prior art keywords
value
program counter
instruction
shift register
bit shift
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
Application number
JP2000000245A
Other languages
English (en)
Inventor
Arinori Yamamoto
有紀 山本
Hiroshi Tanase
寛 多那瀬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP2000000245A priority Critical patent/JP2001188688A/ja
Publication of JP2001188688A publication Critical patent/JP2001188688A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【課題】 ノイズや電圧の急激な変動などにより、プロ
グラムカウンタの値がデータ化けを起こすと、命令コー
ドのフェッチミスが発生し、CPUが誤った命令コード
を処理しながらプログラムが進んでしまう。本発明は、
誤った命令コードが処理されたことを検知することを目
的とする。 【解決手段】 可変長命令の命令境界となるアドレスを
予めアドレス設定レジスタ4に設定しておく。前記設定
値とプログラムカウンタ3とを比較器5により常に比較
し、プログラムカウンタ3の値が正しい順序通りに変化
していることを確認し、プログラムカウンタ3が異常値
をとったときには、これを検出することができる。本発
明では、分岐・割込み命令を含むプログラムにおいても
暴走検知が有効である。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、マイクロコンピュ
ータの誤動作を検知するための機構に関するものであ
る。
【0002】
【従来の技術】一般に、マイクロコンピュータは、CP
Uがメモリに格納された命令コードを順序通り実行する
ことで処理が進んでいく。しかし、ノイズや電圧の急激
な変動の影響を受けることでプログラムカウンタの異常
や命令コードのフェッチミスが発生した場合には、CP
Uは正しく命令を実行できなくなる。従来の技術では、
ウオッチドックタイマによる一定間隔でのCPUの監視
や未定義命令の検知により、CPUの誤動作を極力防止
してきた。
【0003】
【発明が解決しようとする課題】可変長命令アーキテク
チャを持つマイクロプロセッサがノイズを受けて暴走す
るメカニズムの一つに、プログラムカウンタの値が異常
になる動作がある。プログラムカウンタに異常が起こる
と、図9に示すように誤った命令境界からデータをとり
込んでしまう。ところが、従来のウオッチドックタイマ
による一定間隔での暴走検出機構であると、暴走が検出
されるまでに時間がかかり、その間CPUは誤動作して
しまう。また、未定義命令の検知による暴走検出機構で
あると、暴走後にフェッチした命令コードが前後の命令
コードとの関係に違反していなければこれを検知するこ
とができず、CPUは誤った命令を処理しながら動作し
てしまう。
【0004】本発明は上記課題を解決するために、誤っ
た命令コードが処理されたことを検知することを目的と
する。
【0005】
【課題を解決するための手段】上記課題を解決するた
め、本発明では、図10に示すように可変長命令の命令
境界となるアドレスを予め設定しておき、プログラムカ
ウンタと常に比較を行う。従って、本発明の実行形態に
は、前記アドレスを設定するレジスタと、前記アドレス
とプログラムカウンタとを比較する比較器とを備える。
また、プログラムカウンタが前記アドレスに対して異常
値となった場合、これを検知するためのシフトレジスタ
とデコーダとを備える。
【0006】
【発明の実施の形態】(実施の形態1)以下に本発明の
第1の実施の形態について、図1を用いて説明する。図
1は本発明の第1の実施の形態における暴走検知回路の
構成を示すブロック図である。
【0007】1はマイクロコンピュータのCPU、2は
分岐命令または割込み命令が発生したときにCPU1内
で検知される分岐・割込み検知フラグである。3はCP
U1内のプログラムカウンタであり、4は予め命令境界
アドレスを設定しておくためのアドレス設定レジスタで
ある。比較器5はプログラムカウンタ3とアドレス設定
レジスタ4の値を比較する。
【0008】一致検出フラグ6には、比較器5の比較結
果から、プログラムカウンタ3の値とアドレス設定レジ
スタ4の値が一致したとき‘1’、それ以外は‘0’が
設定される。同様に、大小判定フラグ7には、プログラ
ムカウンタ3の値がアドレス設定レジスタ4の値と一致
したときか、大きいとき‘1’、それ以外は‘0’が設
定される。
【0009】8は一致検出フラグ6をラッチする2ビッ
トシフトレジスタであり、9は大小判定フラグをラッチ
する3ビットシフトレジスタである。3ビットシフトレ
ジスタ9の2ビット目に相当するbp1は、分岐・割込
み検知フラグ2によって、CPUが分岐処理や割込み処
理を実行する際にセットされる。2ビットシフトレジス
タ8の出力信号81、82及び3ビットシフトレジスタ
9の出力信号91、92、93はデコーダ10によって
デコードされる。デコーダ10は出力信号91、92、
93、81、82が‘10000’となったとき暴走検
知フラグ11を発生する。
【0010】以下に、図2〜図4を参照して、暴走検知
のフローを説明する。図2〜図4はアドレス設定レジス
タ4に命令境界アドレス‘53H’(16進数表記)を
設定した例であり、CPUの動作状態が図2は分岐の成
立や割込みの発生のない状態での正常動作の場合を、図
3は異常動作の場合を、図4は分岐命令が成立した場合
を示している。
【0011】(1)分岐の成立や割込みの発生のない状
態での正常動作の場合 CPUが正常に動作している場合について、図2を参照
して説明する。このとき、プログラムカウンタ3の値は
アドレス設定レジスタ4の設定値に対して、設定値より
小さい値、設定値と同じ値、設定値より大きい値の順に
変化する。
【0012】プログラムカウンタ3がアドレス設定レジ
スタ4の設定値よりも小さい値のときには、大小判定フ
ラグ7および一致検出フラグ6が‘0’であり、3ビッ
トシフトレジスタ9、2ビットシフトレジスタ8ともに
全ビット‘0’である。プログラムカウンタ3の値がア
ドレス設定レジスタ4の設定値‘53H’と一致したと
き、大小判定フラグ7及び一致検出フラグ6が‘1’と
なり3ビットシフトレジスタ9、2ビットシフトレジス
タ8のbp0に‘1’がラッチされる。プログラムカウ
ンタ3の値がアドレス設定レジスタ4の設定値よりも大
きい値になると、大小判定フラグ7は‘1’、一致検出
フラグ6は‘0’となり、図2に示すように、3ビット
シフトレジスタ9は‘110’、2ビットシフトレジス
タ8は‘01’となる。
【0013】従ってこのフローでは、出力信号91、9
2、93、81、82が‘10000’となることはな
く、暴走検知フラグ11はアクティブにはならない。
【0014】(2)異常動作の場合 CPUに異常動作が発生した場合について、図3を参照
して説明する。プログラムカウンタ3がノイズなどによ
り異常値をとった場合、プログラムカウンタ3の値は、
アドレス設定レジスタ4の設定値に一致せず通過してし
まう。
【0015】プログラムカウンタ3がアドレス設定レジ
スタ4の設定値よりも小さい値のときには、大小判定フ
ラグ7及び一致検出フラグ6が‘0’であり、3ビット
シフトレジスタ9、2ビットシフトレジスタ8ともに全
ビット‘0’である。プログラムカウンタ3の値がアド
レス設定レジスタ4の設定値に一致することなく大きい
値になると、大小判定フラグ7は‘1’、一致検出フラ
グ6は‘0’となり、図3に示すように、3ビットシフ
トレジスタ9は‘100’、2ビットシフトレジスタ8
は‘00’となる。
【0016】従ってこのフローでは、プログラムカウン
タ3の値がアドレス設定レジスタ4の設定値を通過した
直後に、出力信号91、92、93、81、82が‘1
0000’となり、暴走検知フラグ11がアクティブに
なることから、異常命令処理による暴走を検知できる。
【0017】(3)分岐命令が成立した場合 CPUの動作状態に分岐が発生した場合について、図4
を参照して説明する。このとき、プログラムカウンタ3
の値は、アドレス設定レジスタ4の設定値に一致するこ
となく通過してしまう場合がある。
【0018】プログラムカウンタ3がアドレス設定レジ
スタ4の設定値よりも小さい値のときには、大小判定フ
ラグ7及び一致検出フラグ6が‘0’であり、3ビット
シフトレジスタ9、2ビットシフトレジスタ8ともに全
ビット‘0’である。分岐が発生すると、分岐・割込み
検知フラグ2により3ビットシフトレジスタ9のbp1
が‘1’にセットされ、プログラムカウンタ3の値がア
ドレス設定レジスタ4の設定値に一致することなく、大
きい値になると、大小判定フラグ7は‘1’、一致検出
フラグ6は‘0’となり、図4に示すように、3ビット
シフトレジスタ9は‘101’、2ビットシフトレジス
タ8は‘00’となる。
【0019】従ってこのフローでは、出力信号91、9
2、93、81、82が‘10000’となることはな
く、暴走検知フラグ11はアクティブにはならない。割
込みが発生した場合でも、同様の処理が行われることは
自明である。
【0020】以上(1)、(2)、(3)より、本実施
形態では、プログラムカウンタ3が異常値をとると、暴
走検知フラグ11がアクティブになることから、暴走検
知が可能となる。
【0021】(実施の形態2)以下に本発明の第2の実
施の形態について、図5を用いて説明する。第2の実施
の形態は、複数の命令境界アドレスを設定することので
きる機構である。図5は本発明の第2の実施の形態にお
ける暴走検知回路の構成を示すブロック図である。
【0022】1はマイクロコンピュータのCPUであ
り、2は分岐命令または割込み命令が発生したときにC
PU1内で検知される分岐・割込み検知フラグである。
3はCPU1内のプログラムカウンタであり、41〜4
4は予め命令境界アドレスを設定しておくためのアドレ
ス設定レジスタである。アドレス設定レジスタは4個設
け、プログラムカウンタ3の最上位2ビットで区別され
るメモリ領域ごとに1つの命令境界アドレスを設定する
ものとする。
【0023】アドレス設定レジスタ41には最上位2ビ
ットが‘00’の命令境界アドレスを、アドレス設定レ
ジスタ42には最上位2ビットが‘01’の命令境界ア
ドレスを、アドレス設定レジスタ43には最上位2ビッ
トが‘10’の命令境界アドレスを、アドレス設定レジ
スタ44には最上位2ビットが‘11’の命令境界アド
レスを設定する。
【0024】セレクタ12はプログラムカウンタ3の最
上位2ビットが‘00’のときアドレス設定レジスタ4
1を、‘01’のときアドレス設定レジスタ42を、
‘10’のときアドレス設定レジスタ43を‘11’の
ときアドレス設定レジスタ44を選択することで、プロ
グラムカウンタ3と同じ領域の命令境界アドレス設定値
を選択することができる。セレクト変更フラグ13に
は、セレクタ12でのアドレス設定レジスタ41〜44
の選択が変化したときに‘1’、それ以外は‘0’が設
定される。
【0025】比較器5はプログラムカウンタ3とセレク
タ12の値を比較する。一致検出フラグ6には、比較器
5の出力結果から、プログラムカウンタ3の値とセレク
タ12の値が一致したとき‘1’、それ以外は‘0’が
設定される。同様に、大小判定フラグ7には、プログラ
ムカウンタ3の値がセレクタ12の値と一致したとき
か、大きいとき ‘1’、それ以外は‘0’が設定され
る。8は一致検出フラグ6をラッチする2ビットシフト
レジスタであり、9は大小判定フラグをラッチする3ビ
ットシフトレジスタである。3ビットシフトレジスタ9
のbp1は分岐・割込み検知フラグ2によって、CPU
が分岐処理や割込み処理を実行する際にセットされ、b
p0及びbp2はセレクト変更フラグ13によってクリ
アされる。2ビットシフトレジスタ8の出力信号81、
82及び3ビットシフトレジスタ9の出力信号91、9
2、93はデコーダ10によってデコードされる。デコ
ーダ10は出力信号91、92、93、81、82が
‘10000’となったとき暴走検知フラグ11を発生
する。
【0026】命令境界アドレスは、プログラムカウンタ
3の上位nビットで区別されるメモリ領域ごとに設定で
きるので、アドレス設定レジスタは2n個設けることも
可能である。
【0027】以下に、図6〜図8を参照して、暴走検知
のフローを説明する。図6〜図8は命令境界アドレスと
して、アドレス設定レジスタ41に‘072H’、アド
レス設定レジスタ42に‘114H’、アドレス設定レ
ジスタ43に‘243H’、アドレス設定レジスタ44
に‘330H’を設定した例であり、CPUの動作状態
が図6は分岐の成立や割込みの発生のない状態での正常
動作の場合を、図7は異常動作の場合を、図8は分岐命
令が成立した場合を示している。
【0028】(1)分岐の成立や割込みの発生のない状
態での正常動作の場合 CPUが正常に動作している場合について、図6を参照
して説明する。このとき、プログラムカウンタ3の値
は、セレクタ12の選択値に対して、選択値より小さい
値、選択値、選択値より大きい値の順に変化する。
【0029】図6ではプログラムカウンタ3が‘050
H’から始まる例を示している。このとき、プログラム
カウンタ3の最上位2ビット‘00’により、セレクタ
12ではアドレス設定レジスタ41が選択されているの
で、セレクタ12の選択値は‘072H’である。プロ
グラムカウンタ3がセレクタ12の選択値よりも小さい
値のときには、大小判定フラグ7および一致検出フラグ
6が‘0’であり、3ビットシフトレジスタ9、2ビッ
トシフトレジスタ8ともに全ビット‘0’である。プロ
グラムカウンタ3の値がセレクタ12の選択値‘072
H’と一致したとき、大小判定フラグ7及び一致検出フ
ラグ6が‘1’となり3ビットシフトレジスタ9、2ビ
ットシフトレジスタ8のbp0に‘1’がラッチされ
る。
【0030】プログラムカウンタ3の値がセレクタ12
の選択値よりも大きい値になると、大小判定フラグ7は
‘1’、一致検出フラグ6は‘0’となり、図6に示す
ように、3ビットシフトレジスタ9は‘110’、2ビ
ットシフトレジスタ8は‘01’となる。
【0031】さらにプログラムが進んで、プログラムカ
ウンタ3の最上位2ビットが‘00’から‘01’に変
化するとセレクト変更フラグ13が‘1’にセットされ
ることで、3ビットシフトレジスタ9のbp0及びbp
2が‘0’にクリアされ、セレクタ12の選択がアドレ
ス設定レジスタ42に変化する。
【0032】従ってこのフローでは、出力信号91、9
2、93、81、82が‘10000’となることはな
く、暴走検知フラグ11はアクティブにはならない。
【0033】(2)異常動作の場合 CPUに異常動作が発生した場合について、図7を参照
して説明する。プログラムカウンタ3がノイズなどによ
り異常値をとった場合、プログラムカウンタ3の値は、
セレクタ12の選択値に一致せず通過してしまう。
【0034】図6の正常動作の場合と同様に、プログラ
ムカウンタ3が‘110H’まで進んだとする。この
後、プログラムカウンタ3が異常値をとり、セレクタ1
2の選択値‘114H’に一致することなく大きい値に
なると、大小判定フラグ7は‘1’、一致検出フラグ6
は‘0’となり、図7に示すように、3ビットシフトレ
ジスタ9は‘100’、2ビットシフトレジスタ8は
‘00’となる。
【0035】従ってこのフローでは、プログラムカウン
タ3の値がセレクタ12の選択値を通過した直後に、出
力信号91、92、93、81、82が‘10000’
となり、暴走検知フラグ11がアクティブになり、異常
命令処理による暴走を検知できる。
【0036】(3)分岐命令が成立した場合 CPUの動作状態に分岐が発生した場合について、図8
を参照して説明する。このとき、プログラムカウンタ3
の値は、セレクタ12の選択値に一致することなく通過
してしまう場合がある。
【0037】図6の正常動作の場合と同様に、プログラ
ムカウンタ3が‘081H’まで進んだとする。この
後、分岐が発生すると、プログラムカウンタ3の最上位
2ビットが‘00’から‘10’に変化するとセレクト
変更フラグ13が‘1’にセットされることで、3ビッ
トシフトレジスタ9のbp0及びbp2が‘0’にクリ
アされ、さらに、分岐・割込み検知フラグ2により、b
p1が‘1’にセットされる。また、セレクタ12の選
択がアドレス設定レジスタ43に変化する。この分岐に
より、プログラムカウンタ3の値がセレクタ12の選択
値に一致することなく、大きい値になると、大小判定フ
ラグ7は‘1’、一致検出フラグ6は‘0’となり、図
8に示すように、3ビットシフトレジスタ9は‘10
1’、2ビットシフトレジスタ8は‘00‘となる。
【0038】従ってこのフローでは、出力信号91、9
2、93、81、82が‘10000’となることはな
く、暴走検知フラグ11はアクティブにはならない。割
込みが発生した場合でも、同様の処理が行われることは
自明である。
【0039】以上(1)、(2)、(3)より、本実施
形態では、アドレス設定レジスタを複数個設けること
で、精度の良い暴走検知が可能となる。
【0040】
【発明の効果】以上の実施の形態から分かるように本発
明によれば、ノイズや、急激な電圧変動などにより、プ
ログラムカウンタが異常値をとったとき、暴走検知を行
うことができるので、CPUの誤動作を防止することが
できる。
【図面の簡単な説明】
【図1】本発明の第1の実施の形態における暴走検知回
路の構成を示すブロック図
【図2】本発明の第1の実施の形態における暴走検知回
路の動作フローの一例(分岐の成立や割込みの発生のな
い状態での正常動作の場合)を示す図
【図3】本発明の第1の実施の形態における暴走検知回
路の動作フローの一例(異常動作の場合)を示す図
【図4】本発明の第1の実施の形態における暴走検知回
路の動作フローの一例(分岐命令が成立した場合)を示
す図
【図5】本発明の第2の実施の形態における暴走検知回
路の構成を示すブロック図
【図6】本発明の第2の実施の形態における暴走検知回
路の動作フローの一例(分岐の成立や割込みの発生のな
い状態での正常動作の場合)を示す図
【図7】本発明の第2の実施の形態における暴走検知回
路の動作フローの一例(異常動作の場合)を示す図
【図8】本発明の第2の実施の形態における暴走検知回
路の動作フローの一例(分岐命令が成立した場合)を示
す図
【図9】プログラムカウンタ異常による異常命令処理の
例を示す図
【図10】本発明のプログラムカウンタ異常による暴走
検知の概念図
【符号の説明】
1 CPU 2 分岐・割込み検知フラグ 3 プログラムカウンタ 4 アドレス設定レジスタ 5 比較器 6 一致検出フラグ 7 大小判定フラグ 8 2ビットシフトレジスタ 9 3ビットシフトレジスタ 10 デコーダ 11 暴走検知フラグ 12 セレクタ 13 セレクト変更フラグ 41 アドレス設定レジスタ 42 アドレス設定レジスタ 43 アドレス設定レジスタ 44 アドレス設定レジスタ 81 2ビットシフトレジスタ8出力信号 82 2ビットシフトレジスタ8出力信号 91 3ビットシフトレジスタ9出力信号 92 3ビットシフトレジスタ9出力信号 93 3ビットシフトレジスタ9出力信号

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】予めデータを格納するための第1の記憶装
    置と、前記第1の記憶装置の値とプログラムカウンタの
    値を比較して大小判定および一致検出を行う比較器と、
    前記大小判定および一致検出結果を格納するための第
    2、第3の記憶装置と、前記第2、第3の記憶装置の値
    をデコードするデコーダからなる、マイクロコンピュー
    タの暴走検知回路。
  2. 【請求項2】前記予めデータを格納するための第1の記
    憶装置を複数個設ける手段を備えた、マイクロコンピュ
    ータの暴走検知回路。
JP2000000245A 2000-01-05 2000-01-05 暴走検知回路 Pending JP2001188688A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2000000245A JP2001188688A (ja) 2000-01-05 2000-01-05 暴走検知回路

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000000245A JP2001188688A (ja) 2000-01-05 2000-01-05 暴走検知回路

Publications (1)

Publication Number Publication Date
JP2001188688A true JP2001188688A (ja) 2001-07-10

Family

ID=18529623

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000000245A Pending JP2001188688A (ja) 2000-01-05 2000-01-05 暴走検知回路

Country Status (1)

Country Link
JP (1) JP2001188688A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006522968A (ja) * 2003-03-25 2006-10-05 ギーゼッケ ウント デフリエント ゲーエムベーハー 携帯型データ・キャリアのバーチャル・マシン向けプログラムの制御実行
WO2010055562A1 (ja) * 2008-11-13 2010-05-20 富士通マイクロエレクトロニクス株式会社 マイクロコンピュータ

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006522968A (ja) * 2003-03-25 2006-10-05 ギーゼッケ ウント デフリエント ゲーエムベーハー 携帯型データ・キャリアのバーチャル・マシン向けプログラムの制御実行
US7797682B2 (en) 2003-03-25 2010-09-14 Giesecke & Devrient Gmbh Controlled execution of a program used for a virtual machine on a portable data carrier
WO2010055562A1 (ja) * 2008-11-13 2010-05-20 富士通マイクロエレクトロニクス株式会社 マイクロコンピュータ
JP5115628B2 (ja) * 2008-11-13 2013-01-09 富士通セミコンダクター株式会社 マイクロコンピュータ
US8522081B2 (en) 2008-11-13 2013-08-27 Fujitsu Semiconductor Limited Microcomputer outputting failure detection result

Similar Documents

Publication Publication Date Title
US5109381A (en) Apparatus and method for detecting errors in a pipeline data processor
TWI803927B (zh) 處理器、用以保護處理器的裝置、以及用以保護處理器的方法
US5838896A (en) Central processing unit for preventing program malfunction
KR930001055B1 (ko) 가변 단어길이 명령의 병렬해독 및 병렬실행을 하는 데이터 처리장치
JP2001188688A (ja) 暴走検知回路
US6990569B2 (en) Handling problematic events in a data processing apparatus
US7149879B2 (en) Processor and method of automatic instruction mode switching between n-bit and 2n-bit instructions by using parity check
KR100239438B1 (ko) 오동작 방지 기능을 갖는 중앙 처리 장치
JPH04235638A (ja) プリフェッチ機能付マイクロプロセッサ
JP3129873B2 (ja) マイクロコンピュータ
JPH04264923A (ja) 情報処理装置
KR0145893B1 (ko) 오버플로 방지 장치
JP2001159976A (ja) マイクロコンピュータの誤動作防止機構
JP2689894B2 (ja) マイクロプログラム制御型情報処理装置
JPH05173840A (ja) マイクロコンピュータ
JPS6083149A (ja) コンピユ−タ
JP4564025B2 (ja) 情報処理装置における割り込み処理方法
JPH0764822A (ja) マイクロコンピュータ
JPH03233732A (ja) 電子計算機
JPH08263304A (ja) 演算処理装置
JPS59129995A (ja) 記憶装置
JPH0371236A (ja) エラー検出システム
JPS62144246A (ja) 計算機
JPS59168552A (ja) プログラムリトライによる暴走防止方式
JPH0991168A (ja) エミュレータ