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

中央演算処理装置

Info

Publication number
JPH0659933U
JPH0659933U JP9152191U JP9152191U JPH0659933U JP H0659933 U JPH0659933 U JP H0659933U JP 9152191 U JP9152191 U JP 9152191U JP 9152191 U JP9152191 U JP 9152191U JP H0659933 U JPH0659933 U JP H0659933U
Authority
JP
Japan
Prior art keywords
address
program
instruction
signal
stack
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
JP9152191U
Other languages
English (en)
Inventor
誠 竹中
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 JP9152191U priority Critical patent/JPH0659933U/ja
Publication of JPH0659933U publication Critical patent/JPH0659933U/ja
Pending legal-status Critical Current

Links

Landscapes

  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 【目的】 サブルーチンコール命令、リターン命令によ
るスタック動作(プログラムアドレスの一時退避、復
帰)を高速に行う。 【構成】 サブルーチンコール命令のとき、プログラム
アドレスが一時的にスタックRAM10に退避され、記
憶される。リターン命令のとき、退避させたプログラム
アドレスがスタックRAM10から読み出される。一
方、スタックRAM10に記憶されたプログラムアドレ
スの退避先のアドレスの指定は、インクリメント回路4
1によって行われ、このときプログラムアドレスの書込
み時と読み出し時ではアドレス歩進が逆転して行われ
る。スタックポインタとなるインクリメント回路41の
アドレス歩進動作はプログラムカウンタを用いて行う必
要がなく、インクリメント回路41の値をプログラムカ
ウンタに転送する等の処理が不要となって、処理が簡単
化する。

Description

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

Claims (1)

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

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP9152191U JPH0659933U (ja) 1991-10-11 1991-10-11 中央演算処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP9152191U JPH0659933U (ja) 1991-10-11 1991-10-11 中央演算処理装置

Publications (1)

Publication Number Publication Date
JPH0659933U true JPH0659933U (ja) 1994-08-19

Family

ID=14028723

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9152191U Pending JPH0659933U (ja) 1991-10-11 1991-10-11 中央演算処理装置

Country Status (1)

Country Link
JP (1) JPH0659933U (ja)

Similar Documents

Publication Publication Date Title
US4179731A (en) Microprogrammed control system
JPS59133650A (ja) マイクロコンピユ−タおよびマイクロコンピユ−タのネツトワ−クならびにこれらを動作させる方法
JPH0545985B2 (ja)
US4388682A (en) Microprogrammable instruction translator
JPH0769791B2 (ja) マイクロプロセッサ
JPH05108341A (ja) マイクロプロセツサ
KR100314484B1 (ko) 정보 처리기
US5390306A (en) Pipeline processing system and microprocessor using the system
US5276822A (en) System with enhanced execution of address-conflicting instructions using immediate data latch for holding immediate data of a preceding instruction
KR100188374B1 (ko) 연산처리장치
JPH0659933U (ja) 中央演算処理装置
US5710904A (en) Microprocessor having address pre-outputting function and data processor using the same
JP2906792B2 (ja) ディジタルプロセッサ及びその制御方法
JPH0528431B2 (ja)
JPH0642206B2 (ja) コンカレント処理命令を有するマイクロプロセツサ
JPH05334084A (ja) 中央演算処理装置
EP0335502A2 (en) Microcontroller and associated method
JPS6320536A (ja) 情報処理装置
JPS6242301B2 (ja)
JP2636192B2 (ja) 情報処理装置
JPH0812601B2 (ja) データ処理装置
JP2601055B2 (ja) マイクロプログラム・シーケンサ
JPS6133721Y2 (ja)
JPH0792902A (ja) プログラマブルコントローラ
JPH0713757A (ja) データ処理装置