JPH05334084A - 中央演算処理装置 - Google Patents

中央演算処理装置

Info

Publication number
JPH05334084A
JPH05334084A JP4165363A JP16536392A JPH05334084A JP H05334084 A JPH05334084 A JP H05334084A JP 4165363 A JP4165363 A JP 4165363A JP 16536392 A JP16536392 A JP 16536392A JP H05334084 A JPH05334084 A JP H05334084A
Authority
JP
Japan
Prior art keywords
address
instruction
program
signal
output
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
JP4165363A
Other languages
English (en)
Inventor
Makoto Takenaka
誠 竹中
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.)
Casio Computer Co Ltd
Original Assignee
Casio Computer 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 Casio Computer Co Ltd filed Critical Casio Computer Co Ltd
Priority to JP4165363A priority Critical patent/JPH05334084A/ja
Publication of JPH05334084A publication Critical patent/JPH05334084A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 【目的】 機能低下を避けながら、サブルーチンコール
命令、リターン命令によるスタック動作を高速に行う。 【構成】 サブルーチンコール命令のとき、プログラム
アドレスを一時的にスタックRAM10に退避させ、記
憶する。リターン命令のとき、退避させたプログラムア
ドレスをスタックRAM10から読み出す。一方、イン
ストラクションデコーダ3からの出力に従い、選択手段
60によってRAM6をプログラムカウンタ8からのプ
ログラムアドレスで読み出すか、あるいはインクリメン
ト回路41で読み出すかを選択する。スタックRAM1
0に記憶したプログラムアドレスの退避先のアドレスの
指定は、インクリメント回路41によって行い、このと
きプログラムアドレスの書込み時と読み出し時ではアド
レス歩進を逆転して行う。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、中央演算処理装置(C
PU)に係わり、特に、サブルーチンコール処理を行う
スタック回路を改良した中央演算処理装置に関する。
【0002】
【従来の技術】一般に、プログラムの処理の一部を繰り
返すときには、条件分岐や無条件分岐に使用して処理の
順序を変更することが行われる。プログラムの複数箇所
に同じような命令の並びがあるときには、分岐だけでは
効率良くプログラムをまとめることはできず、このよう
な場合にサブルーチン呼び出し(Subroutine Call)命
令を用いる。
【0003】サブルーチンの呼び出し命令は、サブルー
チンと呼ばれるプログラムの塊に分岐する命令であり、
分岐命令と異なる点は、サブルーチン呼び出し命令が呼
び出しの元の番地をスタックに保存してから分岐するこ
とにある。戻り番地が保存されているので、サブルーチ
ンの実行が終了したら、戻り(Return)命令で呼び出し
元の処理に復帰できる。
【0004】従来のCPUにおいて、サブルーチンコー
ル命令あるいはリターン命令がきた場合においては、プ
ログラムを読み出すプログラムカウンタの現アドレス値
を退避させなければならない。このために、コール命令
のときは内蔵RAM(例えば、演算用のRAM)の特定
領域に、この現アドレス値を退避させ、その退避先のア
ドレスをスタックポインタというレジスタに記憶させて
いる。
【0005】そして、リターン命令がきたときは、この
退避したアドレスをスタックポインタを使用して読み出
してプログラムカウンタに転送している。この退避アド
レスの記憶の仕方は後に退避させたアドレスの方が先に
退避させたアドレスより先に読み出される構成になって
おり、これはコール命令でアドレスを退避先の領域に順
次書き込んでいくときは、スタックポインタに記憶され
ているアドレス値(退避先を示す)を順次インクリメン
ト(又はデクリメント)していき、読み出すときはスタ
ックポインタに記憶されるアドレスを逆にデクリメント
(又はインクリメント)させていっている。
【0006】
【発明が解決しようとする課題】ところで、従来のCP
Uにあっては、上記スタックポインタのアドレスの演算
をプログラマブルカウンタのインクリメント機能を用い
て行っており、そのためにコール、リターン命令時にプ
ログラマブルカウンタ内のアドレスの一時退避、プログ
ラマブルカウンタによるスタックポインタのインクリメ
ント、デクリメント、スタックポインタの示すアドレス
への現アドレスの転送等のように極めて多くの処理を行
われなければならず、必然的に高速で処理を実行するこ
とが困難であるという問題点があった。
【0007】一方、かかる不具合を解消するために、例
えば上記演算用RAMとは別に独立して他のRAM(例
えば、汎用RAM)をコール、リターン命令処理のため
だけに設けることも考えられるが、このようにすると、
独立の他のRAMの制御が必要で、演算処理装置全体と
してコストアップになったり、相対的に装置の機能が低
下して割に合わないという欠点がある。そのためには、
上述した独立の他のRAMを他のデータ処理にも使用可
能であるようにするか、あるいは上述した演算用のRA
Mに対するコール命令のときのなどの退避処理を簡単化
することが望ましい。
【0008】そこで本発明は、機能低下を避けながら、
コール命令、リターン命令によるスタック動作(プログ
ラムアドレスの一時退避、復帰)を高速に行うことので
きる中央演算処理装置を提供することを目的としてい
る。
【0009】
【課題を解決するための手段】本発明による中央演算処
理装置は、複数の命令からなる所定のプログラムを記憶
するプログラム記憶手段と、このプログラム記憶手段を
アドレッシングして記憶された命令を順次読み出すため
のプログラムアドレスを出力するアドレッシング手段
と、演算用データを書込み読み出し可能な演算データ記
憶手段と、前記プログラム記憶手段から出力される命令
に含まれるオペコードを解読する命令解読手段と、前記
プログラム記憶手段から出力される命令に含まれるオペ
ランドあるいは前記アドレッシング手段からのプログラ
ムアドレスを用いて前記演算データ記憶手段をアドレッ
シングして演算用データを書込み又は読み出しする演算
データアドレッシング手段と、前記命令解読手段の出力
に従って前記演算データ記憶手段に対する演算を実行す
る演算手段と、前記プログラム記憶手段から読み出され
た命令がサブルーチンコールのとき、前記プログラムア
ドレスを前記演算データ記憶手段に記憶させるととも
に、リターン命令のとき、このプログラムアドレスを読
み出すスタック手段と、前記演算データ記憶手段に記憶
されたプログラムアドレスの退避先のアドレスを指定す
るとともに、このプログラムアドレスの書込み時と読み
出し時のアドレス歩進を前記サブルーチンコール命令と
リターン命令のときとで逆転させるアドレスカウント手
段と、前記命令解読手段からの出力に従って、前記演算
データ記憶手段を前記アドレッシング手段からのプログ
ラムアドレスで読み出すかあるいは前記アドレスカウン
ト手段で読み出すかを選択する選択手段と、を備えたこ
とを特徴とする。
【0010】
【作用】本発明では、サブルーチンコール命令のとき、
プログラムアドレスが一時的に演算データ記憶手段(例
えば、演算用RAM)に記憶され、リターン命令のと
き、このプログラムアドレスが読み出される。一方、命
令解読手段からの出力に従い、選択手段によって演算デ
ータ記憶手段をアドレッシング手段からのプログラムア
ドレスで読み出すか、あるいはアドレスカウント手段で
読み出すかが選択される。そして、演算データ記憶手段
に記憶されたプログラムアドレスの退避先のアドレスの
指定は、アドレスカウント手段によって行われ、このと
きプログラムアドレスの書込み時と読み出し時ではアド
レス歩進が逆転して行われる。
【0011】したがって、いわゆるスタックポインタと
なるアドレスカウント手段のアドレス歩進動作はプログ
ラムカウンタを用いて行う必要がなく、アドレスカウン
ト手段の値をプログラムカウンタに転送する等の処理が
不要となって、処理が簡単になり、コール命令、リター
ン命令によるスタック動作が高速化する。また、プログ
ラムアドレスの一時退避、復帰に際して必要な処理が簡
単になり、演算データ記憶手段も他の演算処理用として
も使用できる。
【0012】
【実施例】以下、図面を参照して本発明の一実施例につ
いて説明する。図1は本発明に係る中央演算処理装置
(CPU)の概略構成を示すブロック図である。この図
に示すCPU1は大きく分けてプログラムROM(プロ
グラマブルROMともいう)2、インストラクションデ
コーダ3、タイミング信号発生回路4、アドレス制御回
路5、演算用RAM6、ALU7、プログラムカウンタ
(プログラマブルカウンタともいう)8、スタック(S
TACK)回路9、スタックRAM10およびインタラ
プタ回路11を含んでいる。そして、各回路間はデータ
バス12によって相互に接続されている。なお、各ライ
ンにおける添字はデータのビット数である。
【0013】プログラムROM(プログラム記憶手段)
2はCPU1の処理動作に必要な複数の命令、場合によ
ってはデータを記憶しており、アドレス端子RAに入力
されるアドレスデータPAD0〜15に従って内部に格
納された命令を順次呼び出し、呼び出した命令を2つに
分けて出力端子群OP1、OP2から外部に出力する。
【0014】出力される命令のうち、出力端子群OP1
から出力される命令はいわゆるオペコードであり、命令
の種類を特定するものである。オペコードは機械語の命
令の一部で、CPU1内における基本的な操作機能を表
す符号(コード)である。
【0015】出力端子群OP2から出力される命令はい
わゆるオペランドであり、演算用RAM6のメモリを特
定するための数値化されたデータである。そして、これ
らのオペコードおよびオペランドによって命令が構成さ
れている。
【0016】ここで、オペランドはCPU1内における
命令によって行われる操作の対象となるデータであり、
具体的には、アセンブリ言語を使用するときに必要で簡
単な規則と文法のうちの1つである。すなわち、アセン
ブリ言語で記述されるステートメント(文)は[ラベ
ル]、[命令コード]、[オペランド]、[コメント]
の4つから構成されるが、オペランドは命令コードで指
定されたメモリ番地、レジスタ名や数値を書くようにな
っている。本実施例では、演算用RAM6のメモリ番地
を特定するデータとなる。
【0017】インストラクションデコーダ(命令解読手
段)3はオペコードを受けて、どのような命令であるか
を解釈して必要な制御信号を生成し、他の回路に出力す
る。命令は、この制御信号をもとにして実行される。
【0018】タイミング信号発生回路4は、基本クロッ
クΦ1、Φ2(図示略)と、インストラクションデコー
ダ3からの制御信号を受けて種々のタイミング信号CK
1、CK2、T1、T2、CKAD、CKPC、EX
B、STK、RTN、GST1、GST2、CKS1、
CKS2、INOE、R/Wを生成して出力する。これ
らのタイミング信号は他の回路の動作のタイミングを制
御するために用いられる。
【0019】アドレス制御回路(演算データアドレッシ
ング手段)5は、プログラムROM2から出力される命
令に含まれるオペランド又はプログラムカウンタ8から
のプログラムアドレスを用いて演算用RAM6をアドレ
ッシングして演算用データを書込み又は読み出しするた
めのアドレス制御を行う。
【0020】演算用RAM(演算データ記憶手段)6
は、このアドレス制御回路5からのアドレスデータに基
づいて記憶されているデータを読み出したり、あるいは
書き込んだりする。演算用RAM6にはデータの読み出
しあるいは書き込みを行うための制御信号R/Wが入力
される。
【0021】ALU(演算手段)7は、演算用RAM6
からのデータあるいはデータバス12を介して入力され
るデータを演算してその演算結果を演算用RAM6に出
力する。
【0022】プログラムカウンタ(アドレッシング手
段)8は、プログラムROM2に記憶されているプログ
ラム(命令)を読み出すためのプログラムアドレスを出
力する。
【0023】スタック回路(スタック手段)9は、例え
ばプログラムROM2からの命令がサブルーチンやジャ
ンプ命令であった場合に、ジャンプする前のアドレスを
一時的にスタックRAM10に退避させる制御あるいは
プログラムアドレスを演算用RAM6に記憶させるため
の制御を択一的に行う。なお、この制御の切換えは後述
の選択手段によって切換えられる。プログラムアドレス
はプログラムカウンタ8からAD0〜7として入力され
る。
【0024】また、リターン命令のときには、退避した
プログラムアドレスを復帰させるために必要な制御ある
いはプログラムアドレスを読み出すための制御を択一的
に行う。同様に、この制御の切換えは後述の選択手段に
よって切換えられる。
【0025】スタックRAM10は、サブルーチンコー
ル命令のとき、スタック回路9からの信号に基づいてデ
ータバス12を介して入力されるプログラムカウンタ8
からのデータ(すなわち、プログラムカウンタ8の現ア
ドレス)を記憶する。また、リターン命令のとき、退避
したプログラムカウンタ8の現アドレスが読み出される
ものである。このスタックRAM10は従来の構成と異
なり、特別にプログラムアドレスの退避先のメモリとし
て演算用RAM6とは独立して別個に設けられている。
【0026】インタラプト回路11は、割込み信号が入
力された場合に、割込み動作を行わせるものである。
【0027】CPU1の概略構成を述べたので、次にプ
ログラムカウンタ8の内部構成について説明する。図2
はプログラムカウンタ8の内部構成を示す図である。こ
の図において、プログラムカウンタ8はインクリメント
回路21、ラッチ回路22〜26、セレクタ27、トラ
ンスミッションゲート28〜31およびインバータ32
を含んで構成される。
【0028】プログラムカウンタ8には各種の制御信号
が入力されており、そのうちクロックCK1、CK2、
T1、T2、CKAD、CKST、CKS1、CKS
2、CKPCと、制御信号GST1、GST2、RT
N、STKはタイミング信号発生回路4から入力される
ものである。
【0029】ここで、これらの信号の概略を説明する
と、以下のようになる。 CK1、CK2:基本クロックCK1、CK2は互いに
位相が半周期だけずれているもので、CK2の1周期が
1サイクルとなる。
【0030】T1:命令は、3サイクル又は6サイクル
で実行されるが、そのうちT1サイクルを表すパルス信
号である。“H”の期間がT1サイクルとなる。 T2:命令は、3サイクル又は6サイクルで実行される
が、そのうちT2サイクルを表すパルス信号である。
“H”の期間がT2サイクルとなる。
【0031】CKAD:CK2と同位相で3発目毎に、
T1サイクル終了後に発生する。なお、命令は3サイク
ル又は6サイクルで構成され、T1〜T2〜T3のサイ
クルを繰り返す。これにより、ラッチ回路22にアドレ
スがラッチされ、プログラムROM2にアドレスPAD
として供給される。
【0032】CKPC:T2サイクル終了毎に発生し、
ラッチ回路24あるいはラッチ回路25のアドレスをラ
ッチ回路26にラッチしてインクリメントさせる。 CKST:基本クロックCK1と同相で、ラッチ回路2
2からのデータをラッチ回路23にラッチさせるために
用いられる。
【0033】CKS1:基本クロックCK2と同相で、
データバス12からのデータをラッチ回路24にラッチ
させるために用いられる。 CKS2:基本クロックCK2と同相で、データバス1
2からのデータをラッチ回路25にラッチさせるために
用いられる。
【0034】GST1:リターン命令時は“L”で、コ
ール命令時は6サイクルのうち前半の3サイクルで
“H”となってラッチ回路23とデータバス12とを接
続する。 GST2:リターン命令時は“L”で、コール命令時は
6サイクルのうち後半の3サイクルで“H”となってラ
ッチ回路23とデータバス12とを接続する。
【0035】RTN:リターン命令時の6サイクルで
“H”となってラッチ回路24およびラッチ回路26間
を接続するとともに、インバータ32を介して反転する
ことにより、セレクタ27とラッチ回路26との接続を
遮断する。 STK:コール命令時に“H”となってセレクタ27に
オペランド1、2を選択させ、リターン命令時に“L”
となってアドレスADRを選択させる。
【0036】インクリメント回路21は、プログラムR
OM2に記憶されているプログラム(命令)を順次読み
出すためのプログラムアドレスを1つずつインクリメン
トしていくもので、ラッチ回路26の出力を+[1]だ
けインクリメントしてラッチ回路22に送り、ラッチ回
路22は信号CKADが“H”になるタイミングでイン
クリメント回路21の出力をラッチしてセレクタ27に
供給するとともに、ラッチ回路23に供給する。なお、
インクリメント回路21によってインクリメントされる
プログラムアドレスは16ビットのデータである。16
ビットのデータはインクリメント回路21、ラッチ回路
22、23、26およびセレクタ27において扱われ
る。
【0037】セレクタ27は信号STKが“H”のとき
オペランドOPA(内訳はオペランド1およびオペラン
ド2)をセレクトし、“L”のときラッチ回路22の出
力をセレクトする。セレクタ27の出力はトランスミッ
ションゲート28を介してラッチ回路26に戻される。
オペランドOPAは16ビットのプログラムアドレスに
対応しており、データバス12は8ビットである。した
がって、オペランドOPAは2つの部分に分れており、
そのうちオペランド1は8ビットでプログラムアドレス
の下位側、オペランド2は8ビットでプログラムアドレ
スの上位側に相当している。
【0038】ラッチ回路26は信号CKPCが“H”に
なるタイミングでセレクタ27から戻された16ビット
の出力、あるいはトランスミッションゲート31を介し
て入力される8ビットのラッチ回路24の出力および同
じく8ビットのラッチ回路25の出力を16ビット単位
てラッチしてインクリメント回路21に供給する。
【0039】なお、ラッチ回路24、25から供給され
るデータには全体として16ビットのプログラムアドレ
スPADに対応するものが含まれ、これはリターン命令
時に逆に退避先にストアされていた16ビットのプログ
ラムアドレスPADの復帰に相当する。
【0040】セレクタ27の出力は、プログラムROM
2に記憶されているプログラム(命令)を読み出すため
の16ビットのプログラムアドレスPADとしてプログ
ラムROM2に出力される。
【0041】また、本実施例の特徴としてセレクタ27
の出力のうちAD0〜7の8ビットは、プログラムアド
レスとしてスタック回路9に供給される。ラッチ回路2
3は信号CKSTが“H”になるタイミングでラッチ回
路22の出力をラッチし、そのラッチ結果をトランスミ
ッションゲート29およびトランスミッションゲート3
0を介し8ビットずつデータバス12に出力する。
【0042】この場合、サブルーチンコール命令時にプ
ログラムカウンタ8内のアドレスの一時退避が行われる
が、プログラムアドレスPADは16ビットであり、サ
ブルーチンコール命令時に退避されるアドレスはラッチ
回路23に記憶されている。一方、データバス12は8
ビットであるため、ラッチ回路23に格納されている1
6ビットの退避アドレスはトランスミッションゲート2
9を介して下位側の8ビットがデータバス12に出力さ
れ、上位側の8ビットはトランスミッションゲート30
を介してデータバス12に出力される。
【0043】一方、リターン命令時は逆に退避先にスト
アされていた16ビットのプログラムアドレスPADの
復帰が行われるが、この16ビットのプログラムアドレ
スPADは8ビットに分けてラッチ回路24、25によ
ってラッチされる。
【0044】すなわち、ラッチ回路24は信号CKS1
が“H”になるタイミングでデータバス12から入力さ
れるデータ、つまり16ビットのプログラムアドレスP
ADのうちの上位側8ビットをラッチし、そのラッチ結
果をトランスミッションゲート31を介してラッチ回路
26に出力する。また、ラッチ回路25は信号CKS2
が“H”になるタイミングでデータバス12から入力さ
れる16ビットのプログラムアドレスPADのうちの下
位側8ビットをラッチし、そのラッチ結果をトランスミ
ッションゲート31を介してラッチ回路26に出力す
る。
【0045】トランスミッションゲート28〜31はそ
のゲートに供給される信号のレベルに対応してオン/オ
フし、信号の通過を許容/遮断するものである。具体的
には、トランスミッションゲート28はインバータ32
を介してそのゲートに供給される信号RTNの反転信号
が“L”のときオフしてセレクタ27とラッチ回路26
との接続を遮断し、同反転信号が“H”のときオンして
両者を接続させる。
【0046】同様に、トランスミッションゲート31は
ゲートに供給される信号RTNが“L”のときオフして
ラッチ回路26とラッチ回路24又はラッチ回路25と
の接続を遮断し、信号RTNが“H”のときオンして両
者を接続させる。トランスミッションゲート29はその
ゲートに供給される信号GST1が“L”のときオフし
てラッチ回路23とデータバス12との接続を遮断し、
同信号GST1が“H”のときオンして両者を接続させ
る。
【0047】トランスミッションゲート30はそのゲー
トに供給される信号GST2が“L”のときオフしてラ
ッチ回路23とデータバス12との接続を遮断し、同信
号GST2が“H”のときオンして両者を接続させる。
なお、トランスミッションゲート28、31を通過する
データは16ビットであり、トランスミッションゲート
29、30を通過するデータは8ビットである。
【0048】図3は本実施例の特徴の1つであるスタッ
ク回路9の改良した部分の詳細な構成を示す図である。
図3において、スタック回路9はインクリメント回路4
1、ラッチ回路42、オアゲート43、ノアゲート4
4、45、アンドゲート46、47、インバータ48、
49、50およびトランスミッションゲート51、52
を含んで構成されている。また、図中、A〜Eは信号を
示す。
【0049】オアゲート43にはセレクタ27を制御す
る信号STKおよびサブルーチン命令あるいはリターン
命令を判別する信号RTNが供給され、オアゲート43
はこれらの信号を通過させてアンドゲート46、47に
出力する。アンドゲート46には、その他にサイクル信
号T2および信号EXBがインバータ48を介して反転
して供給される。信号EXBは1命令の後半の3サイク
ルで“H”となるため、アンドゲート46は1命令の前
半の3サイクルでサイクル信号T2が“H”のとき、オ
アゲート43の出力(すなわち、信号STKおよび信号
RTN)を通過させてノアゲート44に供給する。
【0050】一方、アンドゲート47には、その他にサ
イクル信号T1および信号EXBが供給される。信号E
XBは1命令の後半の3サイクルで“H”となるため、
アンドゲート47は1命令の前半の3サイクルでサイク
ル信号T2が“H”のとき、オアゲート43の出力(す
なわち、信号STKおよび信号RTN)を通過させてノ
アゲート44に供給する。
【0051】ノアゲート44はアンドゲート46、47
のノア論理を取ってノアゲート45に出力する。ノアゲ
ート45には、さらにインバータ49を介してクロック
信号CK1が供給されている。したがって、ノアゲート
45はインバータ49の出力信号Aと、ノアゲート44
の出力信号Bとのノア論理を取り、信号Cとしてラッチ
回路42のゲートに供給する。
【0052】また、前述した信号RTNはインクリメン
ト回路(アドレスカウント手段に相当)41のアップ/
ダウン制御端子U/Dに供給されており、リターン命令
時にはインクリメント回路41をアップカウントさせ、
サブルーチン命令時にはインクリメント回路41をダウ
ンカウントさせるもるである。
【0053】インクリメント回路41はスタックRAM
10に記憶されるプログラムアドレスの退避先のアドレ
スを指定するとともに、このプログラムアドレスの書込
み時と読み出し時のアドレス歩進を逆転可能なもので、
リターン命令の1つに相当する信号RTNが“H”のと
きラッチ回路42の出力をインクリメントし、同信号R
TNが“L”のときラッチ回路42の出力をデクリメン
トして再びラッチ回路42に供給する。
【0054】ラッチ回路42はサブルーチンコール命令
のときに、退避されるプログラムアドレスの退避先アド
レスをラッチし、またリターン命令のとき退避しておい
たプログラムアドレスをスタックRAM10から読み出
すためのアドレスをラッチしておくもので、ノアゲート
45の出力信号Cが“H”のときインクリメント回路4
1の出力をラッチし、そのラッチ信号を(上記退避先ア
ドレス又は読み出しアドレスとして)トランスミッショ
ンゲート51を介してスタックRAM10に出力する。
【0055】インバータ50およびトランスミッション
ゲート51、52は選択手段60を構成しており、選択
手段60はインストラクションデコーダ3からの出力に
従って、演算用RAM6をプログラムカウンタ8からの
プログラムアドレスで読み出すかあるいはインクリメン
ト回路41の出力で読み出すかを選択するものである。
【0056】すなわち、ラッチ回路42の出力側にはト
ランスミッションゲート51が設けられるとともに、前
述したプログラムカウンタ8からのプログラムアドレス
(つまり、セレクタ27の出力のうちAD0〜7の8ビ
ットのデータ)は、トランスミッションゲート52を介
してスタックRAM10に供給されるようになってい
る。そして、トランスミッションゲート51のゲート端
子にはオア回路43の出力が供給され、トランスミッシ
ョンゲート52のゲート端子にはオアゲート43の出力
がインバータ50を介し反転して供給されている。
【0057】したがって、セレクタ27を制御する信号
STKおよびサブルーチン命令あるいはリターン命令を
判別する信号RTNが“H”のとき、トランスミッショ
ンゲート51がオンしてラッチ回路42の出力をスタッ
クRAM10に出力し、同信号が“L”のとき、トラン
スミッションゲート52がオンしてプログラムアドレス
AD0〜7をスタックRAM10に出力する。
【0058】次に、このCPU1の動作について説明す
る。最初に一般な動作から説明すると、CPU1は、通
常の演算プロセスの場合、基本クロックCK2の3サイ
クルで1命令を実行する。一方、後述するサブルーチン
コール命令およびリターン命令の実行時には、例外的に
6サイクルでこれらの命令を実行する。なお、この基本
クロックCK2に対して基本クロックCK1は半周期だ
け位相がずれている。
【0059】まず、プログラムカウンタ8により所定の
アドレス(プログラムアドレス)が指定されると、この
アドレスに基づいてプログラムROM2から命令が読み
出されて出力される。具体的には、読み出された命令の
うちオペコードがインストラクションデコーダ3に出力
され、オペランドがアドレス制御回路5に出力される。
【0060】プログラムROM2から出力された命令に
含まれるオペコードはインストラクションデコーダ3に
よって解読され、この解読結果に基づいて必要な制御信
号が生成されて他の回路に出力される。このとき、イン
ストラクションデコーダ3からの制御信号に基づいてタ
イミング信号発生回路4により所望のタイミング信号C
K1、CK2、T1、T2、CKAD、CKPC、EX
B、STK、RTN、GST1、GST2、CKS1、
CKS2、R/Wが生成されて出力される。
【0061】いま、プログラムROM2から出力された
命令が演算用RAM6に記憶されている2つのデータを
加算する命令であるとすると、オペランドにはその2つ
のデータのアドレスを指定するデータおよび加算結果を
ストアするデータが現れる。そして、アドレス制御回路
5はこのデータに基づいて演算用RAM6から2つのデ
ータを読み出すためのデータをタイミング信号発生回路
4からのタイミングに基づいて順次発生する。この結
果、演算用RAM6からは2つのデータが順次読み出さ
れ、ALU7に出力される。
【0062】次いで、ALU7ではこの2つのデータが
加算されて所定のタイミングで演算用RAM6に出力さ
れる。このとき、アドレス制御回路5から演算用RAM
6には、この加算結果をメモリするアドレスデータが出
力されており、このアドレスの示す領域に加算結果が記
憶される。
【0063】このように、1つの命令は複数のタイミン
グ(すなわち、命令サイクル)で順次実行される。すな
わち、最初のサイクルT1では、オペランドからのデー
タにより演算用RAM6からデータが読み出されてAL
U7に供給される。次のサイクルT2では、ALU7に
おいて2つのデータの加算が行われる。そして、サイク
ルT3でALU7の演算結果が演算用RAM6にストア
される。このような3つのサイクルによって1つの命令
が実行される。
【0064】次に、サブルーチン処理時におけプログラ
ムアドレスの退避/復帰動作について説明する。最初
に、サブルーチン命令のときプログラムアドレスを独立
に設けたスタックRAM10に退避させ、リターン命令
のとき、退避させたプログラムアドレスをスタックRA
M10から読み出す場合の動作例から説明する。サブルーチンコール命令のとき 図4、図5はサブルーチン命令動作のタイミングチャー
トであり、特にプログラムカウンタ8およびスタック回
路9における動作に対応している。なお、サブルーチン
コール命令およびリターン命令の実行時には、3サイク
ルに対して2倍の6サイクルでこれらの命令が実行され
る。すなわち、サイクルT2の終了時にクロック信号C
KADの“H”パルスが発生せず、プログラムカウンタ
8が歩進しない。
【0065】ここで、図8(a)に示すように、サブル
ーチンコール命令の場合、オペコードにそのコール命令
が入り、オペランド1、2にはサブルーチンプログラム
の記憶された領域の先頭アドレスが8ビットに分れて入
っている。具体的には、オペランド1にはそのアドレス
の下位8ビットが入り、オペランド2にはそのアドレス
の上位8ビットが入っている。これは、前述したように
データバス12が8ビットである反面、プログラムアド
レスが16ビットだからである。一方、リターン命令の
場合、図8(b)に示すように、オペコードのみで、オ
ペランド1、2には何も入っていない。
【0066】いま、基本クロックCK2に同期して最初
のサイクルT1がスタートすると(このとき、基本クロ
ックCK1は半周期位相がずれている)、このサイクル
T1の開始エッジに同期して信号STKが“H”に立ち
上がる。この状態は少なくとも6サイクルの命令期間
中、継続する。これにより、セレクタ27はプログラム
カウンタ8のいままでのアドレス出力(ラッチ回路22
の出力)の代わりにオペランド1、2によって表される
アドレスをセレクトしてプログラムROM2に出力す
る。このため、サブルーチンの先頭アドレスがプログラ
ムROM2から読み出される。
【0067】また、信号STKが“H”に立ち上がるこ
とにより、オアゲート43の出力が“H”となってトラ
ンスミッションゲート51がオンするとともに、トラン
スミッションゲート52がオフする(オアゲート43の
出力がインバータ50を介して反転してゲートに加えら
れるため)。したがって、ラッチ回路42の出力をRA
M10に送出することが可能になる。一方、このときセ
レクタ27の出力があっても、トランスミッションゲー
ト52がオフしているため、RAM10に送出すること
ができない状態になる。
【0068】サブルーチンコール命令が呼び出される
と、この命令はインストラクションデコーダ3によって
解読され、この解読結果に基づいて必要な制御信号が生
成されて他の回路に出力される。このとき、インストラ
クションデコーダ3からの制御信号に基づいてタイミン
グ信号発生回路4によりサブルーチンコール命令の期間
中、信号CKS1、CKS2、RTN、INOEが
“L”に生成されて出力される。したがって、ラッチ回
路24、25が非動作状態になるとともに、トランスミ
ッションゲート31がオフし、信号RTNがインバータ
32を介してゲートに供給されるトランスミッションゲ
ート28がオンする。
【0069】トランスミッションゲート31がオフする
ことにより、ラッチ回路24、25とラッチ回路26と
の接続が遮断される。これにより、データバス12上の
データはラッチ回路26に取り込めなくなる。一方、ト
ランスミッションゲート28がオンすることにより、ラ
ッチ回路26とセレクタ27とが接続され、セレクタ2
7の出力がラッチ回路26に供給可能となる。また、信
号INOEが“L”になることにより、スタックRAM
10が書込み可能状態になる。この状態は少なくとも6
サイクルの命令期間中、継続する。
【0070】さらに、サイクルT1の開始エッジに同期
して信号GST1が“H”に立ち上がる。この状態は少
なくとも3サイクルの命令期間中(すなわち、コール命
令の前半の間)、継続する。これにより、トランスミッ
ションゲート29がオンし、ラッチ回路23とデータバ
ス12とが接続され、ラッチ回路23にラッチされた8
ビットの下位側アドレスデータをデータバス12に送出
することが可能になる。
【0071】その後、信号CKSTが“H”に立ち上が
るため、この立ち上がりタイミングに同期してラッチ回
路23はプログラムカウンタ8の現アドレスをラッチし
ているラッチ回路22の出力をラッチし、そのうち下位
側の8ビットのアドレスデータをトランスミッションゲ
ート29を介してデータバス12に送る。データバス1
2に送り出された下位側8ビットのアドレスデータはサ
ブルーチンコールによる現アドレスを退避させるものに
相当し、信号INOEが“L”になっていることによ
り、スタックRAM10の所定番地に書き込まれる。
【0072】次いで、サイクルT3になると、その開始
エッジに同期して信号CKPCが“H”に立ち上がる。
そのため、このタイミングに同期してラッチ回路26が
セレクタ27から送られてきたアドレスデータをラッチ
する。ラッチ回路26にラッチされたアドレスデータは
インクリメント回路21によってインクリメントされ、
信号OPA(インクリメントによりOPA+1となる)
としてラッチ回路22に出力される。
【0073】次いで、コール命令の後半のサイクルT1
になると、その開始エッジに同期して信号GST2が
“H”に立ち上がる。この状態は少なくとも3サイクル
の命令期間中(すなわち、コール命令の後半の間)、継
続する。これにより、トランスミッションゲート30が
オンし、ラッチ回路23とデータバス12とが接続さ
れ、ラッチ回路23にラッチされた8ビットの上位側ア
ドレスデータをデータバス12に送出することが可能に
なる。
【0074】この場合、前述したように信号CKSTが
“H”に立ち上がることによってラッチ回路23にはプ
ログラムカウンタ8の現アドレスがラッチされている
が、そのうち上位側の8ビットのアドレスデータがトラ
ンスミッションゲート30を介してデータバス12に送
られる。そして、データバス12に送り出された上位側
8ビットのアドレスデータはサブルーチンコールによる
現アドレスを退避させるものに相当し、信号INOEが
“L”になっていることにより、スタックRAM10の
所定番地に書き込まれる。
【0075】このようにしてプログラムカウンタ8の現
アドレスが下位側8ビット、上位側8ビットの順でスタ
ックRAM10の所定番地に書き込まれて退避させるこ
とが行われる。ここで、スタックRAM10に書込む場
合のアドレス制御はスタック回路9内にあるアップダウ
ン可能なアドレスカウンタとしてのインクリメント回路
41によって行われる。
【0076】すなわち、基本クロックCK1はインバー
タ49によって反転し、信号A(基本クロックCK1の
反転信号)となってノアゲート45に供給されている。
信号STKはオアゲート43をそのまま通過し信号Dと
なって、各アンドゲート46、47に供給される。この
とき、各アンドゲート46、47にはサイクルT1、サ
イクルT2のパルス信号がそれぞれ供給されているか
ら、信号Dがコール命令期間中は“H”であるため、サ
イクルT1、サイクルT2のパルス信号がそれぞれ
“H”のときのみ信号EXBあるいはその反転信号が各
アンドゲート47、46をそれぞれ通過してノアゲート
44に供給され、ノアゲート44を通過し信号Bとして
次段のノアゲート45に入力される。
【0077】したがって、信号BはサイクルT1、サイ
クルT2のパルス信号が“L”である期間のみ、“H”
になる。一方、ノアゲート45には前述した信号A(基
本クロックCK1の反転信号)も入力されており、信号
Aと信号Bのノア論理が取られて信号Cとしてラッチ回
路42の制御端子に供給される。このとき、信号Cは信
号Bが“L”のときのみ基本クロックCK1のパルスを
“H”にしたものに相当するから、結局、コール命令の
前半のサイクルT2および後半のサイクルT1の間にエ
ッジ的に“H”となるパルス信号Cに同期してインクリ
メント回路41き出力がラッチ回路42にラッチされ、
このラッチ出力はプログラムウカンタ8の現アドレスの
うちの下位側8ビットをスタックRAM10に書き込ん
で退避ささせる場合の退避先アドレスを示すものとして
使用される。
【0078】また、ラッチ回路42のラッチ出力は再び
インクリメント回路41に供給されてデクリメントされ
る。そして、プログラムカウンタ8の現アドレスのうち
の上位側8ビットをスタックRAM10に書き込んで退
避させる場合の退避先アドレスを示すものとして使用さ
れる。
【0079】具体的には、サブルーチンコール命令時に
退避させるプログラムカウンタ8の現アドレスのうちの
上位側8ビットは、サブルーチンアドレスSTAとして
スタックRAM10のアドレス[SAD]にアドレス下
位8ビットが書き込まれ、このあとスタックRAM10
のアドレス[SAD−1]にアドレス上位8ビットが書
き込まれる。続いて、スタックRAM10のアドレス
[SAD−2]に次のアドレスの書込み準備が行われ
る。
【0080】リターン命令 図6、図7はリターン命令動作のタイミングチャートで
ある。基本クロックCK2に同期して最初のサイクルT
1がスタートすると(このとき、基本クロックCK1は
半周期位相がずれている)、コール命令の場合とは逆に
このサイクルT1の開始エッジに同期して信号STKが
“H”に立ち上がらず、“L”のままである。この状態
は少なくとも6サイクルの命令期間中、継続する。これ
により、セレクタ27はプログラムカウンタ8のいまま
でのアドレス出力(オペランド1、2)の代わりにオペ
コードによって表されるリターン命令のアドレスをセレ
クトしてプログラムROM2に出力する。このため、リ
ターン命令がプログラムROM2から読み出される。
【0081】リターン命令が呼び出されると、この命令
はインストラクションデコーダ3によって解読され、こ
の解読結果に基づいて必要な制御信号が生成されて他の
回路に出力される。このとき、インストラクションデコ
ーダ3からの制御信号に基づいてタイミング信号発生回
路4によりリターン命令の期間中、信号GST1、GS
T2、CKSTが“L”に生成されて出力される。した
がって、信号CKSTが“L”になることにより、ラッ
チ回路23が非動作状態になる。また、信号GST1、
GST2が“L”になることにより、トランスミッショ
ンゲート29、30が共にオフし、ラッチ回路23とデ
ータバス12との接続が遮断される。
【0082】また、サイクルT1の開始エッジに同期し
て信号RTNが“H”に立ち上がる。この状態は少なく
とも6サイクルの命令期間中(すなわち、リターン命令
の全期間)、継続する。これにより、トランスミッショ
ンゲート31がオンし、ラッチ回路26とラッチ回路2
4、25とが接続され、ラッチ回路24、25にラッチ
された8ビットの下位側アドレスデータ、上位側アドレ
スデータをラッチ回路26にラッチすることが可能にな
る。
【0083】一方、信号RTNが“H”に立ち上がる
と、この反転信号がインバータ32を介してトランスミ
ッションゲート28に供給されるため、このトランスミ
ッションゲート28がオフし、セレクタ27とラッチ回
路26との接続が遮断される。また、信号INOEが
“H”になることにより、スタックRAM10が読み出
し可能状態になる。この状態は少なくとも6サイクルの
命令期間中、継続する。
【0084】一方、このリターン命令時において、スタ
ックRAM10から退避したプログラムアドレスを読み
出す場合のアドレス制御はスタック回路9内にあるアッ
プダウン可能なアドレスカウンタとしてのインクリメン
ト回路41によって行われる。
【0085】すなわち、基本クロックCK1はインバー
タ49によって反転し、信号A(基本クロックCK1の
反転信号)となってノアゲート45に供給されている。
信号STK(レベルは“L”)はオアゲート43をその
まま通過し信号Dとなって、各アンドゲート46、47
に供給される。このとき、各アンドゲート46、47に
はサイクルT1、サイクルT2のパルス信号がそれぞれ
供給されているから、信号Dがリターン命令期間中は
“L”であるため、サイクルT1、サイクルT2のパル
ス信号がそれぞれ“L”のときのみ信号EXBあるいは
その反転信号が各アンドゲート47、46をそれぞれ通
過してノアゲート44に供給され、ノアゲート44を通
過し信号Bとして次段のノアゲート45に入力される。
【0086】したがって、信号BはサイクルT1、サイ
クルT2のパルス信号が“H”である期間のみ、“L”
になる。一方、ノアゲート45には前述した信号A(基
本クロックCK1の反転信号)も入力されており、信号
Aと信号Bのノア論理が取られて信号Cとしてラッチ回
路42の制御端子に供給される。このとき、信号Cは信
号Bが“L”のときのみ基本クロックCK1のパルスを
“H”にしたものに相当するから、結局、コール命令の
前半のサイクルT2および後半のサイクルT1の間にト
リガ的に“H”となるパルス信号Cに同期してインクリ
メント回路41の出力がラッチ回路42にラッチされ、
このラッチ出力はスタックRAM10に退避して記憶さ
れているプログラムウカンタ8の復帰アドレスのうちの
下位側8ビットを読み出す場合のアドレスを示すものと
して使用される。
【0087】また、ラッチ回路42のラッチ出力は再び
インクリメント回路41に供給されてインクリメントさ
れる。そして、スタックRAM10に退避して記憶され
ているプログラムカウンタ8の復帰アドレスのうちの上
位側8ビットを読み出す場合のアドレスを示すものとし
て使用される。
【0088】具体的には、リターン命令時に復帰させる
プログラムカウンタ8のアドレスはスタックRAM10
のアドレス[SAD−2]、[SAD−1]、[SA
D]と順次進んで(インクリメントして)読み出され、
そのうちアドレス[SAD−1]のときプログラムアド
レス上位8ビットが読み出され、アドレス[SAD]の
ときプログラムアドレス下位8ビットが読み出される。
【0089】そして、このようにしてスタックRAM1
0から読み出されたプログラムアドレスはデータバス1
2を通ってプログラムカウンタ8に入力される。この場
合、まずデータバス12上の16ビットのプログラムデ
ータのうち上位8ビットは信号CKS2が“H”となる
タイミングでラッチ回路25にラッチされ、同様に下位
8ビットは信号CKS1が“H”となるタイミングでラ
ッチ回路24にラッチされる。
【0090】これらの各回路24、25にラッチされた
プログラムアドレスは、信号CKPCが“H”となるタ
イミングでラッチ回路26にラッチされ、インクリメン
ト回路21に供給される。そして、このインクリメント
回路21によって[+1]だけインクリメントされ、ラ
ッチ回路22に出力される。ラッチ回路22は次回の命
令サイクルでインクリメント回路21から送られたプロ
グラムアドレスをラッチし、このラッチ回路22の出力
はセレクタ27によってセレクトされてプログラムRO
M2に対してコール命令の次のアドレスに記憶されてい
る命令を読み出すためのアドレスとして供給される。
【0091】このように、本実施例ではサブルーチンコ
ール命令のとき、プログラムアドレスが一時的に独立に
設けられたスタックRAM10に退避され、記憶され
る。一方、リターン命令のとき、退避させたプログラム
アドレスがスタックRAM10から読み出される。ま
た、スタックRAM10に記憶されたプログラムアドレ
スの退避先のアドレスの指定は、アドレスカウント手段
としてのインクリメント回路41によって行われ、この
ときプログラムアドレスの書込み時と読み出し時ではア
ドレス歩進が逆転して行われる。
【0092】したがって、いわゆるスタックポインタと
なるインクリメント回路41のアドレス歩進動作はプロ
グラムカウンタ8を用いて行う必要がなく、アドレスカ
ウント手段(インクリメント回路41)の値をプログラ
ムカウンタ8に転送する等の処理(従来、必要であった
処理)が不要となって、処理が簡単になり、コール命
令、リターン命令によるスタック動作を高速化すること
ができる。
【0093】また、インクリメント回路41も独立に設
けられているから、プログラムアドレスの一時退避、復
帰に際して必要な処理が簡単になり、この面からもスタ
ック動作を高速化することができる。
【0094】さらに、例えばコール命令のとき、プログ
ラムカウンタの現アドレス値を退避させるために、他の
用途にも使用されている演算用のRAMの特定領域に、
この現アドレス値を退避させ、しかもその退避先のアド
レスをスタックポインタというレジスタに記憶させると
いうような従来の処理プロセスが必要ないので、演算の
場合との処理の区別等でコール命令のときの退避処理が
複雑になることがなく、この面からも高速で処理を実行
することができる。これは、リターン命令時についても
同様である。
【0095】次に、コール、リターン命令以外で、演算
用RAM6の書込み/読み出しをプログラムカウンタ8
からのプログラムアドレスに基づいて実行する一般的な
3サイクル命令が読み出された場合の動作例について説
明する。MOVE命令 図9は、一例としてMOVE命令を実行するときのタイ
ミングチャートである。MOVE命令は、データをRA
Mの特定の領域から別の領域に移動させるものである。
【0096】プログラムROM2からMOVE命令が読
み出されて出力されると、インストラクションデコーダ
3によって解読され、この解読結果に基づいて必要な制
御信号が生成される。このとき、インストラクションデ
コーダ3からの制御信号に基づいてタイミング信号発生
回路4により所望のタイミング信号CK1、CK2、T
1、T2、CKAD、CKPC、EXB、STK、RT
N、GST1、GST2、CKS1、CKS2、R/W
が生成されて出力される。
【0097】基本クロックCK2に同期して最初のサイ
クルT1がスタートすると(このとき、基本クロックC
K1は半周期位相がずれている)、このサイクルT1の
開始エッジに同期して信号INOEが“H”に立ち上が
る。この状態は少なくとも3サイクルの命令期間中、継
続する。信号INOEが“H”になることにより、スタ
ックRAM10が読み出し可能状態になる。この状態は
少なくとも3サイクルの命令期間中、継続する。
【0098】一方、このとき信号RTNは“L”レベル
となっており、オアゲート43の出力(図3、図9の信
号D)も“L”レベルとなってトランスミッションゲー
ト51がオフするとともに、トランスミッションゲート
52がオンする(オアゲート43の出力がインバータ5
0を介して反転してゲートに加えられるため)。したが
って、ラッチ回路42の出力をRAM10に送出するこ
とができなくなるとともに、セレクタ27の出力をRA
M10に送出することが可能な状態になる。
【0099】また、信号RTNが“L”になるため、ト
ランスミッションゲート31がオフし、信号RTNがイ
ンドバータ32を介してゲートに供給されるトランスミ
ッションゲート28がオンする。
【0100】トランスミッションゲート31がオフする
ことにより、ラッチ回路24、25とラッチ回路26と
の接続が遮断される。これにより、データバス12上の
データはラッチ回路26に取り込めなくなる。一方、ト
ランスミッションゲート28がオンすることにより、ラ
ッチ回路26とセレクタ27とが接続され、セレクタ2
7の出力がラッチ回路26に供給可能となる。
【0101】これにより、ラッチ回路26は信号CKP
Cが“H”になるタイミングでセレクタ27から送られ
てきたアドレスデータPCA(例えば、AD−1)をラ
ッチし、ラッチ回路26にラッチされたアドレスデータ
PCAはインクリメント回路21によってインクリメン
トされてインクリメントデータINC(例えば、AD)
となり、ラッチ回路22に出力される。そして、信号C
KADが“H”になるタイミングでラッチ回路22にラ
ッチされる。
【0102】ラッチ回路22にラッチされたデータは、
その後、セレクタ27でセレクトされアドレスデータP
ADとして再びトランスミッションゲート28を介して
ラッチ回路26に供給されるとともに、8ビットの下位
側アドレスデータAD0〜7はスタック回路9に出力さ
れる。このようにして8ビットの下位側アドレスデータ
AD0〜7は順次インクリメントされながら、スタック
回路9に出力されることになる。
【0103】スタック回路9に出力された8ビットの下
位側アドレスデータAD0〜7はトランスミッションゲ
ート51がオフ、トランスミッションゲート52がオン
しているため、オンしているトランスミッションゲート
52を通過してRAM10に出力される。この状態は図
9において、データE(すなわち、AD−1下位、AD
下位、AD+1下位・・・)として表されており、デー
タEは8ビットの下位側アドレスデータAD0〜7に相
当する。
【0104】これにより、RAM10ではスタック回路
9から送られてきた8ビットの下位側アドレスデータA
D0〜7を読み出しアドレスとしてデータ(例えば、D
ATA−1、DATA)が順次読み出される。RAM1
0から読み出されたデータはデータバス12を介してA
LU7に送出され、このALU7をスルーして演算用R
AM6に送られる。そして、書込みタイミング信号R/
Wが“L”になるタイミングで演算用RAM6に書き込
まれる。
【0105】このとき、演算用RAM6への移動先アド
レスを指定するアドレス制御回路5からのアドレスデー
タF(例えば、RAA−1、RAA)によって指定され
るエリアにRAM10から読み出されたデータが書き込
まれる。例えば、RAA−1のエリアにはデータDAT
A−1が書き込まれ、RAAのエリアにはデータDAT
Aが書き込まれる。
【0106】このように、演算用RAM6に対してデー
タをMOVEする場合に、プログラムカウンタ8からの
プログラムアドレスに基づいて実行される。なお、演算
用RAM6にデータを書き込む場合も同様の方式で実行
することができる。
【0107】したがって、演算用RAM6に対するデー
タの書込み/読み出しを行うに際してアドレス制御回路
5からのオペランドによる必要がなく、データの書込み
/読み出し制御を簡単に行うことができる。すなわち、
演算用RAM6に対するコール命令のときのなどの退避
処理を簡単化することができる。また、汎用RAM10
を他のデータ処理にも使用可能とすることができる。
【0108】なお、本発明の範囲内で種々の変形が可能
である。例えば、アドレスカウンタ手段としてインクリ
メント回路を用いたが、これに限らず、他の回路で構成
してもよい。
【0109】
【発明の効果】本発明によれば、サブルーチンコール命
令、リターン命令によるスタック動作(プログラムアド
レスの一時退避、復帰)の処理において、アドレスカウ
ンタの値をプログラムカウンタに転送する等の処理の必
要をなくすることができ、動作が簡単になって、これら
の処理を高速に行うことができる。
【0110】また、いままでアドレスの退避先の指定や
歩進動作を行うためにプログラムカウンタを用いていた
ものを、アドレスカウンタ手段を独立に設けるようにし
たので、プログラムアドレスの一時退避、復帰に際して
従来のようにプログラムカウンタに転送するような処理
が必要なくなって処理が簡単になり、この面からもスタ
ック動作を高速化することができる。
【0111】さらに、命令解読手段からの出力に従い、
選択手段によって演算データ記憶手段をアドレッシング
手段からのプログラムアドレスで読み出すか、あるいは
アドレスカウント手段で読み出すかを選択しているの
で、プログラムアドレスの一時退避、復帰に際して必要
な処理が簡単になり、演算データ記憶手段も他の演算処
理用としても使用できる。
【図面の簡単な説明】
【図1】本発明の中央演算処理装置の一実施例の構成を
示すブロック図である。
【図2】同実施例のプログラムカウンタの構成図であ
る。
【図3】同実施例のスタック回路の構成の一部を示す図
である。
【図4】同実施例のサブルーチンコール命令時の動作の
一部を示すタイミングチャートである。
【図5】同実施例のサブルーチンコール命令時の動作の
一部を示すタイミングチャートである。
【図6】同実施例のリターン命令時の動作の一部を示す
タイミングチャートである。
【図7】同実施例のリターン命令時の動作の一部を示す
タイミングチャートである。
【図8】同実施例のオペコートおよびオペランドの形態
を示す図である。
【図9】同実施例の転送命令時の動作を示すタイミング
チャートである。
【符号の説明】
1 CPU 2 プログラムROM(プログラム記憶手段) 3 インストラクションデコーダ(命令解読手段) 4 タイミング信号発生回路 5 アドレス制御回路(演算データアドレッシング手
段) 6 演算用RAM(演算データ記憶手段) 7 ALU(演算手段) 8 プログラムカウンタ(アドレッシング手段) 9 スタック(STACK)回路(スタック手段) 10 スタックRAM 11 インタラプト回路 12 データバス 21 インクリメント回路 22〜26、42 ラッチ回路 27 セレクタ 28〜31、51、52 トランスミッションゲート 32、48、49、50 インバータ 41 インクリメント回路(アドレスカウント手段) 43 オアゲート 44、45 ノアゲート 46、47 アンドゲート 60 選択手段

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 複数の命令からなる所定のプログラムを
    記憶するプログラム記憶手段と、 このプログラム記憶手段をアドレッシングして記憶され
    た命令を順次読み出すためのプログラムアドレスを出力
    するアドレッシング手段と、 演算用データを書込み読み出し可能な演算データ記憶手
    段と、 前記プログラム記憶手段から出力される命令に含まれる
    オペコードを解読する命令解読手段と、 前記プログラム記憶手段から出力される命令に含まれる
    オペランドあるいは前記アドレッシング手段からのプロ
    グラムアドレスを用いて前記演算データ記憶手段をアド
    レッシングして演算用データを書込み又は読み出しする
    演算データアドレッシング手段と、 前記命令解読手段の出力に従って前記演算データ記憶手
    段に対する演算を実行する演算手段と、 前記プログラム記憶手段から読み出された命令がサブル
    ーチンコールのとき、前記プログラムアドレスを前記演
    算データ記憶手段に記憶させるとともに、リターン命令
    のとき、このプログラムアドレスを読み出すスタック手
    段と、 前記演算データ記憶手段に記憶されたプログラムアドレ
    スの退避先のアドレスを指定するとともに、このプログ
    ラムアドレスの書込み時と読み出し時のアドレス歩進を
    前記サブルーチンコール命令とリターン命令のときとで
    逆転させるアドレスカウント手段と、 前記命令解読手段からの出力に従って、前記演算データ
    記憶手段を前記アドレッシング手段からのプログラムア
    ドレスで読み出すかあるいは前記アドレスカウント手段
    で読み出すかを選択する選択手段と、を備えたことを特
    徴とする中央演算処理装置。
