JPH04111138A - ソフトウェア障害検出方式 - Google Patents

ソフトウェア障害検出方式

Info

Publication number
JPH04111138A
JPH04111138A JP2228426A JP22842690A JPH04111138A JP H04111138 A JPH04111138 A JP H04111138A JP 2228426 A JP2228426 A JP 2228426A JP 22842690 A JP22842690 A JP 22842690A JP H04111138 A JPH04111138 A JP H04111138A
Authority
JP
Japan
Prior art keywords
identification number
information
instruction
comparison
number information
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
JP2228426A
Other languages
English (en)
Inventor
Akira Jinzaki
明 陣崎
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2228426A priority Critical patent/JPH04111138A/ja
Publication of JPH04111138A publication Critical patent/JPH04111138A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔概  要〕 共通サブルーチンを使用するソフトウェアモジュールの
実行により発生するソフトウェア障害を早期に検出可能
なソフトウェア障害検出方式に関し、 共通サブルーチンを使用するソフトウェアシステムにお
いて、ソフトウェアのメモリ容量を増大することな(、
安価なコストでソフトウェア開発者が予期しなかった命
令シーケンスの実行を詳細に検出できるようにすること
を目的とし、複数のプログラムの各命令に対応じて設定
された少なくとも1つの識別番号を含む識別番号情報を
記憶する記憶手段と、プロセッサにより前回実行された
命令に対応する前記識別番号情報を一時記憶する第1の
保持手段と、プロセッサにより今回実行される命令に対
応する前記識別番号情報を一時記憶する第2の保持手段
と、プロセンサにより前記命令が実行される毎に、前記
第1の保持手段に記憶されている識別番号情報に含まれ
る当該識別番号と前記第2の保持手段に記憶されている
識別番号情報に含まれる当該識別番号とを比較して、そ
れらの識別番号の関係が所定の許容条件を満足している
か否かを判別することによりプロセッサによる不正な命
令の実行を検出する検出手段と、該検出手段の検出結果
をプロセッサに通知する通知手段と、を具備するように
構成する。
〔産業上の利用分野] 本発明は、電子計算機におけるソフトウェア障害を検出
するソフトウェア障害検出装置に係わり、特に共通サブ
ルーチンを使用するソフトウェアモジュールの実行によ
り発生するソフトウェア障害を早期に検出可能なソフト
ウェア障害検出方式に関する。
公知のノイマン型計算機は、プロセッサ(CPU)が、
メモリに格納されているプログラムの命令を逐次読み出
すことにより各種処理を行うが、ソフトウェア(プログ
ラム)自身の誤りや、ハードウェア障害等により予定し
ていない命令を実行する場合がある。この場合、プロセ
ッサは全く予期できない命令シーケンスを実行すること
になり、その結果として正常な処理は実行不能となる。
このような電子計算機のソフトウェア障害は、処理実行
中において無限ループ、不正なメモリアクセスによるデ
ータ破壊、さらにはシステムダウン等の様々な現象とな
って現れる。したがって、ソフトウェア開発者が予期し
なかった命令が実行される現象(以下、暴走と表現する
)を可能な限り早期に検出し直ちに処理を中止させるこ
とは、ソフトウェア障害の原因を調査したり、上記障害
に起因する問題発生を防止する観点から非常に重要であ
る。
[従来の技術] 従来上記のようなソフトウェア障害を検出する方式とし
て、以下に示す■〜■のような各種方式が行われている
■ウォッチドッグタイマ タイマ(ウォッチドッグタイマ)と、このタイマがタイ
ムアウトするとプロセッサに割り込み(タイマ割込み)
をかける回路を設ける。そしてソフトウェア(プログラ
ム)の所々に、このソフトウェアが正常に動作している
限り上記タイマのタイムアウトが発生しないように上記
タイマをリセットする命令(タイマリセント命令)を埋
め込んでおく。この場合、ソフトウェアが暴走すると(
例えば、無限ループ)、上記タイマリセット命令が実行
されなくなり、タイマからプロセッサに上記タイムアウ
ト割込みが加わるので、プロセッサは、ソフトウェア異
常の発生を検出できる。
■カウンタを いた 工゛ 例えば、特開昭61−18045号公報のように、ソフ
トウェア実行前にソフトウェアの命令実行数あるいは実
行時間の期待値をカウンタに設定しておき、ソフトウェ
ア実行中にハードウェアによってカウンタをカウントし
、カウンタがカウントアウトしたときは、ソフトウェア
が予期しない動作をしたとみなす方式。
■メモリプロテクト ソフトウェアのメモリへのアクセスを監視するハードウ
ェアを設ける。
あるソフトウェアが動作するときは、予めそのソフトウ
ェアがアクセスする予定のプログラム領域とデータ領域
のみアクセスできるようなハードウェアを設けておき、
ソフトウェア実行中に障害が発生して予定以外のメモリ
領域をアクセスしようとすると、メモリ監視ハードウェ
アがプロセッサに割り込みをかけ異常を通知する。
■プログラムの 4コードとオペランドの例えば、特開
昭61−45340号の「暴走監視方式」のように、ソ
フトウェア(プログラム)の各命令データ毎に命令コー
ドとオペランドを識別するデータを付加しておき、ソフ
トウェアが暴走してオペランドを命令コードとして実行
しようとしたとき、これを検出することにより異常を検
出する。
■ソフトウェア 1− 例えば、特開昭63−214389号の「プログラム暴
走防止装置」のように、各ソフトウェア毎にソフトウェ
ア識別番号を規定しておき、この識別番号を設定してお
くレジスタと、ソフトウェアが実行中に自識別番号を設
定するレジスタを設けておく。
そして、常時上記2つのレジスタの内容を比較すること
により予期したソフトウェア以外のソフトウェア動作を
検出する。
しかしながら、上記■〜■の方式は、以下に示すような
問題を有している。
[有]9フ■い吋11点 この方式は、ソフトウェア障害によって例えば無限ルー
プに陥った場合の障害検出を簡単なハードウェアで実現
できるという利点を有する。
しかしながら、障害発生後に、たまたま前記タイマリセ
ット命令を実行する命令シーケンスに入った場合には、
障害検出は不可能である。また、本来の処理に不要な前
記タイマリセット命令をプログラム内の適宜な箇所に埋
め込む必要があるため、ソフトウェア開発の手間が煩雑
になると共に、実行速度が遅くなる。また、ソフトウェ
アのメモリ容量が増加する等の問題もある。
;■方式■U立 前記カウンタに設定すべき命令実行数あるいは実行時間
の期待値を予め決定するのが困難である。
またソフトウェアが暴走しても、前記カウンタがカウン
トアウトするまでは暴走の検出ができないため、暴走を
即座に検出できない等の問題がある。
つ迎ブ■いパ叩じ嘉 この方式は、大型計算機などで用いられており、非常に
有効であるが、前記メモリ監視ハードウェアのコストが
高いという問題がある。また、障害が発生しても不当な
メモリ領域のみをアクセスした場合には、障害を検出で
きないという問題がある。
Ω9フ■い旧lじ嘉 この方式は、命令語長が固定長でないプロセンサにおい
ては、暴走の結果、メモリ上の命令境界の途中に制御が
移る場合があるので、上記アーキテクチャのプロセッサ
には有効である。しかし、偶然命令境界へ制御が移った
場合には、例えそれが暴走の結果であっても異常を検出
できないという問題がある。
D瞑ブ■い凶11点 この方式は、ソフトウェアの識別を検査することにより
、暴走の結果予期しないソフトウェアを実行した場合の
障害検出が可能となるので、上記■、■の方式よりも優
れている。また、上記■の方式よりも安価なコストで実
現できる。さらに、ソフトウェアの各モジュール単位で
障害検出が可能であるため、上記■の方式よりも詳細な
障害検出が可能である。しかし、障害が発生しても、た
またま同じ識別番号のソフトウェアを実行した場合や無
限ループの場合には、障害を検出できないという問題が
ある。さらに、共通サブルーチンのように複数のソフト
ウェアモジュールから実行されるソフトウェア(プログ
ラム)を有するシステムには対応できないという問題が
ある。
ところで、上記■の方式の上記問題点の一部は、上記他
の方式を適当に組み合わせることによって改善可能であ
る。例えば、上記■と■の方式を組み合わせることによ
り、ソフトウェアが無限ループに陥った場合の障害検出
も可能となる。しかしながら、共通サブルーチンを使用
するソフトウェアへの適用は困難であるという問題は依
然残る。
共通サブルーチンは、何らかの定型的な処理を行うソフ
トウェアであり、複数のソフトウェアモジュール(主プ
ログラム)がサブルーチンコールにより呼び出すことが
できる。この共通サブルーチンを使用する利点は、定型
的な処理が大きなソフトウェアで実現されており、この
処理が多くのソフトウェアモジュールから呼び出される
場合、この処理を必要とする全てのソフトウェアモジュ
ールに上記該当ソフトウェアを組み込むよりも、共通サ
ブルーチンとして、上記全てのソフトウェアモジュール
が共有した方がソフトウェアの容量(ステップ数、メモ
リ量)を削減でき、また開発期間も短縮できる。
〔発明が解決しようとする課題〕
前記■ウォッチドッグタイマ、■カウンタ、■メモリプ
ロテクト、■命令コードとオペランドの識別による方式
は、共通サブルーチンを使用したシステムでも上記特性
は有効であるが、上述した問題点は解消されない。
また、■ソフトウェア識別番号による方式は、共通サブ
ルーチンを使用する場合、次のような問題がある。
すなわち、共通サブルーチンを呼び出すソフトウェアモ
ジュールが複数存在する場合、共通サブルーチンにソフ
トウェア識別番号を与えることができない。これは共通
サブルーチンがモジュールAから呼び出されたときは、
モジュールAのソフトウェアとして動作し、モジュール
Bから呼び出されたときは、モジュールBのソフトウェ
アとして動作しなければならないために発生する問題で
ある。
この問題を前記■の方式で解決するためには、共通サブ
ルーチンを使用せず、各ソフトウェアモジュール毎に、
上記共通サブルーチンと同等の機能を有する処理プログ
ラムを組み込む必要があり、その結果としてソフトウェ
ア量の削減ができないという問題が発生する。これは、
ソフトウェアを格納するメモリ容量が制限される環境(
制御機器等のソフトウェア)では深刻な問題となる。
本発明は、共通サブルーチンを使用するソフトウェアシ
ステムにおいて、ソフトウェアのメモリ容量を増大する
ことなく、安価なコストでソフトウェア開発者が予期し
なかった命令シーケンスの実行を詳細に検出できるよう
にすることである。
1課題を解決するための手段] 第1図は本発明の原理説明図である。
記憶手段2は、複数のプログラムlの各命令1aに対応
じて設定された少なくとも1つの識別番号を含む識別番
号情報2aを記憶する手段であり、例えばRAM (ラ
ンダム・アクセス・メモリ)等の半導体メモリから成る
第1の保持手段3は、プロセッサ7により前回実行され
た命令1aに対応する前記識別番号情報2aを一時記憶
する手段であり、例えばフリップフロップ等から成る。
第2の保持手段4は、プロセッサ7により今回実行され
る命令1aに対応する識別番号情報2aを一時記憶する
手段であり、例えばフリップフロップ等から成る。
検出手段5は、プロセッサ7により前記命令1aが実行
される毎に、前記第1の保持手段3に記憶されている識
別番号情報2aに含まれる当該識別番号と前記第2の保
持手段3に記憶されている識別番号情報2aに含まれる
当該識別番号とを比較して、それらの識別番号の関係が
所定の許容条件を満足しているか否かを判別することに
よりプロセッサ7による不正な命令1aの実行を検出す
る手段であり、例えば比較回路やマルチプレクサ等から
成る。
通知手段6は、検出手段5の検出結果をプロセッサ7に
通知する手段であり、例えばAND回路、フリップフロ
ップ等から成る。
前記検出手段5は、例えば前記比較する2つの識別番号
の差分が、予め定められた所定値以下であるか否かを判
別することによって、プロセッサ7の不正な命令1aの
実行を検出する。あるいは、また、前記比較する2つの
識別番号のハミング距離が、予め定められた所定のハミ
ング距離以下であるか否かを判別することによって、プ
ロセッサ7の不正な命令1aの実行を検出する。
ところで、識別番号2aが、例えば請求項4記載のよう
に前記2つの識別番号の比較を禁止する比較禁止識別番
号を含んでいる場合、前記通知手段6は、この比較禁止
識別番号が前記第1の保持手段3に記憶されているとき
は前記検出手段5の検出結果を前記プロセッサ7に通知
しない。また、前記識別番号情報2aが、例えば請求項
5記載のように複数のプログラム1に対応する複数の識
別番号が設定される複数の部分に区分されている場合、
検出手段5は、プロセッサ7により実行されるプログラ
ム1に応じて前記識別番号情報2aから当該識別番号を
読み出して比較を行う。
識別番号情報2aを、上述した請求項5記載のようにし
た場合、上記各手段を以下に示すようにしてもよい。
まず、請求項6記載のように、前記検出手段5を、プロ
セッサ7が実行する命令1aのメモリ上に格納アドレス
によって識別番号情報2aから識別番号を取り出して比
較を行うようにしてもよい。
また、請求項7記載のように、識別番号情報2aに比較
すべき識別番号が設定されている前記識別番号情報の部
分を特定する特定情報を含ませるようにして、検査手段
5が識別番号情報2aのその特定情報により特定される
部分から比較すべき当該識別番号を取り出して比較を行
うようにしてもよい。
さらには、請求項8記載のように識別番号情報2aとし
て複数のプログラム1に対応する複数の識別番号が設定
される複数の部分に区分される第1の情報と比較すべき
識別番号を指定する第2の情報との2種類の情報を用意
し、前記検出手段5を、前記第2の保持手段4に前記第
2の情報が記憶されていたときは、以後のプロセッサ7
の命令1aの実行においては、その第2の情報により指
定されるフィールドに設定された識別番号の比較を行う
ようにしてもよい。この場合、前記第2の情報を、例え
ば前記第1の情報の比較すべき識別番号以外の識別番号
をマスクするマスクデータを含む構成(フォーマット)
としてもよい。
〔作  用〕
本発明によれば、まず記憶手段2に、プロセッサ7が実
行する複数のプログラム1の各命令1aに対応する少な
くとも1つの識別番号を含む識別番号情報2aが格納さ
れる。そして、プロセッサ7がプログラム1の命令1a
を実行する毎に、第2の保持手段4に格納されていたプ
ロセンサ7により前回実行された命令1aに対応する識
別番号情報2aが第1の保持手段3に転送され記憶され
ると共に、プロセッサ7により今回実行される命令1a
に対応する識別番号情報2aが記憶手段2から読み出さ
れ第2の保持手段4に格納される。
続いて、検出手段5が第1の保持手段3に格納されてい
る識別番号情報2aに含まれる当該識別番号と第2の保
持手段4に格納されている識別番号情報2aに含まれて
いる当該識別番号との比較を行い、それらの識別番号の
関係が所定の許容条件を満足しているかを判別すること
により、プロセッサ7による不正な命令1aの実行を検
出する。
この場合、各独立したプログラム1には、個別の固有の
識別番号を割り当てる。そして、複数のプログラム1(
以後、ソフトウェアモジュールと表現する)から呼び出
されるプログラム1(以後、共通サブルーチン)に割り
当てる識別番号とその共通サブルーチンを呼び出すソフ
トウェアモジュールの識別番号との間には、所定の条件
が満足される識別番号を割り当てる。この所定の条件と
しては、上記2つのプログラム1に割り当てられる識別
番号の差分が所定値以下となること、またはそれらの識
別番号間のハミング距離が所定値以下となること等が該
当する。
したがって、上記各所定の条件が満足されるように、共
通サブルーチンとその共通サブルーチンを呼び出すソフ
トウェアモジュール(メインプログラム)とに対して予
め適切な固有の識別番号を割り当てておくことにより、
検査手段5は、各ソフトウェアモジュールや共通サブル
ーチンの各プログラム1単位での暴走(予期しない命令
の実行)等のソフトウェア障害の発生を検出できるのみ
ならず、任意のソフトウェアモジュールが任意の共通サ
ブルーチンを呼び出した場合でもソフトウェア障害を正
しく検出できる。
特に、ハミング距離による検出は、差分を用いた検出よ
りも回路が簡単になると共に、1つの共通サブルーチン
が多数のソフトウェアモジュールから呼び出されたり、
1つのソフトウェアモジュールが多数のソフトウェアモ
ジュールもくしは共通サブルーチンを呼び出す場合等の
ように差分による比較が困難な場合にも、柔軟に対処で
きるという利点を有している。
また、請求項4記載のように、上記2つの識別番号の比
較を禁止する比較禁止識別番号を設け、この比較禁止識
別番号が前記第1の保持手段3に格納されているときに
は、通知手段6が比較結果をプロセッサに通知すること
を禁止するようにすれば、オペレーティングシステムの
ソフトウェアモジュールを管理するソフトウェアが、ア
プリケーションのソフトウェアモジュールを起動する際
に識別番号の比較異常が発生する事態を防止するなど、
識別番号の比較異常が予め予期されている場合等のよう
に、正常な動作が行われたにもかかわらず、比較異常が
発生する場合に、不要なソフトウェア障害の通知が行わ
れることを防止できる。
さらに、ソフトウェアモジュールが共通サブルーチンを
呼び出す場合に最適な識別番号情報2aとして、請求項
5記載のように、識別番号情報2aに複数の識別番号を
含ませる方式(以後、フィールド分割方式と表現する)
が考えられる。この場合、共通サブルーチンの識別番号
とその共通サブルーチンを呼び出すソフトウェアモジュ
ール(以後、メインプログラムと表現する)の識別番号
とを1つの識別番号情報2aに持たせることができるの
で、ソフトウェアモジュールの実行時と共通サブルーチ
ンの実行時とで、識別番号情報2aから取り出す識別番
号を切り換えることにより、各プログラム(ソフトウェ
アモジュール、共通サブルーチン)単位でのソフトウェ
ア障害の発生を正しく検出できると共に、メイン・プロ
グラムが共通サブルーチンを呼び出す場合でも、共通サ
ブルーチン内でのソフトウェア障害の発生を検出できる
尚、このフィールド分割方式の場合、共通サブルーチン
から復帰後のメイン・プログラムの最初の命令1aでの
識別番号の検査には注意が必要である。すなわち、共通
サブルーチンは複数のソフトウェアモジュールから呼び
出されているため、共通サブルーチンの復帰命令に対応
する識別番号情報2aのメイン・プログラムに対応する
識別番号は特定化できない。このため、共通サブルーチ
ンから復帰後のメイン・プログラムの最初の命令1aで
の識別番号の検査においては、共通サブルーチンの識別
番号で行うか、または識別番号の検査を禁止するかのい
ずれかの方法をとらなければならない。
次に、上記フィールド分割方式において、検査手段5に
より比較を行う識別番号の選択は、例えば請求項6記載
のように識別番号の比較を行う命令1aのメモリ上の格
納アドレスによって決定する。
この場合、プロセッサ7が出力するアドレス信号をデコ
ードすることによって当該識別番号を選択するための選
択信号を得るようにしてもよい(方法a)。但し、この
方式の場合、命令1aの格納アドレスによって識別番号
の選択が一意的に決定されるため、共通サブルーチンの
メイン・プログラムへの復帰命令1aに対応する識別番
号情報2aのメイン・プログラムに対応する識別番号と
して前記比較禁止識別番号を設定しておく必要がある。
また、請求項7記載のように、比較すべき識別番号の設
定されている識別番号情報2aの部分(フィールド)を
特定する特定情報を設け、検査手段5が識別番号情報2
aのその特定情報により特定される部分から比較すべき
当該識別番号を取り出して、当該識別番号同士を比較す
るようにしてもよい(方式b)。この方式の場合、命令
1a単位で当該識別番号を特定(指定)できるため、上
記共通サブルーチンから復帰した後のメイン・プログラ
ムの最初の命令1aに対応する識別番号情報で共通サブ
ルーチンに対応する識別番号を特定しておくことにより
、上述した共通サブルーチン復帰時のメイン・プログラ
ムの最初の命令1aの実行においても正しく識別番号の
比較を行うことができ、上記方式aのように識別番号の
比較を禁止する必要はない。
さらに、請求項8記載のように、識別番号情報2aとし
て、前記第1の情報と前記第2の情報の2種類の情報を
設けるようにした場合には(方法c)、ソフトウェアモ
ジュールであるプログラム1の最初の命令1aに対応す
る識別番号情報2aをそのプログラム1に対応する識別
番号のみ比較するよう指定する上記第2の情報とし、2
番目以降の命令1aに対応する識別番号情報2aをその
プログラム1に割当られた識別番号とそのプログラム1
が呼び出す共通サブルーチンに割り当てられた識別番号
が当該部分(当該フィールド)に設定される第1の情報
としておく。また、上記プログラム1が呼び出す共通サ
ブルーチンの最初の命令1aに対応する識別番号情報2
aをその共通サブルーチンを指定する上記第2の情報と
し、2番目以降の命令1aに対応する識別番号情報2a
をその共通サブルーチンに割り当てられた識別番号が当
該部分に設定される第1の情報に、更にその共通サブル
ーチンの最後の命令1aである復帰命令に対応する識別
番号情報2aとして、上記プログラム1に対応する識別
番号のみを比較するよう指定する上記第2の情報を設定
する。
このことにより検査手段5は、プロセッサ7が上記プロ
グラム1の命令1aを実行している間は、そのプログラ
ム1に対応する識別番号同士を比較し、共通サブルーチ
ンの呼び出しが行われるとプロセッサ7の共通サブルー
チンの最初の命令1aの実行時に、共通サブルーチンに
対応する識別番号の比較を行うように切り換え、共通サ
ブルーチンの2番目以降の命令1aでは、その共通サブ
ルーチンに対応する識別番号の比較を行う。そして、共
通サブルーチンの最後の命令1aである復帰命令がプロ
セッサ7により実行される時に、上記プログラム1に対
応する識別番号の比較を行うように切り換え、上記プロ
グラム1の復帰後の命令1a以降の実行においては、プ
ログラム1に対応する識別番号の比較を行う。尚、検査
手段5は、上記第2の情報が第2の保持手段4に設定さ
れた場合には、第1の保持手段3に記憶されている識別
番号情報2aの当該識別番号と第2の保持手段4に記憶
されている識別番号情報2aの当該識別番号との比較は
行わないようにする。
このように識別番号情報2aとして、上記第1の情報と
上記第2の情報の2個の情報を用いるようにした場合、
前記方式すのように全ての識別番号情報2aに比較すべ
き識別番号を特定する特定情報を付加する必要がなくな
るので、1つの識別番号情報2aに含まれる識別番号の
種類が多くなる場合、識別番号情報2aを格納するメモ
リ容量を小さ(できる。
また、上記第2の情報として請求項9記載のように、前
記第1の情報の比較すべき識別番号以外の識別番号をマ
スクするマスクデータを用いるようにすれば(方式d)
、第1の情報と第2の情報との論理積をとることにより
第1の情報の検査手段5が比較すべき識別番号の選択を
上記論理積により同時に行えるので、2つの当該識別番
号を比較する比較回路を少なくできるという利点がある
[実  施  例] 以下、図面を参照しながら本発明の詳細な説明する。
第2図は、本発明の一実施例である計算機100の本発
明の要部に対応する回路のブロンク図である。
同図において、プログラムメモリ101は、ソフトウェ
アであるプログラムの各命令101aを個別のアドレス
に記憶しているメモリであり、例えばROM (リード
・オンリ・メモリ)、RAM(ランダム・アクセス・メ
モリ)等から成る。
また、識別番号メモリ102は、上記プログラムメモリ
101に格納されているプログラムの各命令101aに
1対1に対応じて割り当てられた識別番号情報102a
を、個別のアドレスに上記各命令101aに1対1に対
応じて記憶しているメモリであり、例えばROM (リ
ード・オンリ・メモリ)、RAM(ランダム・アクセス
・メモリ)等から成る。上記識別番号情報102aには
、通常の識別番号情報102a−1と比較禁止識別番号
情報102a−2との2種類があり、後述するように通
常識別番号情報102a−1の場合には、2つの識別番
号情報102aの比較が行われるが、比較禁止識別番号
情報102a−2の場合には、2つの識別番号情報10
2aの比較は無効となる。
次に、プロセッサ103は、上記プログラムメモリ10
1に格納されている命令101aを1ワードづつ読み出
して実行する処理装置である。
さらに、レジスタAは、上記プロセッサが1回前(前回
)に実行した命令101aに対応する識別番号情報10
2aを格納するレジスタである。
また、レジスタBは、プロセッサが現在(今回)実行す
る命令101aに対応する識別番号情報102aを格納
するレジスタである。
比較・比較禁止回路104は、上記レジスタA、レジス
タBに格納されている識別番号情報102a、102a
を比較すると共に、レジスタA、レジスタBに格納され
ている比較禁止識別番号情報102a−2が格納されて
いるか否かを判別する。
そして、その比較禁止識別番号情報102a−2が格納
されていなければ、上記比較結果(正常(一致)、異常
(不一致)を示す比較結果信号aをプロセッサ103に
出力する。この場合、上記比較結果が異常(レジスタA
、Bに格納されている識別番号情報102aが所定の比
較条件に合致しない)であれば、割り込みにより比較結
果が異常である旨の通知を上記比較結果信号aにより行
うが、上記レジスタAまたはレジスタBに比較禁止識別
番号情報102a−2が格納されていれば、比較結果が
異常の場合でもプロセッサ103への割り込みを抑止す
る回路である。
アドレスバス105は、プロセッサ103がプログラム
メモリ101から命令101aを読み出す際、メモリア
ドレスを指定するための信号線であり、プロセッサ10
2が出力するアドレス信号はこのアドレスバス105を
介して識別番号メモリ102へも与えられる。
また、データバス106は、プロセンサ103がプログ
ラムメモリ101から命令101aを読み出すための信
号線である。
さらに、識別番号ハス107は、プロセ、す103が、
アドレスバス105を介して識別番号メモリ102にア
ドレス信号を加えることにより識別番号メモリ102か
ら読み出される識別番号情報102aをレジスタBに転
送するためのハスである。
そして、レジスタハス108は、レジスタBに格納され
ている識別番号情報102aをレジスタAへ転送するた
めのバスである。
次に、前記比較・比較禁止回路104の一実施例を第3
図に示す。
同図において比較回路201は、レジスタAに格納され
ている識別番号情報102aとレジスタBに格納されて
いる識別番号情報102aとを比較し、所定の比較方式
で定める比較条件に合致する場合は[OJ  (Lol
、I)を、合致しない場合には’ I J  (l(i
gh)を出力する回路である。
比較禁止回路202は、上記比較回路201と並行して
レジスタAまたはレジスタBに格納されている識別番号
情報102aが、予め定められた比較禁止識別番号情報
102a−2であるか否か判定し、少なくともどちらか
一方のレジスタに格納されている識別番号情報102a
が上記比較禁止識別番号情報102a−2であれば「0
J(LOのを出力し、それ以外の場合は’ I J  
(High)を出力する。
AND回路203は、上記比較回路201の出力と上記
比較禁止回路202の出力との論理積をとることにより
、上記比較禁止回路202から「OJ  (Low)が
出力された場合(レジスタAまたはレジスタBの少なく
とも一方のレジスタに比較禁止識別番号情報102a−
2が格納されている場合)に、比較回路201から出力
される比較結果の出力を抑止するアンドゲートである。
FF204は、上記AND回路203の出力をラッチし
、そのラッチした信号を比較結果信号aとしてプロセン
サ103に出力するフリップフロップであり、AND回
路203の出力が確定した時点でプロセッサ103に出
力する比較結果信号aを確定する。
制御回路205は、プロセンサ103が命令101aを
読み出すためにプログラムメモリ101をアクセスする
タイミングに応じて、レジスタBの識別番号102aの
ランチ、レジスタBに格納されている識別番号102a
のレジスタAへの格納、比較回路201の動作制御、及
びFF204のラッチタイミングの制御を行う回路であ
る。
次に、上記構成の実施例の動作を第4図の制御フローを
示す図を参照しながら説明する。
■まず、計算機100の立ち上げ時(電源投入時、初期
化時)において、レジスタA、レジスタBには共に比較
禁止識別番号情報102a−2が格納(設定)される。
また、FF204は「0」に初期設定される。
■そして、プロセッサ103がプログラムメモIJ 1
01に格納されているソフトウェア(プログラム)の実
行を開始し、プログラムメモIJ 101に対し最初の
命令102aを読み込むアクセスを行うと、制御回路2
05の制御によりレジスタBの値がレジスタバス108
を介してレジスタAに転送されてランチされると共に(
SL)、プログラムメモリ101に格納されている1番
目の命令101aに対応する識別番号情報102が識別
番号メモリ102から読み出され、識別番号バス107
を介してレジスタBにラッチされる(S2)。
続いて、比較回路201は、レジスタA。
Bに格納されている識別番号情報102a。
102aを比較して、その比較結果(一致の場合は「0
」、不一致の場合は「1」)をANDゲート203に出
力する(33−1)。
また、上記処理と並行して、比較禁止回路202は、レ
ジスタAまたはレジスタBに格納されている識別番号情
報102aの少なくとも一方が比較禁止識別番号情報1
02a−2であるか否かを判別して、その判別結果(少
なくとも一方のレジスタに比較禁止識別番号情報102
a−2が格納されていれば「0」、それ以外は「1」)
を、同じ<AND回路203に出力する(S3−2)。
尚、上記処理53−1と処理33−2とをまとめて、処
理S3と表現する。
続いてAND回路203は、比較回路201と比較禁止
回路202の出力との論理積をとり、その論理積の結果
をFF204に出力する(S4)。
この場合、上述したようにレジスタAには、レジスタB
に初期設定されていた比較禁止識別番号情報102a−
2が格納されているので、比較禁止回路202の出力は
「0」となり、AND回路203からは比較回路201
の出力はFF204に出力されない。
次に、制御回路205は、ANDゲート203の出力を
FF204にラッチさせ、そのFF204にラッチさせ
た信号を比較結果信号aとしてプロセッサ103に出力
させる(S5)。
上述したように、AND回路203に対しては、比較禁
止回路202から「0」が出力されるので、FF204
には「0」がランチされる。
従って、プロセッサ103には「0」 (正常)の比較
結果信号aが出力される。
このように、プロセッサ103が最初の命令101aを
実行するときには、比較回路202の比較結果はプロセ
ンサ103に出力されない。
■次に、プロセンサ103が2番目の命令101aを読
み出すために、プログラムメモリ101をアクセスする
と、上記処理SL、S2によりレジスタAにレジスタB
に格納されている1番目の命令101aに対応する識別
番号102aがラッチされると共に、識別番号メモリ1
02から上記2番目の命令101aに対応する識別番号
102aが読み出され、レジスタBにラッチされる。そ
して、上記処理S3において、比較回路201がレジス
タA、Hにそれぞれ格納されている1番目の命令101
aに対応する識別番号102aと2番目の命令101a
に対応する識別番号102aとの比較を行い、その比較
結果をANDゲート203に出力する。また、これと並
列して、比較禁止回路202は、レジスタAもしくはレ
ジスタBに比較禁止識別番号情報102a−2が格納さ
れているか否かを判別し、1番目の命令101aと2番
目の命令101aに対応する識別番号情報102aが共
に比較禁止識別番号情報102a−2でなければ、「1
」をAND回路203に出力する。
続いて上記処理S4.S5が行われ、レジスタA及びレ
ジスタBに格納されている識別番号情報102aが共に
比較禁止識別番号情報102a−2でなければ、ADN
ゲート203を介してFF204にラッチされる比較回
路201の比較結果が比較結果信号aとしてプロセッサ
103に出力される。
上記処理S1〜S5は、プロセッサ103が次に実行す
る命令101aをデータバス106を介して読み出すた
めに、プログラムメモリ101をアクセスする毎に繰り
返し行われる。
そして、比較回路201の比較結果が異常(「1」 :
連続する2つの命令101aの識別番号情報102aが
所定の比較条件に合致しない)であれば、割り込み等に
より比較結果が異常である旨を示す「1」の比較結果信
号aがプロセッサ103に出力される。そして、プロセ
ッサ103は、上記異常の比較結果信号aを入力すると
、ソフトウェア障害、すなわち予期したソフトウェアモ
ジュール以外のソフトウェアモジュールの実行が開始さ
れたものと判断し、次の命令101aの実行を中止する
一方、比較回路201の比較結果が正常(レジスタAと
レジスタBに格納されている識別番号情報102aが所
定の比較条件に合致する)であり、比較結果が正常であ
る旨を示す「0」の比較結果信号aを入力した場合には
、プロセッサ103は、続いて次の命令101aを読み
出すために、プログラムメモリ101を再びアクセスす
る。
以上のようにして、プロセッサ103がプログラムメモ
リ101に格納されている命令101aを順次実行する
ためにプログラムメモリ101をアクセスする毎に、前
回実行した命令101aに対応する識別番号情報102
aと今回実行する命令101aに対応する識別番号情報
102aとが、所定の比較条件に合致しているか否かの
検出が行われ、合致していない場合には割り込み等によ
り直ちにプロセッサ103に比較結果の異常、すなわち
予期しないソフトウェアモジュールの実行が開始された
旨が通知される。
したがって、複数のソフトウェアモジュールの各命令1
01a及び複数の共通サブルーチンの各命令101aに
固有の識別番号情報102aを割り当て(割り付け)で
おくことにより、任意の共通サブルーチンを呼び出した
とき、上記任意のソフトウェアモジュールの識別番号情
報102aと、上記任意のソフトウェアモジュールが呼
び出した共通サブルーチンの識別番号情報102aとが
比較されるので、各ソフトウェアモジュール及び各共通
サブルーチンに適宜な識別番号情報102aを割り当て
(割り付け)でおくことにより、共通サブルーチンを使
用するシステムにおいても、ソフトウェア障害による暴
走が発生し予期されざるソフトウェアが実行されても、
上記2つの識別番号情報102aが所定の比較条件に合
致しているか否かを検査することによりその暴走を検出
して、その暴走の実行を未然に防止することができる。
上記比較禁止番号情報102a−2は、例えば全てのビ
ットが「0」であるような番号とすることができる。こ
の場合、前記比較禁止回路202は、レジスタAに格納
されている識別番号情報102aの各ビットとレジスタ
Bに格納されている識別番号情報102aの各ビットの
全ての組み合わせに対し論理積をとる回路によって実現
できる。
または、比較禁止識別番号情報102aを記憶するレジ
スタを設け、予め比較禁止識別番号情報102a−2を
このレジスタに設定しておき、このレジスタの内容とレ
ジスタA及びレジスタBに格納されている識別番号情報
102aとを比較する回路によっても実現できる。
また、上記比較禁止識別番号情報102a−2は、オペ
レーティングシステムなどソフトウェアモジュールを管
理するソフトウェアが、ソフトウェアモジュール(プロ
セスもしくはタスク)を起動する際に識別番号情報10
2aの比較異常が発生するのを抑止したりする場合など
、正常なソフトウェアモジュールが実行されるにもかか
わらず識別番号の比較異常が発生することが予め予期さ
れている場合等に用いる。尚、上記のような場合、オペ
レーティングシステムの識別番号情報102aと上記オ
ペレーティングシステムに起動されるソフトウェアモジ
ュールの識別番号情報102aとを適当に選択し上記2
つの識別番号情報102aが、前記所定の条件に合致さ
せるようにして、比較禁止識別番号情報102a−2を
用いないようにすることも可能である。
続いて、比較禁止識別番号情報102a−2が全てのビ
ットが「0」である番号情報であると仮定して、比較回
路201の構成の複数の例を説明する。
Φ11七−LLL較 この方式は、前回の命令101aに対応する識別番号情
報102aの値N1と現在(今回)の識別番号情報10
2aの値N2との差分の絶対値D=lN1−N2+を求
め、その所定値りが予め定められた絶対値DC以下であ
れば「0」 (正常)を、より大きければ「l」 (異
常)を出力する。
尚、上記所定値りは、必ずしも差分の絶対値とする必要
はなく差分そのものの値であってもよい。
この方式の一具体例を説明すると、例えば共通サブルー
チンの識別番号情報102aが、「10」(10進表示
、以下同様)であり、上記絶対値DCを「3」に設定し
た場合、上記共通サブルーチンの呼び出しは、識別番号
情報102aが「7」。
r8」、  r9」、  ’IOJ、  rll」、 
 rl:)+、  rl3.+であるソフトウェアモジ
ュールからのみ許可される。そして、上記のような識別
番号情報102a以外の識別番号情報102aをもつソ
フトウェアモジュールから上記共通サブルーチンを呼び
出した場合には、そのソフトウェアモジュールの最初の
命令101aを読み出した時点で異常が検出される。
2ハミング距 による ゞ この方式は、比較する2個の識別番号情報102a(前
回の命令101aに対応する識別番号情報102aと今
回の命令101aに対応する識別番号102a)のハミ
ング距離Hを算出し、このハミング距離Hが予め定めら
れた所定値HC以下であるときは「0」 (正常)を、
大きいときは「1」 (異常)を出力する方式である。
上記ハミング距離Hは、上記2個の識別番号情報102
aを2進表示して各対応するビット同士を比較したとき
の異なっているビットの数である。
−具体例を取り上げて説明すると、例えば共通サブルー
チンの識別番号情報102aがrloIJ「2進表示)
、上記値HCが「1」であるときには、上記共通サブル
ーチンの呼び出しは、識別番号情報102aが rloo J 、  rill  」、  ’001 
 Jであるソフトウェアモジュールからのみ許可され、
それ以外のソフトウェアモジュールからの呼び出しは異
常となる。
このハミング距離Hによる方式は、上述した差分を用い
た方式に較べ、回路構成が簡単(単純)になるという利
点がある。
第5図は、このハミング距離Hによる比較を行う比較回
路の一例を示す図である。
同図において黒丸で示すのは2人力EXOR(Excl
usive OR:イクスクルーシブOR)回路301
.302,303であり、白丸で示すのは2人力A、 
N D回路311.312.313である。
尚、この例は識別番号情報102aが3ピントで構成さ
れ、上記所定値HCが’IJに設定されている場合に通
用した例である。
レジスタA、Bは3ビツト構成となっており、EXOR
301,EXOR302、及びEXOR303は、それ
ぞれレジスタAの第1ビツトA。
とレジスタBの第1ビツトB1、レジスタAの第2ビツ
トA2とレジスタBの第2ピントBz、及びレジスタA
の第2ピントA3とレジスタBの第3ビツトB3との排
他的論理和をとる回路であり、EXOR301とEXO
R3020:)出力がAND回路311に、EXOR3
02とEXOR303の出力がAND回路312に、そ
してEXOR30IとEXOR303の出力がAND回
路313に入力している。
そして、AND回路311,312,313の出力が3
人力OR回路401に入力し、この3人力OR回路40
1により上記AND回路311゜312.313の出力
の論理和がとられ、その論理和の結果が比較結果として
出力される。
すなわち、レジスタAとレジスタBにおいてハミング距
離Hが「2」以上の場合には、EXOR301、EXO
R302及びEXOR303の内、少なくとも2つ以上
のEXORの出力が「1」となる。この結果、AND回
路311、AND回路312及びAND回路313の内
、少なくとも1つのAND回路が「1」となる。したが
って、3入力OR回路401による論理和はrl、とな
り、比較結果として「l」 (異常)が出力される。
また、逆にハミング距離Hが「1」以下でれば、EXO
R301,EXOR302及びEXOR303の内、そ
の出力が「1」となるEXORは1個以下である。した
がって、2人力AND回路311.312,313の出
力はいずれもrQ、となり、その結果として3入力回路
401から出力される比較結果は「0」 (正常)とな
る。
0をフィールド   る この方式は、識別番号情報102aをいくつかの部分(
以下、フィールドと表現する)に分割し、その分割した
フィールドにソフトウェアモジュールや共通サブルーチ
ン等に予め割り当てられた識別番号を格納することによ
り、異なる複数のソフトウェアモジュールが同一の共通
サブルーチンを実行しても予期しない命令の実行を検出
可能とするものである。
ここでは、識別番号情報102aが第6図に示すように
フィールドF1、フィールドF2の2つのフィールドか
ら構成される例を取り上げて説明する。
上記フィールドF、にはソフトウェアモジュールの識別
番号を格納し、フィールドF2には上記ソフトウェアモ
ジュールが使用する共通サブルーチンの識別番号を格納
しておく。そして、ソフトウェアモジュールが実行され
るときはフィールドF1のみ比較検査し、共通サブルー
チンに実行が移行したときは、フィールドF2のみを比
較検査するようにする。このことにより、異なる複数の
ソフトウェアモジュールが同一の共通サブルーチンを実
行する場合でも、予期しない命令の実行を検出すること
ができる。
例えば、ソフトウェアモジュールAのモジュール識別番
号がMA、ソフトウェアモジュールBの識別番号がMB
であり、それらのソフトウェアモジュールが識別番号S
1の同一共通サブルーチンを呼び出すとすれば、 (C)  フィールドF2の識別番号が格納されている
となる。
ところで、この方式の場合、共通サブルーチンの呼び出
し命令(CALL)の近傍の命令の検査では注意が必要
である。これは共通サブルーチンが複数のソフトウェア
モジュールから呼び出されるため、メイン・プログラム
の復帰命令(RET)に対応するフィールドF1の識別
番号を特定化することができないためである。
このことについて、第7図を参照しながら説明する。
同図に示すように、ソフトウェアモジュールAがrCA
LL  XJのステートメントで共通サブルーチンXを
呼び出し、共通サブルーチンXの実行に移行した場合に
は、それまでのフィールドF1の検査からフィールドF
2の検査に切り換わる。
この場合には、CALL命令に対応する識別番号として
フィールドFlにソフトウェアモジュールの識別番号を
フィールドF2の識別番号に共通サブルーチンの識別番
号を設定することにより、正しい識別番号の検査を行う
ことができる。共通サブルーチンの呼び出し側では、フ
ィールドF2の識別番号をその呼び出す共通サブルーチ
ンの識別番号に特定化できるからである。
また、共通サブルーチンXのRET命令によってメイン
・プログラムであるソフトウェアモジュールAの命令C
に復帰したときには、上記RET命令に対応するフィー
ルドF1に上記メイン・プログラムの識別番号が設定さ
れていないので(換言すれば上述したように特定できな
いために設定できないので)、共通サブルーチンから復
帰後のメイン・プログラムの最初の命令Cにおける識別
番号の検査はフィールドF2に設定された識別番号によ
り行う必要がある(この場合、命令Cに対応するフィー
ルドF2には共通サブルーチンの識別番号を設定してお
く)。または識別番号の検査を禁止するようにしてもよ
い。そして、識別番号の検査を禁止する場合には、前述
した比較禁止識別番号情報102a−2を用いる方式を
とればよい。
[フィールド比較回路方式] 上述した識別番号情報102aを、ソフトウェアモジュ
ールの識別番号を特定するフィールドと共通サブルーチ
ンの識別番号を特定するフィールドの2つのフィールド
に分割して、ソフトウェアモジュールまたは共通サブル
ーチンの実行に応じて、当該フィールドを比較検査する
方式の一例であり、ソフトウェアモジュールの命令10
1aを格納するメモリ空間と共通サブルーチンの命令1
01aを格納するメモリ空間とを予め分割しておき、プ
ロセッサがどちらのメモリ空間をアクセスしているかを
アドレスデコーダを用いて検査し、アドレスデコーダか
ら出力される検出信号を用いて比較するフィールドを選
択する方式。
第8図は、上記フィールド比較回路方式に適用される比
較・比較禁止回路104の一構成例を示す図である。
同図において、前述した第2図及び第3図に示されてい
るブロックと同一のブロックには同一番号を付与し、詳
しい説明は省略する。
アドレスデコーダ301は、アドレスバス105に接続
されており、プロセンサ103から出力されるアドレス
信号をデコードし、特に図示していない主記憶装置の予
め定められた領域マツプ(メモリマツプ)に基づいて、
フィールド選択信号FSEL (一般に複数の信号)を
生成し、フィールド比較回路301に出力する。
例えば、上記主記憶装置がソフトウェアモジュールの格
納領域と共通サブルーチンの格納領域とを有しており、
それぞれの格納領域が主記憶装置の0番地から999番
地(ソフトウェアモジュール格納領域)、1000番地
から1999番地(共通サブルーチン格納領域)にマン
プされている場合には、上記アドレスデコーダ301の
出力は以下のようになる。
フィールド比較回路310は、アドレスデコーダ302
から入力するフィールド選択信号PSELに基づいて、
レジスタA及びレジスタBから識別番号情報102aの
フィールドF1またはフィールドF2のいずれかのフィ
ールドを選択して比較する回路である。
第9図に上記フィールド比較回路310の一構成例を示
す。
同図において、フィールドF1比較回路311は、レジ
スタAとレジスタBに格納されている双方ノフィールド
F、の識別番号を比較して、その比較結果を出力する回
路である。
また、フィールドF2比較回路312は、レジスタAと
レジスタBに格納されている双方のフィールドF2の識
別番号を比較して、その比較結果を出力する回路である
そして、比較結果選択回路(マルチプレクサ)313は
、上記フィールドF1比較回路312と上記フィールド
比較回路313から出力される2つの比較結果を人力し
、前記アドレスデコーダ30Iから加わるフィールド選
択信号FSELにより指示されるフィールドの比較結果
をAND回路203に選択出力するマルチプレクサであ
る。
尚、上記比較回路310は、フィールドの数が2個の場
合に対応した例であるが、この回路は予め定義されてい
るフィールドの数に等しい複数の比較回路を設けること
により、容易に任意のフィールド数に対応できる。すな
わち、共通サブルーチンがさらに他の共通サブルーチン
を呼び出し、さらにその共通サブルーチンが別の共通サ
ブルーチンを呼び出すというように、プログラムが複数
の階層構造になっている場合にも、前記識別番号情報1
02aに上記階層構造の階層数に対応するフィールド数
を設け、更にその各フィールドに1対1に対応する比較
回路を設けることにより対応できる。ところで、この方
式では、プログラムの存在するメモリアドレスによって
一意的にフィールド選択が決定されるため、共通サブル
ーチンがら復帰した最初の命令(例えば、第7図に示す
命令C)では、フィールドF+が選択される。したがっ
て、共通サブルーチンの復帰命令(RET)に対応する
フィールドF1の識別番号としては比較禁止識別番号情
報102a−2を設定しておく必要がある。このことに
より、誤った識別番号の検査を防止できる。
(B) 第10図に示すように、前記フィールドF1F2に加え
、さらに識別番号情報102aの先頭にフィールド選択
フィールドF、を設け、このフィールド選択フィールド
Fsの内容をフィールド選択信号FSELとして用いる
この場合、フィールド選択フィールドF、は、「1」の
ときにフィールドF、を、「2」のときにフィールドF
2を検査するように予め決定されている。
第11図にこの方式を用いた比較・比較禁止回路400
の一構成例を示す。
同図に示すように、比較・比較禁止回路400は第9図
に示す比較・比較禁止回路104からアドレスデコーダ
301を取り除いた構成となっている。そして、フィー
ルド比較回路310には現在の命令101aに対応する
識別番号情報102aを保持するレジスタ已に格納され
ているフィールド選択フィールドF、、の内容がフィー
ルド選択信号FSELとして加わるようになっており、
フィールド比較回路310は前述した第9図に示す比較
回路310と同様にして現在の命令101aに対応する
フィールド(FlまたはF2)についての比較結果を出
力する。
この方式では、命令101a単位にフィールド選択を指
定できるため、共通サブルーチンから復帰した最初の命
令(例えば第7図に示す命令C)に対応するフィールド
識別番号102aのフィールド選択フィールドFsにフ
ィールドF2を選択するフィールド選択信号FSELを
設定し、かつそのフィールドF2に上記共通サブルーチ
ンの識別番号を設定しておくことにより、前述した共通
サブルーチン復帰時の問題を回避できる。
(C) フィールドに対応じて分割された識別番号とフィールド
の選択を指定するフィールド選択情報とを切り換えて指
定できる識別番号情報501を用いる方式。
第12図(a)に上記識別番号情報501の形式(フォ
ーマット)の−例を示す。
同図に示すように識別番号情報501は先頭の1ビツト
の選択指定ビット501−1とその選択指定ピッ)50
1−1に続く所定ビットの情報501−2(以後、指定
情報501−2と表現する)とから成っている。
選択指定ピッ)501−1は、上記指定情報501−2
が前記フィールドF+ と前記フィールドF2とから成
っているか、または前記フィールドF1 もしくは前記
フィールドF2のいずれのフィールドに設定された識別
番号を選択するかを指定するフィールド選択情報となっ
ているかを示すビットである。
そして、前記指定情報501−2は、同図(b)に示す
ように選択指定ビット5011が「0」のときはフィー
ルドF1及びフィールドF2からなっており、また「1
」のときは同図(C)に示すように上記フィールド選択
情報となっている。
第13図に、上記識別番号情報501を用いた比較回路
600を示す。
同図において、設定選択回路601は前記識別番号メモ
リ102(第2図参照)から読み出された上記識別番号
情報501の選択指定ビット501−1を入力し、その
選択指定ビット5011が「0」のときは、識別番号パ
ス107上に出力されているフィールドF、とフィール
ドF2の識別番号から成る指定情報501−2をレジス
タBに設定し、「1」のときは識別番号ハス107上に
出力されているフィールド選択情報に等しい指定情報5
01−2をフィールド選択レジスタ602に設定する。
また、このようにフィールド選択レジスタ602にフィ
ールド選択情報を設定するときには、比較結果がAND
回路203を介してFF204に出力されないなように
する必要があるが、これは設定選択回路601がフィー
ルド選択レジスタ602にフィールド選択情報を設定す
るためにフィールド選択レジスタ602に加える設定信
号を比較禁止回路202にも出力することにより実現で
きる(第8図参照)。
すなわち、比較禁止回路202が、上記設定信号が加わ
ったときAND回路203に対し「0」を出力すること
により、フィールド選択レジスタ602にフィールド選
択情報が設定される際に、比較回路311または比較回
路312の比較結果がFF204に出力されるのを禁止
できる。そして、フィールド選択レジスタ602に格納
されているフィールド選択情報は、フィールド選択信号
FSELとして前記比較選択回路(マルチプレクサ)3
13に出力される。
上記構成のフィールド比較回路600を有する比較・比
較禁止回路104を用いる場合には、まずソフトウェア
モジュールの最初の命令101aに対応する識別番号1
02aには、第12図(C)に示す形式のフィールドF
1のみを比較する旨を指示するフィールド選択情報が指
定情報501−2となっている識別番号情報501を用
いる。また2番目以降の命令101aに対応する識別番
号102aには、第12図に示す形式のフィールドFに
本ソフトウェアモジュールの識別番号が、フィールドF
2に上記ソフトウェアモジュールが呼び出す共通サブル
ーチンの識別番号が設定された識別番号情報501を用
いる。
一方、共通サブルーチンの最初の命令101aに対応す
る識別番号102aには、第12図(C)に示す形式の
フィールドF2のみを比較する旨を指示するフィールド
選択情報が指定情報501−2となっている識別番号情
報501を用い、2番目以降の命令101aに対応する
識別番号情報501には、フィールドF2にこの共通サ
ブルーチンの識別番号が設定された識別番号情報501
を用いる。そして、上記共通サブルーチンの最後の命令
(RET)に対応する識別番号として、第12図(C)
に示すフィールドF1のみ比較するようなフィールド選
択情報が指定情報501−2となっている識別番号情報
501を用いる。
そして、ソフトウェアモジュールの実行中は、そのソフ
トウェアモジュールの最初の命令101aに対応する識
別番号情報501のフィールド選択情報の指示によりフ
ィールドF1に設定された識別番号のみを比較し、上記
ソフトウェアモジュールが共通サブルーチンの呼び出し
を行うと、その共通サブルーチンの最初の命令101a
の読み出しアクセス時にフィールドF2に設定された識
別番号の比較を指示するフィールド選択情報を存する識
別番号情報501の読み出しを行い、共通サブルーチン
の実行中においてはフィールドF2に設定された識別番
号のみを比較する。
そして、共通サブルーチンの最後の命令101a (R
ET)の読み出しアクセス時に、フィールドF+に設定
された識別番号の比較を指示するフィールド選択情報を
有する識別番号情報501の読み出しを行い、上記ソフ
トウェアモジュールに復帰する。このことにより、ソフ
トウェアモジュールに復帰後は、フィールドF1に設定
された識別番号の比較を行う。尚、上述したように、フ
ィールド選択情報を有する識別番号情報501を読み出
したときは、比較禁止回路202によりAND回路20
3がフィールドF1またはフィールドF2に設定された
識別番号の比較結果を出力することが禁止される。
この方式(C)は、前述した方式(B)と比較した場合
、フィールド選択情報を各識別番号情報102a毎に設
ける必要がないので、識別番号情報102aを格納する
メモリの容量を小さくできるという利点がある。この利
点はフィールド数が多い場合に特に顕著となる。
(D) フィールドに対応じて分割された識別番号とその識別番
号をマスクするための比較マスク情報とを切り換えて指
定できる識別番号情報701を用いる方式。
第14図(a)に上記識別番号情報701の形式(フォ
ーマット)の−例を示す。
同図(a)に示すように、識別番号情報701は先頭の
1ビツトの選択指定ビット701−1とその選択指定ビ
ット701−1に続く所定ビットの情報701−2(以
後、選択情報701−2と表現する)から成っている。
選択指定ピント701−1は、上記選択情報701−2
が前記フィールドF1及び前記フィールドF2とからな
るかまたは後述する比較回路804が比較する識別番号
を生成するための比較マスク情報のいずれかであるかを
示すビットである。
上記選択情報701−2は同図0))に示すように上記
選択指定ピッ)701−1がrQ、のときはフィールド
F+及びフィールドF2とから成っており、「1」のと
きは同図(C)に示すように上記比較マスク情報となっ
ている。
第15図に上記識別番号情報701を用いた比較回路8
00を示す。
同図において設定選択回路801は前記識別番号メモリ
102(第2図参照)から読み出された上記識別番号情
報701の選択指定ビット7011を入力し、その選択
指定ピノl−701−1が「0」のときは、 識別番号バス107上に出力されているフィールドF1
及びフィールドF2の識別番号をレジスタBに設定する
。一方、上記選択指定ビット701−1が「1」のとき
は、上記識別番号バス107上の比較マスク情報をマス
クレジスタMRに設定する。
また、レジスタA、レジスタBに格納されているフィー
ルドF1及びフィールドF2の識別番号は、それぞれマ
スク回路802、及びマスク回路803によりマスクレ
ジスタ702に格納されている比較マスク情報と論理積
がとられ、各々のマスク回路802,803の論理積の
結果が比較回路704に出力される。そして比較回路7
04は上記入力される2つの論理積の結果同士を比較し
、その比較結果をAND回路203へ出力する。
尚、マスクレジスタMRに上記比較マスク情報を設定す
る際、比較回路804の比較結果がAND回路203を
介してFF204に出力されないようにする必要がある
が、これは設定選択回路801がマスクレジスタMRに
上記マスク情報を設定するために、マスクレジスタMR
に加える設定信号を比較禁止回路202に出力すること
により実現できる(第8図参照)。すなわち、比較禁止
回路202が上記設定信号が加わったとき、AND回路
203に対し「0」を出力することにより、マスクレジ
スタMRに比較マスク情報が設定される際に、比較回路
804の比較結果の出力がAND回路203を介してF
F204に出力されるのを禁止することができる。
上記構成の比較回路800を用いる場合、ソフトウェア
モジュールの最初の命令101aに対応する識別番号1
02aには、第14図(C)に示す形式のフィールドF
1に設定された識別番号のみを比較するようにする比較
マスク情報を有する識別番号情報701を用いる。そし
て、上記ソフトウェアモジュールの2番目以降の命令1
01aに対応する識別番号102aには、第14図(b
)に示す形式のフィールドF1にこのソフトウェアモジ
ュールの識別番号が、フィールドF2にこのソフトウェ
アモジュールが呼び出す共通サブルーチンの識別番号が
設定された識別番号情報701を用いる。
尚、フィールドF2に共通サブルーチンの識別番号を設
定するのは、その共通サブルーチンを呼び出す命令10
1 a (CALL)に対応する識別番号情報701の
みであってもよい。
また、上記共通サブルーチンの最初の命令101aに対
応する識別番号102aには第14図(C)に示す形式
のフィールドF1に設定された識別番号のみを比較する
ようにする比較マスク情報を有する識別番号情報701
を用い、この共通サブルーチンの2番目以降の命令10
1aに対応する識別番号102aには、第14図(b)
に示す形式のフィールドF2にこの共通サブルーチンの
識別番号が設定された識別番号情報701を用いる。そ
して、この共通サブルーチンの最後の命令101aに対
応する識別番号102aには、フィールドF1に設定さ
れた識別番号のみを比較するようにする比較マスク情報
を有する識別番号情報701を用いる。
そして、更にソフトウェアモジュールの上記共通サブル
ーチンの復帰後の命令101a以降の命令101aに対
応する識別番号102aには、再び第14図ら)に示す
形式のフィールドF+にソフトウェアモジュールの識別
番号が設定された識別番号情報701を用いる。
そして、ソフトウェアモジュールが実行中には、フィー
ルドF1に設定された識別番号のみを比較し、ソフトウ
ェアモジュールが共通サブルーチンの呼び出しを行うと
、その共通サブルーチンの最初の命令101aの読み出
しアクセス時に、設定選択回路801によりフィールド
F2に設定された識別番号の比較を行うための比較マス
ク情報をマスクレジスタMRに設定し、共通サブルーチ
ンの2番目以降の命令101aの実行においてはフイー
ルドF2に設定された識別番号のみで比較を行う。そし
て、共通サブルーチンの最後の命令101aの実行時に
、設定選択回路801によりその最後の命令101aに
対応する識別番号102aを読み出して、その識別番号
102aからフィールドF+に設定された識別番号のみ
で比較を行うようにする比較マスク情報をマスクレジス
タMRに設定して、上記共通サブルーチンを呼び出した
ソフトウェアモジュールに復帰する。そして、上記復帰
後、ソフトウェアモジュールの命令101aが行われる
毎に、フィールドF、に設定された識別番号の比較が行
われる。
この方式は、上記方式(A) 、 (B) 、 (C)
と比較した場合、識別番号情報102a (701)の
検査すべきフィールドを、命令101a単位で指定でき
る利点があり、比較回路も1個ですむという利点がある
尚、以上説明した実施例は、いずれもプロセッサ103
の外付は回路となっているが、プロセッサ103の内部
回路に同様の機能を設けるようにしてもよい。また、上
記識別番号をプロセッサ103の命令101aの中に組
み込むことも可能である。
また、フィールドの数も2個に限定されることなく、そ
の数はシステムにおける最大のプログラムの階層構成数
に対応じて設定すればよい。
〔発明の効果] 以上説明したように本発明によれば、共通サブルーチン
を使用するソフトウェアシステムにおいて、ソフトウェ
ア障害の結果暴走が発生し、予期しないソフトウェアモ
ジュールが実行されても、前回実行された命令に対応す
る識別番号と現在実行される命令に対応する識別番号と
が所定の許容条件を満足するか否かを判別することによ
り、ソフトウェアモジュール内に特殊の命令を埋め込む
もしくは共通サブルーチンを使用(実行)する毎に識別
番号の変更を行うという煩雑な作業、またはウォッチド
ッグタイマ、カウンタ、メモリプロテクト等の他の手段
を別個に設けなくても上記暴走を確実に検出することが
可能となる。
また、上記許容条件としては、例えば2つの当該識別番
号間の差分もしくはハミング距離が、予め定められた所
定値以下となっているかを検査する方法等を用いること
ができ、ハミング距離を用いる方法の場合は、上記差分
を用いる方法よりも回路構成が簡単になるという利点が
ある。
さらに、請求項4記載のように比較禁止識別番号を設け
、前回の命令に対応する識別番号情報がその比較禁止識
別番号であった場合にはプロセッサに対する上記識別番
号の比較結果をプロセッサに通知することを禁止するよ
うにすれば、常動作が行われるにもかかわらず比較異常
が発生することが予期されている場合の不用な比較結果
通知を未然に禁止することが可能となる。
さらに、請求項5記載のように1つの識別番号情報を複
数の部分(フィールド)に分割し、その分割された複数
のフィールドの中に複数の識別番号を設定するようにし
て、プロセッサが実行しているソフトウェアモジュール
に対応する当該識別番号を上記識別番号情報の当該フィ
ールドから取り出して識別番号の比較を行う方法によっ
ても、共通サブルーチンを使用するソフトウェアシステ
ムでのソフトウェア障害を正しく検出できる。
この方式を用いた場合の識別番号情報から当該識別番号
を取り出す方法としては、例えばプロセッサが実行する
命令のメモリ上の格納アドレスに基づいて行う方法(方
法I)、請求項7記載のように識別番号情報の一部にそ
の識別番号情報に設定されている複数の識別番号の中か
ら比較すべき識別番号を特定する特定情報を設け、その
特定情報に基づいて識別番号情報の中から随時比較すべ
き識別番号を取り出す方法(方法■)、または請求項8
記載のように識別番号情報として、比較すべき識別番号
を特定する特定情報を別に設け、対応する識別番号情報
がその特定情報である命令をプロセッサが実行する毎に
以後に比較すべき識別番号を指定する方法(方法■)等
がある。
そして、上記方法■の場合には、上記方法Iを用いたと
きに処理が複雑となる共通サブルーチンから復帰後のメ
イン・プログラムの最初の命令実行時の識別番号の比較
を容易に行うことが可能となる。また、上記方法■の場
合には、識別番号情報に設定される識別番号の数が多く
なる場合に、前記方法■よりも識別番号情報の格納メモ
リ容量を小さくすることができるという利点がある。
さらに、上記特定情報を、例えばマスクデータを含む構
成とすれば命令単位で識別番号を特定でき、さらに識別
番号を比較する回路を少なくすることができるという利
点がある。
【図面の簡単な説明】
第1図は本発明の原理ブロック図、 第2図は一実施例のシステム構成を示すブロック図、 第3図は比較・比較禁止回路の一構成例を示すブロック
図、 第4図は実施例の全体動作を説明する図、第5図はハミ
ング距離による比較を行う回路を示す図、 第6図は識別番号情報の一構成例を示す図、第7図はフ
ィールド分割方式における識別番号比較の注意点を説明
する回、 第8図はフィールド分割方式における比較・比較禁止回
路の一構成例を示すブロック図、第9図はフィールド分
割方式における比較回路の一構成例を示すブロック図、 第10図はフィールド分割方式における識別番号情報の
第1の構成例を示す図、 第11図は第10図に示す識別番号情報を用いる比較・
比較禁止回路の一構成例を示すプロ、り図、 第12図(a)〜(C)はフィールド分割方式における
識別番号情報の第2の構成例を示す図、第13図は第1
2図(b)、 (C)に示す識別番号情報を用いる比較
・比較禁止回路の一構成例を示す図、第14図(a)〜
(C)はフィールド分割方式における識別番号情報の第
3の構成例を示す図、第15図は第14図(b)、 (
C)に示す識別番号情報を用いる比較・比較禁止回路の
一構成例を示す図記憶手段、 ・識別番号情報、 第1の保持手段、 第2の保持手段、 検出手段、 通知手段。 特許 出 願 人 冨士通株式会社 しシスタA レンズタB (L叡ン・I番号bパ3已ットで゛オ菰A′されHCか
°1の401 ハミノク゛y巨両IIl:よ酎し較りゴ)同Y各を示寸
図WJ 5 図 (α) 識′別奉づ (bl フィールド選オ尺ヤ汽専艮 cl

Claims (1)

  1. 【特許請求の範囲】 1)複数のプログラム(1)の各命令(1a)に対応し
    て設定された少なくとも1つの識別番号を含む識別番号
    情報(2a)を記憶する記憶手段(2)と、 プロセッサ(7)により前回実行された命令(1a)に
    対応する前記識別番号情報(2a)を一時記憶する第1
    の保持手段(3)と、 プロセッサ(7)により今回実行される命令(1a)に
    対応する前記識別番号情報(2a)を一時記憶する第2
    の保持手段(4)と、 プロセッサ(7)により前記命令(1a)が実行される
    毎に、前記第1の保持手段(3)に記憶されている識別
    番号情報(2a)に含まれる当該識別番号と前記第2の
    保持手段(3)に記憶されている識別番号情報(2a)
    に含まれる当該識別番号とを比較して、それらの識別番
    号の関係が所定の許容条件を満足しているか否かを判別
    することによりプロセッサ(7)による不正な命令(1
    a)の実行を検出する検出手段(5)と、 該検出手段(5)の検出結果をプロセッサ(7)に通知
    する通知手段(6)と、 を具備することを特徴とするソフトウェア障害検出方式
    。 2)前記識別番号(2a)は、前記2つの識別番号の比
    較を禁止する比較禁止識別番号を含んでおり、 前記通知手段(6)は、この比較禁止識別番号が前記第
    1の保持手段(3)に記憶されているときは前記検出手
    段(5)の傑出結果を前記プロセッサ(7)に通知しな
    いことを特徴とする請求項1記載のソフトウェア障害検
    出方式。 3)前記識別番号情報(2a)は、複数のプログラム(
    1)に対応する複数の識別番号が設定される複数の部分
    に区分されており、 前記検出手段(5)は、プロセッサ(7)により実行さ
    れるプログラム(1)に応じて前記識別番号情報(2a
    )から当該識別番号を読み出して比較を行うことを特徴
    とする請求項1記載のソフトウェア障害検出方式。 4)前記検出手段(5)は、プロセッサ(7)が実行す
    る命令(1a)のメモリ上の格納アドレスによって、識
    別番号情報(2a)から当該識別番号を取り出して比較
    を行うことを特徴とする請求項5記載のソフトウェア障
    害検出方式。 5)前記識別番号情報(2a)は、比較すべき識別番号
    が設定されている前記識別番号情報の部分を特定する特
    定情報を含んでおり、 前記検出手段(5)は、前記識別番号情報(2a)のそ
    の特定情報により特定される部分から比較すべき当該識
    別番号を取り出して比較を行うことを特徴とする請求項
    5記載のソフトウェア障害検出方式。 6)前記識別番号情報(2a)は、複数のプログラム(
    1)に対応する複数の識別番号が設定される複数の部分
    に区分される第1の情報と、比較すべき識別番号を指定
    する第2の情報との2種類の情報から成り、 前記検出手段(5)は、前記第2の保持手段(4)に前
    記第2の情報が記憶されていたときは、以後のプロセッ
    サ(7)の命令(1a)の実行においては、その第2の
    情報により指定されるフィールドに設定された識別番号
    の比較を行うことを特徴とする請求項5記載のソフトウ
    ェア障害検出方式。
