JPS61148538A - 演算処理装置 - Google Patents

演算処理装置

Info

Publication number
JPS61148538A
JPS61148538A JP59271044A JP27104484A JPS61148538A JP S61148538 A JPS61148538 A JP S61148538A JP 59271044 A JP59271044 A JP 59271044A JP 27104484 A JP27104484 A JP 27104484A JP S61148538 A JPS61148538 A JP S61148538A
Authority
JP
Japan
Prior art keywords
memory
stack
area
address
stack pointer
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
JP59271044A
Other languages
English (en)
Inventor
Noboru Tamura
昇 田村
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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP59271044A priority Critical patent/JPS61148538A/ja
Publication of JPS61148538A publication Critical patent/JPS61148538A/ja
Pending legal-status Critical Current

Links

Abstract

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

Description

【発明の詳細な説明】 [技術分野] 本発明は自由にデータを読み書き可能なメモリ領域内に
スタックメモリ領域を設定し、スタックポインタにより
、該スタックメモリ領域をアクセスする手段を備えた演
算処理装置に関するものである。
[従来技術] 一般のランダムアクセスメモリ(RAM) 内にスタッ
クメモリ領域を設定し、スタックポインタによりスタッ
クメモリ領域を指定するスタック機能を有する演算処理
装置が小型機の分野にも多く登場してきている。これら
の装置においては、スタックメモリへの書込み命令であ
るPUSH命令を行なうことによりスタックポインタを
1つデクリメントし、読出し命令であるPoP命令を行
なうことによりスタックポインタを1つインクリメント
し、RAM内のこのスタックポインタで指示するアドレ
スにデータを読み/書きしていた。
通常スタック領域はタスクチェンジや各種バートイニア
からの割込み処理に大量に消費されるため、かなり大量
にその領域を確保し、その領域がオーバーフローを起こ
さないよう予め十分に配慮する必要があった0通常スタ
ック領域はRAMのアドレスの最後の(最もアドレス値
の大きな)領域に設定されることが多く、この場合には
スタックポインタの初期値とし゛てRAMの最大(lj
t高)位のアドレス値がセットされる。そしてPUSH
命令の実行毎に順次デクリメントされていくことになる
1、このためPUSH命令が多用されるとスタックポイ
ンタの値は順次デクリメントされ、予め設定したスタッ
ク領域を超えてRAMの一般使用の領域にまでスタック
領域が拡大してしまい、この領域に制御プログラムが格
納されている場合など、この制御プログラムが破壊され
てしまうことがあり、プログラムの暴走や、誤動作を誘
発することがあった。
このため、この様な事態を避けるため、スタック機能を
必要以上に大量に確保しなければならないという欠点が
あった。
[目的] 本発明は上述の従来技術の欠点を除去することを目的と
し、スタックポインタによるメモリ内のスタックメモリ
領域外のアクセスによる他のメモリ領域の破壊を防止す
ると共に、適切な対処を行なうことができる演算処理装
置を提供する所にある。
[″A施例] 以下本発明の一実施例を図面に従って説明する。
第1図は本発明の一実施例である演算処理装置の機能ブ
ロック図であり、図中1は汎用レジスタ、2はスタック
ポインタ、3は全体の制御を司る制御回路、5は命令語
の記憶位置を記憶するプログラムカウンタ、6は命令レ
ジスタ、7は命令レジスタ6の命令の解析を行なう命令
デコーダ、8はメモリアドレスレジスタ、9はメモリデ
ータレジスタ、13はメモリ制御回路、14はvk述す
る第2図に示す制御手順等が記憶されていると共に、演
算処理装置での処理において発生するデータを一時記憶
するメモリ、16は割込制御回路であり、メモリ制御回
路13中には本実施例のメモリの実際にアクセス可能な
物理アドレス領域を設定したメモリ実装アドレス設定部
13aがあり、アクセス可能な物理アドレス領域外のア
クセス指示のあった時にはエラー信号12を出力する。
またメモリ14中にはスタックポインタ2で指定される
スタック領域14aが設けられている。ここでlOは内
部バス、11は制御回路3よりの制御信号、12はメモ
リ制御回路13内のメモリ実装アドレス設定部13より
のメモリアクセスエラー信号を示す。
本実施例のスタックポインタ2はスタック領域14aへ
の書込み(格納)命令であるPUSH命令を1口実行毎
に1つインクリメントするべく制御回路3より制御信号
11によりインクリメント信号が出力され、スタック領
域14aよりの読出し命令であるPoP命令を1口実行
する時に1つデクリメントするよう制御回路3より制御
信号11よりデクリメント信号が出力される。
次に以上の如く構成された本実施例のスタック領域アク
セス動作を第2図に示すフローチャートを参照して説明
する。
ここではメモリ14のプログラム領域の°°L′′番地
にスタックポインタ2に“”S1000”をストアする
命令である“LD  S1O00,SP”が’L+n”
番地にPUSH命令である°’PUSHRG”が格納さ
れているものとする。
メモリ14内に格納されたプログラムに従い各種処理を
実行する場合に、まずSlでプログラムカウンタ5の値
をメモリアドレスレジスタ8にセットし、しかる後、S
2に示す様に制御回路3によって自動的にプログラムカ
ウンタ5はインクリメントされる。そして制御回路3は
同時に83でメモリ制御回路13に対してメモリ読出し
起動信号を出力する。読出し起動を受けたメモリ制御回
路13はS4でメモリ14のメモリアドレスレジスタ8
で指示されるアドレスよりデータを読出し、メモリデー
タレジスタ9にセットする。制御回路3は2の値を同時
に命令レジスタ6にセットし、続<35でこの読出しデ
ータの解析を行なう、命令解析の結果スタック操作命令
でない時にはS6より57に進み、スタックポインタ操
作命令か否かも調べる。スタックポインタ2の操作命令
でない場合にはS9で解析された命令に従った処理を実
行し、処理終了後S1に戻る。ここで再びメモリ14よ
り次のデータを読出す必要のある場合には51〜S3の
処理を実行し、メモリデータレジスタ9にセットされた
データを処理データとする。
S7でスタックポインタ操作命令であった場合にはS8
に進み、命令に従いスタックポインタの操作を実行する
。ここで例えばメモリ14の°°L′”番地の命令の実
行である場合には命令は“LD  S1000.SP”
でありスタックポインタ2に“L + 1 ”番地に格
納されている°゛#1o o o ”を格納する命令で
あるため、メモリ14より読み出され、メモリデータレ
ジスタ9にセットされている“S1000”をスタック
ポインタ2に格納する。このデータの授受は内部バス1
0を介して行なわれる。
一方命令の解析の結果、スタック操作命令の場合にはS
6より310に進み、PUSH命令か否かを調べる。こ
こでPUSH命令でなくPOP命令である場合にはS1
0よりSllに進み、スタックポインタ2を1つデクリ
メントし、512でスタックポインタ2の値を内部バス
lOを介してメモリアドレスレジスタ8にセットする。
そして続くS13でメモリ制御回路13はメモリ14中
のスタック領域14aのメモリアドレスレジスタ8で指
示されたアドレス即ちスタックポインタ2で指示された
アドレスよりデータを読出し、メモリデータレジスタ9
にセットする。そしてメモリデータレジスタ9にセット
されたデータは内部バスを介して汎用レジスタ1にセッ
トされることになる。そしてその後、Slに戻り、次の
命令の実行を行なう。
SIOでPUSH命令である場合には510よりS15
に進み、スタックポインタ2の値をメモリアドレスレジ
スタ8にセットし、汎用レジスタ1の値をメモリデータ
レジスタ9にセットする。
そして続<S16でスタックポインタ2を1つインクリ
メントし、517で命令デコーダ7の指示で制御回路3
はメモリ制御回路13にメモリアドレスレジスタ8のア
ドレス位置にメモリデータレジスタ9のデータを書き込
むことを指示する。メモリ制御回路13はメモリアドレ
スレジスタ8で指示されたアドレスデータが、実際にメ
モリ14に実装されている直接アクセス可能な物理アド
レス空間内のアドレスか否かを、メモリ実装アドレス設
定部13aで監視している。このメモリ実装アドレス設
定部13aは公知の方法でメモリ14の実装物理アドレ
スを把握又は予め設定されており、指定されたアドレス
がこの実装物理アドレスに含まれているか否かを監視す
るこの機能は一般にバスエラー(メモリアクセスエラー
)検出回路と呼ばれている0本実施例においてはメモリ
14を“O”番地より順次連続して割当てており、メモ
リ実装アドレス設定部13aはメモリ14の最大実装ア
ドレス(F)のみを保持し、アドレス指定値が、この最
大実装アドレス値以上か否かを監視している。
31gでアドレス値が物理アドレス空間の場合にはS1
9でメモリ14指定されたアドレス即ちスタックポイン
タ2で指定されたスタック領域14aにメモリデータレ
ジスタ9の値を書き込み。
PUSH命令に対する処理を終了し、Slに戻り1次の
命令に対する処理を行なう。
S18でアドレス値が物理アドレス空間にない時、例え
ばメモリ14には“0″番地より“#1OFF”番地ま
での記憶容量があり、スタック領域14aを°”# l
 O00°°番地より“$$1OFF”ffi地までと