JP4165363A 1992-06-01 1992-06-01 中央演算処理装置 Pending JPH05334084A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP4165363A JPH05334084A (ja) 1992-06-01 1992-06-01 中央演算処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP4165363A JPH05334084A (ja) 1992-06-01 1992-06-01 中央演算処理装置

Publications (1)

Publication Number Publication Date
JPH05334084A true JPH05334084A (ja) 1993-12-17

Family

ID=15810950

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4165363A Pending JPH05334084A (ja) 1992-06-01 1992-06-01 中央演算処理装置

Country Status (1)

Country Link
JP (1) JPH05334084A (ja)

Similar Documents

Publication Publication Date Title
CA1145478A (en) High speed synchronous computer
JPS6230651B2 (ja)
US4541045A (en) Microprocessor architecture employing efficient operand and instruction addressing
JPS6239780B2 (ja)
JP3710262B2 (ja) コプロセッサを使用するための電子回路及び方法
JPS5849881B2 (ja) デ−タシヨリソウチ
US5390306A (en) Pipeline processing system and microprocessor using the system
KR100188374B1 (ko) 연산처리장치
JPH0659933U (ja) 中央演算処理装置
JPH0642206B2 (ja) コンカレント処理命令を有するマイクロプロセツサ
US6510444B2 (en) Data processor architecture and instruction format for increased efficiency
JP2812610B2 (ja) パイプライン制御方式
JP2636192B2 (ja) 情報処理装置
JP2006072961A (ja) 演算処理装置のメモリ回路
US5463747A (en) Microprogram data processor processing operand address calculation and instruction execution with common hardware
JPH05143447A (ja) デイジタルプロセツサ及びその制御方法
JPH05298088A (ja) マイクロコンピュータ
JPS6320536A (ja) 情報処理装置
KR100345678B1 (ko) 설계의 변경이 용이한 제어 유닛
JP3117214B2 (ja) シーケンサのマイクロプログラム制御方式
JP3074790B2 (ja) マイクロプロセッサ
JP2982129B2 (ja) マイクロプログラム制御装置
JPS6015969B2 (ja) マイクロ命令アドレス生成方式
JPS6375833A (ja) 情報処理装置
JPH04251331A (ja) 情報処理装置