JP2228426A 1990-08-31 1990-08-31 ソフトウェア障害検出方式 Pending JPH04111138A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2228426A JPH04111138A (ja) 1990-08-31 1990-08-31 ソフトウェア障害検出方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2228426A JPH04111138A (ja) 1990-08-31 1990-08-31 ソフトウェア障害検出方式

Publications (1)

Publication Number Publication Date
JPH04111138A true JPH04111138A (ja) 1992-04-13

Family

ID=16876298

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2228426A Pending JPH04111138A (ja) 1990-08-31 1990-08-31 ソフトウェア障害検出方式

Country Status (1)

Country Link
JP (1) JPH04111138A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010097844A1 (ja) * 2009-02-25 2010-09-02 パナソニック株式会社 暴走検出装置
DE102013000856A1 (de) 2012-01-25 2013-07-25 Fanuc Corp. Motorsteuervorrichtung, die einen Drehmomentbefehl in Abhängigkeit vom Eingangsstrom oder der Eingangsleistung begrenzt
US11543451B2 (en) 2019-02-26 2023-01-03 Seiko Epson Corporation Real-time clock module, electronic device and vehicle

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010097844A1 (ja) * 2009-02-25 2010-09-02 パナソニック株式会社 暴走検出装置
DE102013000856A1 (de) 2012-01-25 2013-07-25 Fanuc Corp. Motorsteuervorrichtung, die einen Drehmomentbefehl in Abhängigkeit vom Eingangsstrom oder der Eingangsleistung begrenzt
US11543451B2 (en) 2019-02-26 2023-01-03 Seiko Epson Corporation Real-time clock module, electronic device and vehicle

