JPH036618A - スタックポインタの異常検出回路 - Google Patents

スタックポインタの異常検出回路

Info

Publication number
JPH036618A
JPH036618A JP1140709A JP14070989A JPH036618A JP H036618 A JPH036618 A JP H036618A JP 1140709 A JP1140709 A JP 1140709A JP 14070989 A JP14070989 A JP 14070989A JP H036618 A JPH036618 A JP H036618A
Authority
JP
Japan
Prior art keywords
value
stack
stack pointer
program module
abnormality
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
JP1140709A
Other languages
English (en)
Inventor
Fumihiko Anzai
文彦 安西
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.)
Fuji Electric Co Ltd
Fuji Facom Corp
Original Assignee
Fuji Electric Co Ltd
Fuji Facom Corp
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 Fuji Electric Co Ltd, Fuji Facom Corp filed Critical Fuji Electric Co Ltd
Priority to JP1140709A priority Critical patent/JPH036618A/ja
Publication of JPH036618A publication Critical patent/JPH036618A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Executing Machine-Instructions (AREA)

Abstract

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

Description

【発明の詳細な説明】 (産業上の利用分野) 本発明は、演算結果データ及び各種パラメータ等のデー
タの記憶手段としてスタック方式を採用してなる演算制
御装置を備えたコンピュータやコントローラ等における
、スタックポインタの異常検出回路に関する。
(従来の技術) 計算機を利用・制御するための命令体系として、スタッ
ク(LIFOメモリ: LAST IN FIR5T 
OUTMEMORY)方式がある。この方式では、デー
タ転送、加減算の命令のオペランドとしてスタックをレ
ジスタ等の代りに用いている。このスタック方式により
以下の(1)式の演算を行なう場合のスタック操作の一
例を、第3図に示す。
A+(B+C)  ・・・(1) 以下、このスタック操作を第3図に沿って説明する。
■スタックポインタ値(以下、必要に応じてSPという
)の指すスタックメモリ7のアドレスに。
オペランドパへ′″を書き込む(第3図(a))。
■spに1′″を加える(同図(b))。
■■と同様にしてオペランドLL B IIを書き込む
(同図(C))。
■spに′t I IIを加える(同図(d))。
■■と同様にしてオペランド“C”を書き込む(同図(
e))。
■現在のSPの指すアドレスの内容(=”C”)と前回
の5P(SP−”1”)の指すアドレスの内容(=uB
n)とを読み出して算術論理演算部(以下、ALUとい
う)8により演算を行ない、その演算結果を(S P−
”1 ”)の指すアドレスに書き込む(同図(f))。
■SPからL(I IIを減じる(同図(g))。
■■と同様にしてA+(B+C)を演算する(同図(h
))。
■spからII I IIを減じる(同図(i))。
以上の操作により、SPの指すスタックメモリ7のアド
レスに演算結果“A+(B+C)”が保持されることに
なる。
さて、制御演算装置が持つメモリのうちスタックとして
使用できる領域(以下、スタックメモリ領域という)は
限られているので、スタックポインタ値SPの上下限値
(限界値)を設定する必要がある。このため従来では、
スタックポインタ値SPの上限値をスタックメモリ領域
の上限に設定し、下限値をスタックメモリ領域の下限に
設定していた。そして、上限値または下限値を超えた時
をスタックポインタ値SPの異常とみなし、もってスタ
ックポインタ7の異常を検出していた。
第4図は、従来におけるスタックポインタ値SPの異常
検出回路を採用した回路の一例を示すものである。同図
において、前記同様に7はデータのスタックメモリ、8
はALUであり、また、1はスタックメモリ7のアドレ
スを示すポインタとしてのスタックポインタ、2′はス
タックポインタ値SPを監視する異常検出回路である。
なお、この例において、スタックポインタ1はアップダ
ウンカウンタにより構成されていると共に、異常検出回
路2′により監視するスタックポインタ値SPはスタッ
クメモリ7のアドレスを指している。
そして前述の如く、演算のオペラン下であるデータはス
タックメモリ7に書き込まれ、演算を行なう時にはスタ
ックメモリ7からデータを読み出してALU8に入力し
、ALU8の出力である2寅算結果がスタックメモリ7
に再び書き込まれる。
第5図は上記異常検出回路2′の詳細を示すものであり
、同図において、21はスタックポインタ値SPの上限
値が設定された上限値レジスタ、22は同じくSPの下
限値が設定された下限値レジスタ、23はSPと前記上
限値とを比較する上限比較器、24はSPと前記下限値
とを比較する下限比較器、25は上下限エラー合成OR
ゲートである。
この異常検出回路2′において、スタックポインタ値S
Pが上限値レジスタ21の値より大きくなった場合は、
上限比較器23により上限エラーとして検出され、OR
ゲート25を介してスタックポインタ値SPひいてはス
タックポインタ1の異常検出信号が出力される。また、
スタックポインタ値SPが下限値レジスタ22の値より
小さくなった場合は、下限比較器24により下限エラー
として検出され、ORゲート25を介してスタックポイ
ンタ1の異常検出信号が出力されるものである。
(発明が解決しようとする課題) 上述のように、従来においてはスタックポインタ値SP
が限界値を超えた時をスタックポインタ1の異常として
検出していた。このような検出方式を採る場合、ハード
ウェアの故障やソフトウェアのバグ、ノイズ等何らかの
原因により、あるプログラムモジュール内でスタックポ
インタ値SPに異常が生じたときでもこのSPが限界値
に達するまではプログラムは実行され続ける。
例えば、ある一つのプログラムモジュール内でスタック
ポインタ値SPが本来の値よりもll 1 ++多くな
ったとしても、この時点でSPが限界値に達していなけ
れば異常を検出することはできず、プログラムは実行さ
れ続ける。そして、何回もこのプログラムモジュールを
実行し、SPが1ずつ増えていって他のプログラムモジ
ュールも含めスタツクのブツシュ動作によりSPが上限
値に達したとき、初めて異常が検出されることになる。
また、ノイズのように一過性の異常でSPが一回だけ本
来の値よりも“1″多くなってしまったような場合、こ
のときにはSPが限界値に達することはないので異常を
検出することができない。
以上のように、SPに異常が発生したにも拘らず限界値
に達しないために検出不能であってプログラムが実行さ
れ続けている間のデータは、正常と言うことができない
。特に、誤動作が重大な障害につながる可能性のあるプ
ログラマブルコントローラ等においては、上記データに
基づいて誤った制御が行なわれる危険性が大きく、SP
の異常発生時からこの異常を検出するまでの時間を短縮
し、迅速かつ確実にシステムを停止できることが要請さ
れている。
また、信頼性(reliability) 、可用性(
availability)、保守性(service
ability)等、いわゆるRAS機能の点からは、
限界値に達した時点で実行していたプログラムモジュー
ルのRAS情報のみが記憶されているので、SPに異常
が発生した時点で実行していたプログラムモジュールの
RAS情報が得られないために故障解析も困難であった
本発明は上記問題点を解決するために提案されたもので
、その目的とするところは、プログラムモジュール実行
中におけるスタックポインタ値の限界値超過による異常
を検出することはもとより、プログラムモジュール実行
終了時におけるスタックポインタ値の異常を監視してハ
ードウェアの故障やソフトウェアのバグ、ノイズ等に起
因するスタックポインタの異常をも検出可能とし、プロ
グラムモジュール単位で異常検出が行なえるようにした
スタックポインタの異常検出回路を提供することにある
(課題を解決するための手段) 上記目的を達成するため、本発明は、スタック方式を採
用した演算制御装置において、一つのプログラムモジュ
ール内のスタックポインタ値は、プログラムモジュール
実行開始時のスタックポインタ値を下回ることがなく、
また、プログラムモジュール実行終了時のスタックポイ
ンタ値は実行開始時の値と等しいと共に、これらの点は
、一つのプログラムモジュール実行中に他のプログラム
モジュールを実行する場合(以下、ネスティングという
)、更には、このネスティングが階層的に複数である場
合にも同様であることに着目してなされたものである。
すなわち本発明は、あるプログラムモジュールを実行中
のスタックポインタ値の異常によりスタックポインタの
異常を検出する異常検出回路において、スタックポイン
タ値をそのプログラムモジュール内で使用するスタック
メモリ領域の上下限値と比較してスタックポインタ値が
上限値または下限値を超えたときに第1の異常検出信号
を出力する手段と、一つのプログラムモジュールの実行
開始時におけるスタックポインタ値を限界値として記憶
する手段と、前記プログラムモジュールの実行終了時に
おけるスタックポインタ値と前記限界値とを比較してこ
れら両者が不一致である場合に第2の異常検出信号を出
力する手段とを備えたものである。
(作用) 本発明によれば、あるプログラムモジュール実行開始時
に記憶したスタックポインタ値をSP。
とした場合、このプログラムモジュール実行中はスタッ
クポインタ値がSPoを下回るか、または上限値を上回
った時点で第1の異常検出信号によりスタックポインタ
の異常が検出される。また、あるプログラムモジュール
実行終了時においてはスタックポインタ値がSPoと等
しくない場合に、スタックポインタに異常が発生したこ
とが第2の異常検出信号によって検出される。
従って、プログラムモジュール単位でスタックポインタ
の異常を検出することができ、モジュール単位のRAS
情報を得ることができる。
(実施例) 以下、図に沿って本発明の一実施例を説明する。
第1図は、この実施例にかかる異常検出回路2をスタッ
クポインタ1と共に示したものである。
なお、図示されていないが、スタックポインタ1からの
スタックポインタ値SPは第4図に示したようにスタッ
クメモリにも送られている。
第1図において、異常検出回路2は、スタックポインタ
値SPの上限値が設定された上限値レジスタ21と、前
記SPと前記上限値とを比較する上限比較器23と、S
Pの下限値としての後述するポインタスタック26の先
頭値FVとSPとを比較する下限比較器24と、上限比
較器23及び下限比較器24の出力の論理和をとる上下
限エラー合成ORゲート25と、プログラムモジュール
の実行開始時におけるスタックポインタ値が記憶される
ポインタスタック26と、このポインタスタック26の
先頭値FVとプログラムモジュールの実行終了時におけ
るSPとを比較して両者が一致しているか否かを検出す
る終了スタック比較器27とから構成されている。
以下、この実施例の動作を説明する。
まず、あるプログラムモジュールの実行開始時は、スタ
ックポインタ1からのSPをポインタ・スタック26に
スタックすることにより、このイ直が当該プログラムモ
ジュールで使用されるSPの下限値としてのポインタス
タック先頭値FVとなる。
そして、プログラムモジュールの実行中に、SPが上限
値レジスタ21の値より大きくなった場合は上限比較器
23により上限エラーとして検出され、ORゲート25
を介して第1の異常検出信号が出力される。また、SP
がポインタスタック先頭値FVより小さくなった場合は
、下限比較器24により下限エラーとして検出され、同
じ<ORゲート25を介して第1の異常検出信号が出力
される。従ってこれらの動作により、第5図と同様にス
タックポインタ値SPが限界値に達した場合のスタック
ポインタ1の異常検出が可能になる。
次に、プログラムモジュールの実行終了時におけるSP
はその実行開始時のSPと等しいはずであるから、実行
終了時のSPがポインタスタック先頭値FVと等しくな
い場合は、終了スタック比較器27によってこれが検出
され、この比較器27から第2の異常検出信号が検出さ
れる。なお、実行終了時のSPがポインタスタック先頭
値FVと等しい正常時には、ポインタスタック26はポ
ツプされる。
以上の動作は、あるプログラムモジュールの実行中に他
のプログラムモジュールを実行するネスティング時、更
には、このネスティングが階層的に複数である場合にも
同様であり、この場合には、各プログラムモジュール実
行開始時のSPが下限値としてポインタスタック26に
ブツシュされる。
第2図は、ネスティングが行なわれる場合であって正常
動作時における一連の動作を示すものである。この例で
は、プログラム実行開始時のデータのスタックメモリ領
域の下限値をrr On、上限値を”100”としてお
り、モジュール1にモジュール2が、モジュール2にモ
ジュール3がそれぞれネスティングしている。
まず、モジュール1の実行中は、スタックポインタ値S
Pが“O〜100”にあるか否かが監視される。このと
き1図示するようにポインタスタック26には先頭値F
Vとしてsp=”o”がスタックされている。そして、
モジュール1で2回ブツシュしてSP=“2”の時にモ
ジュール2がネスティングされると、sp=“2″が先
頭値FVとしてポインタスタック26にスタックされ、
この値が下限値として利用される。すなわち、モジュー
ル2においてはSPが2〜t o o ”の間にあるか
否かが監視される。同様に、モジュール2で2回ブツシ
ュしてSP=”4″′の時にモジュール3がネスティン
グされると、SP=“4”が先頭値FVとしてポインタ
スタック26にスタックされ、モジュール3においては
SPが1′4〜100”の間にあるか否かが監視される
そして、モジュール3の実行が終了すると、終了時にお
ける5P(=“4”)とポインタスタック先頭値FV(
=”4”)とが終了スタック比較器27により比較され
1両者が等しいかどうか監視される。
仮りにこれらが等しくない場合には、終了スタック比較
器27からの第2の異常検出信号により、モジュール3
内においてスタックポインタ1に異常が発生したことを
検出することができる。また。
両者が等しい場合には、ポインタスタック26はボツブ
され、ポインタスタック先頭値FVがIf 2 Ifに
なる。
同様にモジュール2の実行が終了すると、5P(=”2
”)とポインタスタック先頭値FV(=”2”)とが比
較され、ポインタスタック26はポツプされる。
なお、この例では、スタックポインタ値SPの上限値を
データのスタックメモリ領域の終わりに設定しであるた
め、ネスティング時においては上限値を固定して下限値
のみを更新している。しかし、プログラムモジュールの
ネスティング毎に上限値を設定し直したい場合もある。
この場合には、上限値を変化させる手段、例えば、下限
値とスタック使用可能数との加算をALUで行ない、そ
の結果を上限値に設定する手段と、ネスティング毎に上
限値をスタックする手段とを備えることにより可能であ
る。
また5本実施例ではスタックポインタ1がクリア及びア
ップダウンのみのカウンタであるため、スタックメモリ
領域はネスティングに関係なく連続して使用することに
なるが、ネスティング毎にスタックポインタ1に新しい
値を設定することにより、ブロック単位でスタックメモ
リ領域を非連続的に使用することも可能である。この場
合にも本発明にかかる異常検出回路によってスタックポ
インタの異常を検出することができる。
(発明の効果) 以上述べたように本発明によれば、プログラムモジュー
ル実行中のポツプ方向に異常が発生した場合にはスタッ
クポインタ値の下限値超過時に、ブツシュ方向に異常が
発生した場合には上限値超過時に出力される第1の異常
検出信号によって直ちにスタックポインタの異常を検出
することができる。また、限界値に達していなくとも一
つのプログラムモジュールにおけるブツシュ、ポツプ回
数が一致しない場合には、そのプログラムモジュール実
行終了時にスタックポインタ値とポインタスタック先頭
値とを比較することによって異常検出が可能である。
以上によりプログラマブルコントローラ等においては、
データのスタックポインタ値の異常発生時に誤った制御
が行なわれる異常動作時間を短縮することができ、確実
かつ迅速にシステムを停止することができる。また、プ
ログラムモジュール単位でのRAS情報が得られるので
故障解析が容易になり、特にプログラムデパック時のプ
ログラムの不良モジュールの特定と、その不良の度合い
(スタックのずれの数や異常なスタック操作ループの有
無)が判明し、ボード試験においても不良プログラムモ
ジュールの処理の判断により使用ハードウェアを検索し
、ハードウェアの故障部を特定するための有力な手助け
になる等の効果がある。
【図面の簡単な説明】
第1図は本発明の一実施例を示す構成図、第2図はネス
ティング時におけるこの実施例の動作説明図、第3図(
a)〜(i)はスタック方式による演算時におけるスタ
ックポインタの動作説明図、第4図は従来の異常検出回
路とスタックポインタとの接続構成図、第5図は従来の
異常検出回路の構成図である。 1・・・スタックポインタ 21・・・上限値レジスタ 24・・・下限比較器 25・・・上下限エラー合成ORゲート26・・・ポイ
ンタスタック 27・・・終了スタック比較器 SP・・・スタックポインタ値 FV・・・ポインタスタック先頭値 2・・異常検出回路 23・・・上限比較器

Claims (1)

  1. 【特許請求の範囲】 あるプログラムモジュールを実行中のスタックポインタ
    値の異常によりスタックポインタの異常を検出する異常
    検出回路において、 スタックポインタ値をそのプログラムモジュール内で使
    用するスタックメモリ領域の上下限値と比較してスタッ
    クポインタ値が上限値または下限値を超えたときに第1
    の異常検出信号を出力する手段と、 一つのプログラムモジュールの実行開始時におけるスタ
    ックポインタ値を限界値として記憶する手段と、 前記プログラムモジュールの実行終了時におけるスタッ
    クポインタ値と前記限界値とを比較してこれら両者が不
    一致である場合に第2の異常検出信号を出力する手段と
    を備えたことを特徴とするスタックポインタの異常検出
    回路。
JP1140709A 1989-06-02 1989-06-02 スタックポインタの異常検出回路 Pending JPH036618A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP1140709A JPH036618A (ja) 1989-06-02 1989-06-02 スタックポインタの異常検出回路

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP1140709A JPH036618A (ja) 1989-06-02 1989-06-02 スタックポインタの異常検出回路

Publications (1)

Publication Number Publication Date
JPH036618A true JPH036618A (ja) 1991-01-14

Family

ID=15274899

Family Applications (1)

Application Number Title Priority Date Filing Date
JP1140709A Pending JPH036618A (ja) 1989-06-02 1989-06-02 スタックポインタの異常検出回路

Country Status (1)

Country Link
JP (1) JPH036618A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09146793A (ja) * 1995-11-17 1997-06-06 Nec Corp プログラム評価の方法および装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5873099A (ja) * 1981-10-23 1983-05-02 Canon Inc デ−タ処理装置
JPS61272841A (ja) * 1985-05-28 1986-12-03 Sony Tektronix Corp アドレス検出回路
JPS63136144A (ja) * 1986-11-27 1988-06-08 Oki Electric Ind Co Ltd コンピユ−タの暴走検出方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5873099A (ja) * 1981-10-23 1983-05-02 Canon Inc デ−タ処理装置
JPS61272841A (ja) * 1985-05-28 1986-12-03 Sony Tektronix Corp アドレス検出回路
JPS63136144A (ja) * 1986-11-27 1988-06-08 Oki Electric Ind Co Ltd コンピユ−タの暴走検出方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09146793A (ja) * 1995-11-17 1997-06-06 Nec Corp プログラム評価の方法および装置

Similar Documents

Publication Publication Date Title
JPH02294739A (ja) 障害検出方式
JPH036618A (ja) スタックポインタの異常検出回路
JPH1115661A (ja) Cpuの自己診断方法
JP6588068B2 (ja) マイクロコンピュータ
JPS59111551A (ja) 動作記録装置
JPS62175834A (ja) 中央処理装置の暴走検出回路
JPH01310422A (ja) マイクロコンピュータのリセット回路
JPH01233532A (ja) マルチプロセッサシステムにおけるトレース制御方式
JPH01162300A (ja) Romチェック回路試験方式
JPS60195649A (ja) マイクロプログラム制御型デ−タ処理装置におけるエラ−報告方式
JPH0341528A (ja) 計算機における診断装置
JPH0314148A (ja) プログラム破壊検出装置
JPS6146535A (ja) 擬似エラ−設定制御方式
JPH03157738A (ja) サービスプロセッサにおけるエラー情報収集方式
JPS62127944A (ja) 情報処理装置
JPH07121233A (ja) マイクロコンピュータシステムの診断方式
JPH08123734A (ja) データ格納領域のデータの破壊発生チェック方法及びプログラムの暴走チェック方法、並びにデータ格納領域のデータの破壊発生原因探究方法及びプログラムの暴走原因探究方法
JPH05297901A (ja) プロセス制御装置
JPH0667921A (ja) 障害処理機能を有する情報処理装置
JPS59206944A (ja) マイクロプログラム監視装置
JPS5896353A (ja) 情報処理装置の誤動作検出装置
JPS63228339A (ja) 命令処理装置の試験方式
JPS60100230A (ja) 実時間主記憶部検査装置
JPS63193235A (ja) 条件コ−ド検査方法
JPH02148333A (ja) マルチプロセッサシステムの異常診断方式