するとき、スタックポインタ2の指示するアドレスを介
してスタック領域14aに順次PUSH命令によりデー
タが格納され、スタックポインタの値が#1100″と
なってしまい、かつその時にPUSH命令が実行された
時にはメモリアドレスレジスタ8よりのアドレス値は“
’#1100”となり、物理アドレス空間をオーバージ
てしまう、この時にはS18より520に進み、メモリ
制御回路13中のメモリ実装アドレス設定部13aの設
定値(stoFF)をオーバーしたためメモリ制御回路
13は制御回路3に対してエラー(メモリアクセスエラ
ー)信号12を出力する。これを受けた制御回路3では
メモリ制御回路13よりエラーステータスを受は取り、
エラー要因を判別する。この場合にはメモリアクセスエ
ラーであるため、続くS22で割込制御回路16にメモ
リアクセスエラーの割込発生要求を出力し、これを受け
た割込制御回路16は323でプログラムカウンタ5の
値を予めメモリアクセスエラー発生時に設定すべく指定
された値に変更する。
そしてSlと同様に新たに523で指定された値をプロ
グラムカウンタ5はメモリ゛アドレスレジスタ8にセッ
トし、このプログラムカウンタ5で指定されたアドレス
より格納されている割込処理プログラムに従い、エラー
処理を実行する。ここではスタック領域の設定変更等を
行なう。
以上説明したように、PUSH命令でスタックポインタ
2をインクリメントし、POP命令でデクリメントし、
従来より存するバスエラー検出回路等を利用する事によ
り、特別のスタック領域のオーバーフローチェックをす
る必要がなく、プログラム領域を破壊する事もなく、簡
単な構成でオーバーフローに適切に対応したプログラム
が容易に作成できる事になる。
[効果] 以上説明した様に本発明によれば、スタックポインタに
より指示されるメモリ内のスタック領域を超えて他のメ
モリ領域をスタック領域として書き換えてしまうことも
なくなり、スタック領域を必要以上に設定することもな
く効率よくメモリを使用することができると共に、指定
したスタック領域以上にスタックメモリ容量が必要にな
った場合においても自動的に適切な処理を行なえるよう
自動的にプログラム割込みを行なう演算処理装置が提供
できる。
【図面の簡単な説明】
第1図は本発明に係る一実施例のブロック図、 第2図は本実施例の動作フローチャートである。