Similar Documents

Publication Publication Date Title
CA1153474A (en) Hardware memory write lock circuit
US5355471A (en) Multiprocessor cache coherency tester that exercises the coherency logic exhaustively and also detects errors in a processor using an automatic CPU sort
EP0505706B1 (en) Alternate processor continuation of the task of a failed processor
US5657475A (en) System for protecting memory accesses by comparing the upper and lower bounds addresses and attribute bits identifying unauthorized combinations of type of operation and mode of access
CN101176069B (zh) 用于操作计算机系统的方法
Namjoo et al. Watchdog processors and capability checking
EP2037368A2 (en) Simulation of program execution to detect problem such as deadlock
JPH10283274A (ja) メモリをテストするための方法および装置
US6779132B2 (en) Preserving dump capability after a fault-on-fault or related type failure in a fault tolerant computer system
US6981079B2 (en) Critical datapath error handling in a multiprocessor architecture
US7363544B2 (en) Program debug method and apparatus
JP2010515149A (ja) 安全システムの再構成
JP2010515149A5 (ja)
US11625316B2 (en) Checksum generation
JP4893427B2 (ja) マイクロコンピュータシステム
US6052801A (en) Method and apparatus for providing breakpoints on a selectable address range
KR100828755B1 (ko) 시스템을 부팅하기 위해 프로세서들 및 관련 펌웨어의양호한 그룹을 결정하는 시스템 및 방법
US6697959B2 (en) Fault handling in a data processing system utilizing a fault vector pointer table
JPH04111138A (ja) ソフトウェア障害検出方式
Yiu Design of SOC for high reliability systems with embedded processors
US5280606A (en) Fault recovery processing for supercomputer
US6687845B2 (en) Fault vector pointer table
US7139954B1 (en) Method and apparatus for testing a computing device with memory using test program code
JPS5939052B2 (ja) 情報処理装置及び方法
JP4114004B2 (ja) 半導体集積回路