Claims (2)

    【特許請求の範囲】
  1. (1)演算制御過程で自由にデータを読み書き可能なメ
    モリ領域内にスタックメモリ領域を設定し、スタックポ
    インタにより該スタックメモリ領域をアクセスする手段
    を備えた演算処理装置であつて、前記スタックポインタ
    による前記メモリ領域のアクセスがメモリ領域の物理ア
    ドレス空間領域内か否かを判別する判別手段と、該判別
    手段による判別が物理アドレス領域外アクセスであると
    きに前記スタックポインタ指定領域へのアクセスを中止
    し、現在実行中のプログラム処理より特定処理プログラ
    ムの処理を行なうべくプログラム割込を発生させる割込
    発生手段とを備えたことを特徴とする演算処理装置。
  2. (2)スタックポインタはスタックメモリ領域へのデー
    タの書込み時にインクリメントされ、スタックメモリ領
    域よりのデータの読出し時にデクリメントされることを
    特徴とする特許請求の範囲第1項記載の演算処理装置。
JP59271044A 1984-12-24 1984-12-24 演算処理装置 Pending JPS61148538A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP59271044A JPS61148538A (ja) 1984-12-24 1984-12-24 演算処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP59271044A JPS61148538A (ja) 1984-12-24 1984-12-24 演算処理装置

Publications (1)

Publication Number Publication Date
JPS61148538A true JPS61148538A (ja) 1986-07-07

Family

ID=17494617

Family Applications (1)

Application Number Title Priority Date Filing Date
JP59271044A Pending JPS61148538A (ja) 1984-12-24 1984-12-24 演算処理装置

Country Status (1)

Country Link
JP (1) JPS61148538A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH086821A (ja) * 1994-06-20 1996-01-12 Nec Corp マイクロプロセッサ

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH086821A (ja) * 1994-06-20 1996-01-12 Nec Corp マイクロプロセッサ

Similar Documents

Publication Publication Date Title
JPH02235156A (ja) 情報処理装置
US4095268A (en) System for stopping and restarting the operation of a data processor
JPS61148538A (ja) 演算処理装置
JP2005018650A (ja) 不揮発性半導体記憶装置およびデータ処理装置
JPS58181160A (ja) 緊急動作制御方式
JPS58105363A (ja) 記憶装置
JPH11338712A (ja) 割込順序保存回路
JPH0573296A (ja) マイクロコンピユータ
JPS595931B2 (ja) 演算処理システムのアドレス停止方式
KR0164725B1 (ko) 캐쉬 메모리의 영역 분할방법 및 회로
JPH10240571A (ja) アドレストレース回路
JPS63157238A (ja) コンピユ−タ
JPS6048778B2 (ja) チャネル制御方式
JPH036758A (ja) マイクロプロセッサ
JPH0635757A (ja) Cpuの異常検出装置
JPH02264339A (ja) 情報処理装置
JPH08202647A (ja) コンピュータ入出力装置の仮想ポートについて
JPH01240941A (ja) 情報処理装置
JPH0481939A (ja) マイクロコンピュータの制御方式
JPS628235A (ja) 動作履歴記憶装置
JPH02304624A (ja) 情報処理装置
JPH03119449A (ja) 計算装置
JPH0683986A (ja) シングルチップ・マイクロコンピュータ
JPS58221448A (ja) マイクロコンピユ−タ
JPS63120340A (ja) デ−タ処理装置