JPS6217252B2 - - Google Patents
Info
- Publication number
- JPS6217252B2 JPS6217252B2 JP55052568A JP5256880A JPS6217252B2 JP S6217252 B2 JPS6217252 B2 JP S6217252B2 JP 55052568 A JP55052568 A JP 55052568A JP 5256880 A JP5256880 A JP 5256880A JP S6217252 B2 JPS6217252 B2 JP S6217252B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- register
- macro
- address
- memory
- 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.)
- Expired
Links
- 230000004044 response Effects 0.000 claims description 3
- 238000000034 method Methods 0.000 description 35
- 238000010586 diagram Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 4
- 230000004913 activation Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 206010016531 fetishism Diseases 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000011017 operating method Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Description
この発明は電子計算機の演算制御装置特に演算
制御装置の動作において必要とする命令又はデー
タをそれらが記憶されているマクロ命令メモリか
らフエツチする技術に関する。 一般に演算制御装置(以下ALUと呼ぶ)の処
理速度はフエツチに要する速度に比べて速い。従
つてALUの1回の処理量(ALUが1回の実行に
よつて処理するビツト数)と1回のフエツチ量
(1回のフエツチでマクロ命令メモリからALUの
入口まで移動することのできるビツト数)とが同
じであれば、ALUがいくら早く動作しても全計
算速度はフエツチ速度で押えられてしまう。この
問題を解決するために従来2通りの方法が考えら
れている。その第1の方法は1回のフエツチ量を
ALUの1回の処理量と同じか又はそれよりも多
くする方法がとられている。例えばメモリバス巾
を広くする方法はこれに該当する。しかしメモリ
バス巾を広げることは制御を複雑にしコストも増
大するという欠点がある。 第2の方法はALUの処理速度に匹敵するフエ
ツチ速度を持つた小容量のメモリ又はレジスタを
追加しこのメモリ(以下キヤツシユメモリと呼
ぶ)又はレジスタに前記ALUがこれから処理し
ようとしているマクロ命令又はデータを前もつて
フエツチ(以下プリフエツチと呼ぶ)する方法で
ある。 この方法には大別してキヤツシユメモリ方式と
パイプラインレジスタ方式の2通りがある。キヤ
ツシユメモリは高価であるためキヤツシユメモリ
方式は小型の計算機システムではコスト的に問題
がある。この発明はプリフエツチ方式の内のパイ
プラインレジスタ方式に関するものである。 従来のプリフエツチ方式は大別して次のように
わけることができる。
制御装置の動作において必要とする命令又はデー
タをそれらが記憶されているマクロ命令メモリか
らフエツチする技術に関する。 一般に演算制御装置(以下ALUと呼ぶ)の処
理速度はフエツチに要する速度に比べて速い。従
つてALUの1回の処理量(ALUが1回の実行に
よつて処理するビツト数)と1回のフエツチ量
(1回のフエツチでマクロ命令メモリからALUの
入口まで移動することのできるビツト数)とが同
じであれば、ALUがいくら早く動作しても全計
算速度はフエツチ速度で押えられてしまう。この
問題を解決するために従来2通りの方法が考えら
れている。その第1の方法は1回のフエツチ量を
ALUの1回の処理量と同じか又はそれよりも多
くする方法がとられている。例えばメモリバス巾
を広くする方法はこれに該当する。しかしメモリ
バス巾を広げることは制御を複雑にしコストも増
大するという欠点がある。 第2の方法はALUの処理速度に匹敵するフエ
ツチ速度を持つた小容量のメモリ又はレジスタを
追加しこのメモリ(以下キヤツシユメモリと呼
ぶ)又はレジスタに前記ALUがこれから処理し
ようとしているマクロ命令又はデータを前もつて
フエツチ(以下プリフエツチと呼ぶ)する方法で
ある。 この方法には大別してキヤツシユメモリ方式と
パイプラインレジスタ方式の2通りがある。キヤ
ツシユメモリは高価であるためキヤツシユメモリ
方式は小型の計算機システムではコスト的に問題
がある。この発明はプリフエツチ方式の内のパイ
プラインレジスタ方式に関するものである。 従来のプリフエツチ方式は大別して次のように
わけることができる。
【表】
キヤツシユメモリ式パイプラインレジスタ方式
におけるデータのプリフエツチ動作については本
発明と関係無いのでその説明は省略する。本発明
は、パイプラインレジスタ方式における命令のプ
リフエツチ動作を行う場合のブランチトリー考慮
方式に関する。ブランチトリーとは命令列の中に
判定命令が含まれているときその命令の後に並ぶ
命令列が複数に分れるので、その枝のことを意味
している。判定命令が実行されるとその判定に従
つてブランチトリーのひとつが選ばれ他は不必要
となる。ブランチトリー考慮型はプリフエツチに
際して判定命令後の全ブランチトリーをプリフエ
ツチする方法であり、ブランチトリー非考慮型は
いずれかひとつのブランチトリーとかプリフエツ
チしないという方法である。 後者の方法ではプリフエツチされたブランチト
リーが当らなかつた場合には他のブランチトリー
を再びフエツチせねばならず、プリフエツチの効
果が減少する。大型電子計算機ではブランチトリ
ー考慮型がよく用いられるが中形以下の電子計算
機ではコスト等の点で非考慮型が一般的に用いら
れる。 ここでパイプライン制御の一般的な実現法につ
いて述べる。 パイプラインということばは、処理時間tの論
理ユニツトLi(i=1、2、………、n)を縦に
つないだものを指し、これに入力端からt時間ご
とにデータ(命令を含む)をつぎつぎに入れてや
り、それぞれに各Liによるn段の処理をほどこし
た後出力端からt時間ごとにつぎつぎにデータを
取り出す処理方式をパイプライン制御とよんでい
る。そこで高速化をはかるには第1図のように各
命令の処理ステツプをオーバーラツプさせて命令
の並行処理をはかる必要がでてくる。これがパイ
プライン制御方式である。なお同図においてL1
は命令の読出しステツプを、L2の命令の解読ス
テツプを、L3はアドレス計算ステツプを、L4は
オペランド読出しステツプを、L5は命令実行の
ステツプを表わすものとする。 パイプライン制御による演算制御装置は一般に
第2図に様に表わせる。これらのユニツトの動作
関係を第3図に示す。この図における動作手順は
次の通りである。 PよりBに命令読出し要求を出す。 Bは要求された命令がバツフアメモリ
(BM)にあればそれをPに送る。なければF
に要求を出しPに送る。 Pでは命令をデコードしてオペランドのアド
レス計算をAに要求する。 AよりアドレスをBに送りデータを読出す。 PよりEに指令を出す。 結果はEからの指令でBまたはFを経由して
格納する。 以上の処理の流れを詳細なブロツク図の形で示
すと第4図のようになる。同図における動作は次
の通りである。 命令を読出す 第2オペランドのアドレスを計算する 第2オペランドをメモリから読出す 第1ペランドを汎用レジスタから読出す 命令実行の制御 演算 結果の格納 このように一つの命令がいくつかのユニツトを
経由して実行されるわけであるが、パイプライン
制御として実行される場合一つのユニツトにはつ
ぎつぎと命令が入つてくることになる。各ユニツ
トでの処理時間が常に一定ならば理想的なパイプ
ラインを組むことができる。しかしながら実際の
命令処理では種々の複雑な処理があるためいわゆ
る“パイプラインの乱れ”が生ずる。これは例え
ば条件付ジヤンプ命令が現われた場合である。パ
イプラインの乱れをできるだけ避けるためにいく
つかのユニツトにバツフアレジスタを置くことが
行われている。すなわちパイプラインの途中に情
報を一時的に蓄えて入つてくるデータが一様でな
い場合も出ていくデータを一様にしようという考
えである。バツフアレジスタの使い方として第5
図にも示したようにE(Execution Control)ユ
ニツトには4つ分の操作をためておくオペレーシ
ヨンスタツクレジスタ(OSR)と4つのデータ
をためておくためのオペランド・バツフア・レジ
スタ(OBR)が用意されている。これらは時間
のかる操作あるいはメモリから出てきたデータが
続いたようなときにもなるべくパイプラインの中
にすき間ができないようにするための仕掛けであ
る。 一方第6図にP(Program Control)ユニツト
にも5つの命令バツフアレジスタが用意されてい
る。現在実行中の命令の流れ(正常シーケンスと
呼ぶ)で、できるだけ先の命令を読出すためのバ
ツフアレジスタと、ジヤンプ命令が現われたとき
にジヤンプ先の命令(分岐先シーケンスと呼ぶ)
を読出すためのバツフア・レジスタとがある。5
個のバツフアレジスタのうち2個は正常シーケン
ス用、2個は分岐先シーケンス用に残りの1個
は、先取り命令がバツフア・メモリから送られた
ときに目的のバツフアレジスタが使用中である場
合、それを一時的に保存するためのレジスタであ
る。このようにパイプライン制御を行なう大型計
算機においては多数のハードウエアを用いて複雑
な制御を行つている。 この発明は上記実情に鑑みてなされたものでそ
の目的とするところは小形計算機やマイクロコン
ピユータ等においてもブランチトリー考慮方式を
採用できるように簡易プリフエツチ方式を採用し
た演算制御装置を提供することを目的とする。 以下この発明の一実施例につき図面を参照して
説明する。 この発明の一実施例の構成を説明する前にこの
構成を含む計算機システムに使用されるマクロ命
令群について説明する。このマクロ命令群につい
ては同一出願人によつて出願された特願昭54−
107643号、米国出願(U.S.serial No.919297)に
詳細に説明されているが、その概略について第7
図を参照して以下述べる。この場合には第7図に
示すように従来の演算制御装置に分岐アドレスを
格納するAレジスタ18、Bレジスタ19の2種
類のレジスタと、プツシユダウンスタツク16を
新たに設け、さらにこれらのエレメントを制御し
やすい回路を構成して機械語レベルでストラクチ
ヤードプログラムの実行を真に効率的にする演算
制御装置を得ることを目的としている。この目的
を達成するために4つの命令を与える手段を有し
ている。 (1) プログラムカウタから所定のアドレスを指定
させ主メモリに記憶されているプログラムの第
1、第2、第3ブロツクの実行先頭番地である
データA,B,Cを読出し、これらをそれぞれ
第1レジスタ(Aレジスタ)、第2レジスタ
(Bレジスタ)、プツシユダウンスタツクに格納
する命令(ML命令)を与える手段。 (2) 演算結果に応じて前記第1レジスタ又は第2
レジスタの内容を選択的に前記プログラムカウ
ンタに格納する真偽チエツク命令(BTC命
令、BFC命令)を与える手段。 (3) 前記プツシユダウンスタツクをポツプアツプ
してその内容を前記プログラムカウンタに格納
する命令(END命令)を与える手段。 これらの命令の実行はマイクロプログラムと前
述した回路によつて実現される。 以下4つのマクロ命令群について説明する。 ML A,B,C BTC M0,M1,M2,M3 BFC M0,M1,M2,M3 END AL A,B,C 値AをAレジスタに格納する 値BをBレジスタに格納する 値Cをフアーストイン・ラストアウト型スタ
ツクCへプツシユする BTC M0,M1,M2,M3 条件Fの値が1ならばAレジスタに格納され
ている値の番地へブランチする。 条件Fの値が1でないならば、Bレジスタに
格納されている値の番地へブランチする。 但し条件Fは、 F=(M0∧C)∨(M1∧V)∨(M2∧
N)∨(M3∧Z)で求められ、値C、V、
N、Zの値はBTC又はBFC命令の直前に行な
つたALUにおける演算結果に対してもとめら
れる。∧記号は論理積を示し、∨記号を論理和
を示している。又Cはキヤリーフラツグ、Vは
オーバーフローフラツグ、Nはネガテイブフラ
ツグ、Zはゼロフラツグを示している。 BFC M0,M1,M2,M3 条件Fの値がOならば、Aレジスタに格納さ
れている値の番地へブランチする。 END フアーストインラストアウト型スタツクCを
ポツプアツプする。取出した値をプログラムカ
ウンタへ移しかえてこの値の番地へプログラム
が分岐する。 上記のBTC、BFC命令の前には必らず判定条
件を作り出すような数組の命令が置かれるはずで
ある。ML命令はこれら数命令のさらに前に挿入
されねばならない。ML命令は従つてBTC又は
BFCのような判定を行う命令よりも数名令だけ
前に実行することによつてこれら判定命令の実行
後にブランチするアドレスを2個(AとB)と、
ブランチした後、再びもとの命令列へ帰つてくる
ときの帰り番地CとをBTC命令又はBFC命令の
実行の前に演算制御装置に通知することができ
る。 事前通報を目的とするこのような命令は必ずし
も上に示したML A,B,Cのようなものであ
る必要はない。種々の変形された形式の事前報命
令が可能である。この実施例においては、種々の
事前通報命令の代表としてML A,B,Cとい
う命令を取り上げている。マイクロプログラム中
にML A,B,Cという命令を挿入した場合、
そのあとに配置される判定命令は前記BTC、
BFC命令のように簡単化される。従来の判定命
令は判定命令の中にA,Bのようなブランチ先ア
ドレスを含まねばならなかつたので判定命令が長
いビツト列を必要とした。従つてこの発明におい
てML A,B,Cの命令を挿入してもマクロ命
令メモリサイズの増加に直結結びつくわけではな
い。ML命令、BTC命令、BFC命令、END命令の
各命令の作用をより明確にするために、簡単なプ
ログラムを考える。今2数の値を比較して小さい
方を取出すプログラムについて考えてみる。この
場合2数がそれぞれP、Qというアドレスをもつ
たメモリロケーシヨンに格納されており、小さい
方の数をMINというアドレスのメモリロケーシヨ
ンへ格納するものとする。 従来のマクロ命令を用いると、このプログラム
は次のようになる。 プログラム−1 LH 3,P レジスタ3へ片方の数を入れる SH 3,Q 他方の数を上の数から引算する BM A 結果がマイナスであればAへジヤンプ
する B LH 3,Q 小さい方の数をレジスタ3へ
入れる B C Cへジヤンプする A LH 3,P 小さい方の数をレジスタ3へ
入れる B C Cへジヤンプする C STH 3、MIN 小さい方の数をMINへ格 〓 納する これをML命令、BTC命令、BFC命令、END命
令の各命令を用いて書くと次のようになる。 プログラム−2 ML A,B,C ブランチ先事前通報命令 LH 3,P レジスタ3へ片方の数を入れる SH 3,Q 他方の数を上の数から引算する BTC 0,0,1,0 ネガテイブフラツグが
trueならAへ、falseならB
へそれぞれ分岐する A LH 3,P trueのときのブランチ先 END Cへジヤンプする B LH 3,Q falseのときのブランチ先 END Cへジヤンプする C STH 3、MIN 小さい方の数をMINへ 〓 格納する 上記例からわかるようにプログラム−1の場合
すなわち従来のマクロ命令を用いてプログラミン
グした場合必要なメモリ容量は32バイトであり、
ML命令、BTC命令、BFC命令、END命令を用い
てプログラミングした場合の必要なメモリ容量は
34バイトである。従つて本発明で使用するマクロ
命令の場合は2バイト余計に必要となるが、この
程度の増加は最近の集積密度の向上に伴うICメ
モリの価格の低下を考えると実質的に無視できる
ものである。 第8図はこの発明の一実施例を示したものであ
る。初めに計算機のユーザが使用する命令のこと
をマイクロ命令と区別するためにマクロ命令と呼
ぶことにする。 マクロ命令およびそれらに附随したデータはマ
クロ命令メモリ81に記憶されている。アドレス
レジスタ83に設定されたアドレスに記憶されれ
マクロ命令又はデータはメモリデータバス85を
介してフエツチレジスタ87にフエツチされさら
にその後切換スイツチ89を介して実行用レジス
タ91にフエツチされる。この場合前記フエツチ
レジスタ87へマクロ命令又はデータがフエツチ
される動作と実行用レジスタ91へマクロ命令が
フエツチされALUが実行する動作は並行して行
なわれる。(前記フエツチレジスタ87と実行用
レジスタ91を合せてパイプラインレジスタと呼
ぶ場合もある)。前記マクロ命令メモリ81から
フエツチレジスタ87へ読出された命令は第1の
デコーダ93へ供給される。前記第1のデコーダ
93は供給されたマクロ命令がML命令かどうか
をチエツクする。もしML命令でなければ実行用
レジスタ91の内容の実行が終了する迄フエツチ
レジスタ87の内容は保持される。実行用レジス
タ91の内容がALUによつて処理された後は、
フエツチ用レジスタ87の内容は実行用レジスタ
91に移され第2のデコーダ95によつて解読さ
れる。マイクロプログラムシーケンサ97は第2
のデコーダ95の解読結果にもとづいてマイクロ
プログラムROM99に格納されたマイクロプロ
グラムの実行を制御する。前記マイクロプログラ
ムROM99から出力されたマイクロ命令は命令
レジスタ101にロードされ、マイクロプログラ
ムシーケンサ97の指示に従つて信号をALU又
は論理回路の各部へ分配する。フエツチレジスタ
87へフエツチする命令又はデータのマクロ命令
メモリ81内におけるロケーシヨンアドレスはア
ドレスレジスタ83によつて指示される。すなわ
ちプログラムカウンタ103中にセツトされたア
ドレス値はアドレスコントローラ107を介して
メモリアドレスバス109上に出力される。バス
コントローラ105はこのメモリアドレスバス1
09上に出力されたアドレス値をアドレスレジス
タ83に供給する。前記プログラムカウンタ10
3は分岐命令がない限り、フエツチレジスタ87
の内容が実行用レジスタ91に送られる度に1づ
つインクリメントされる。仮に分岐命令が前記
ALUによつて実行されると、分岐アドレスが
ALUから切換器111を介してプログラムカウ
ンタ103に供給される。 他方前記第1のデコーダ93が供給された命令
がML命令であると判断すると、インクリメンタ
113は前記第1のデコーダ93からの指令によ
りプログラムカウンタ103の内容を+3インク
リメントする、 但しこの場合マクロ命令メモリ81はバイト
(8ビツト)を記憶単位とし、アドレスが附され
ているものとする。又命令やデータはバイトに区
切つて記憶されている。アドレス値が8ビツトで
構成され、命令のオペレーシヨンコードも8ビツ
トで構成されているとすると、ML A,B,C
という命令は4バイトで構成される。上記の場合
ML命令のオペレーシヨンコードは実行用レジス
タ91へは供給されない。アドレス/命令プリフ
エツチ制御回路115は前記第1のデコーダ93
からの指示によりML命令のオペランドを読出す
ようにバスコントローラ105に指示する。バス
コントローラ105はマクロ命令メモリ81から
ML命令のオペランドA,B,Cをメモリデータ
バス85上に読出しデータレジスタ117を介し
てそれぞれAレジスタ119、Bレジスタ121
及びCレジスタスタツク123へロードする。前
記Cレジスタスタツク123はフアーストインラ
ストアウトのスタツクである。更にアドレス/命
令プリフエツチ制御回路115は前記Aレジスタ
119、Bレジスタ121及びCレジスタスタツ
ク123に格納されたアドレスにより定義された
マクロ命令メモリ81のロケーシヨンの内容を読
出し、前記データレジスタ117を介して命令レ
ジスタ125、命令レジスタ127及び命令レジ
スタスタツク129にロードする。命令レジスタ
スタツク129は前記Cレジスタスタツク123
と同様フアーストインラストアウト方式である。 以上の動作でML命令のあとに必らず存在する
判定命令(上記BTC命令、BFC命令etc)がALU
で実行されたとき、ブランチする先の命令が前記
命令レジスタ125,127に準備され戻り先の
命令が前記命令レジスタスタツク129に事前に
準備されたことになる。このようにプリフエツチ
動作はプログラム−2の例ではML命令とBTC命
令との間に介在する2命令がALUで実行されて
いる間に並例して行われる。プログラム−2の例
では命令レジスタ125にLHが、命令レジスタ
127にもLHが、命令レジスタスタツク129
にはSTHがそれぞれロードされる。又前記Aレ
ジスタ119、Bレジスタ121、及びCレジス
タスタツク123にはそれぞれオペランドA,
B,Cの値が入る。判定命令(上記BTC命令又
はBFC命令等)が実行されると、その結果命令
レジスタ125,127のいずれかが切換器89
で選択されて実行用レジスタ91のロードされ
る。例えば命令レジスタ125の内容が選ばれた
場合には、この内容が実行用レジスタ91にロー
ドされると同時にAレジスタ119の内容がアド
レス/命令プリフエツチ制御回路115、切換器
111を介してプログラムカウンタ103へ入れ
られ、1だけインクリメントされる。この値は次
にマクロ命令メモリ81からフエツチするための
アドレスとなる。ALUによりEND命令が実行さ
れると、前記実行用レジスタ91にはフエツチレ
ジスタ87の内容を入れるのではなく、命令レジ
スタスタツク129をポツプアツプしてとり出さ
れた内容を入れる。このときフエツチレジスタ8
7に入つていた内容は無視される。プログラムカ
ウンタ103にはCレジスタスタツク123をポ
ツプアツプしてとり出された内容が入れられ、さ
らに1だけインクリメントされる。 次にこの発明による演算制御回路におけるマク
ロ命令の実行手順について説明する。 今第9図のメモリマツプに示すようにマクロ命
令メモリ81のP番地に1バイト命令OP0、P+
1番地及びP+2番地に2バイト命令OP1、P+
3番地及びP+4番地にそれぞれ1バイト命令
OP2,OP3が書込まれているものとする、この場
合のマクロ命令の実行処理手順は以下のようにな
る。 (1) マクロ命令OP0の1ステツプ前のマクロ命令
を実行中に前記マクロ命令OP0の読出し要求が
行われる。すなわちプログラムカウンタ103
の内容がメモリアドレスバス109を経由して
アドレスレジスタ83へ送出され、メモリ読出
し要求が行われる。 (2) プログラムカウンタ103の内容はインクリ
メンタ113で1だけインクリメントされ、
(P+1)切換器111を介して再びプログラ
ムカウンタ103に保持される。 (3) ステツプ1で読出し要求が成されたマクロ命
令OP0は前記マクロ命令メモリ81から読出さ
れメモリデータバス85を経由してフエツチレ
ジスタ87に保持される。前記フエツチレジス
タ87に保持されたマクロ命令OP0はデコーダ
93でデコードされML命令であるかどうかチ
エツクされる (4) プログラムカウンタ103の内容(P+1)
をアドレスレジスタ83へ移し次の命令の読出
し要求を行う (5) ステツプ(3)でML命令以外の命令であると判
定されると、フエツチレジスタ87の内容は切
換器89を介して実行用レジスタ91へ転送さ
れる。この実行用レジスタ91の内容はデコー
ダ95でデコードされ、前記マクロ命令OP0に
固有のマイクロプログラムの先頭番地を生成す
る。この先頭番地はマイクロプログラムシーケ
ンサ97に供給される。 (6) ステツプ(2)が繰返される。(P+2) (7) ステツプ(4)でメモリ読出し要求されたデータ
すなわちマクロ命令OP1がフエツチレジスタ8
7に保持される。 (8) ステツプ(4)が繰返される。 (9) マクロ命令OP0の実行が完了され次のマクロ
命令OP1を実行用レジスタ91へ転送し新しい
マクロ命令が実行される。 (10) ステツプ(8)でメモリ読出し要求されたデー
タ、すなわちマクロ命令OP1のオペランドがフ
エツチレジスタ87に保持される。この値は
ALUへ送られマクロ命令OP1の演算に使われ
る。 次にML命令の実行手順について述べる第11
図に示すメモリマツプのようにマクロ命令メモリ
81のP番地からML命令が書込まれており、
ML命令の第1、第2、第3オペランドで示す
a,b,cの各番地には、それぞれOPl,OPm,
OPnというマクロ命令が書込まれているものとす
る。又P+4番地以降は、ML命令に続くマクロ
命令OP2,OP3,OP4,………が順次実行される
ものとする。上記したようにマクロ命令が書込ま
れているときの実行手順を第12図a乃至第12
図mに示すタイミングチヤートを参照して詳細に
説明する。 (1) ML命令の手前で実行されるマクロ命令の実
行中にML命令の読出し要求を行う。すなわち
プログラムカウンタ103の内容Pをアドレス
レジスタ83へ転送しメモリの読出し要求を行
う (2) 前記プログラムカウンタ103の内容はイン
クリメンタ113で1だけインクリメントされ
(P+1となる)、切換器111を介して再びプ
ログラムカウンタ103に保持される。 (3) ステツプ(1)で要求したデータはマクロ命令メ
モリ81から読出され、メモリデータバス85
を経由してフエツチレジスタ87に保持され
る、前記フエツチレジスタ87に保持されたデ
ータはデコーダ93でデコードされ、ML命令
であるか否かがチエツクされるML命令である
と判定されると、アドレス/命令プリフエツチ
制御回路115へ起動要求が出される(起動要
求されたアドレス/命令プリフエツチ制御回路
の動作は後述する) (4) プログラムカウンタ103の内容(P+1)
をアドレスレジスタ83へ移し次のデータの読
出し要求が行われる マクロ命令メモリ81から読出された値a
(ML命令の第1オペランド)はアドレス/命令
プリフエツチ制御回路115の働きによつてデー
タレジスタ117に保持される (5) ステツプ(3)でML命令であると判断される
と、プログラムカウンタ103の内容はインク
リメンタ113で3だけインクリメントされる
(P+4となる)、これによつてプログラムカウ
ンタ103が指示する番地はML命令の次のマ
クロ命令OP2となる (6) マクロ命令OP2の読出しを行うため、プログ
ラムカウンタ103の内容をアドレスレジスタ
83へ転送し、メモリ読出し要求が行われる、
ML命令の第2、第3オペランドの読出しはア
ドレス/命令プリフエツチ制御回路115で行
われるため、ここでの処理は行われない (7) ステツプ(2)が繰返される (8) ステツプ(6)でマクロ命令メモリ81に要求し
たデータはメモリデータバス85を介してフエ
ツチレジスタ87に保持される。前記フエツチ
レジスタ87に保持された新しいマクロ命令
OP2はステツプ(3)と同様にデコーダ93でデコ
ードされML命令であるかどうかチエツクされ
る (9) 前記フエツチレジスタ87に保持されている
マクロ命令OP2は実行用レジスタ91に保持さ
れる。実行用レジスタ91の内容はML命令の
1つ手前の命令からマクロ命令OP2に変わり、
ML命令のものは実行用レジスタ91に保持さ
れない 次にML命令の機能を実現するアドレス/命令
プリフエツチ制御回路115について説明する。 デコーダ93においてML命令であると判定さ
れると、第13図に示すアドレス/命令プリフエ
ツチ制御回路のカウンタ131にクリア信号
CLRが供給される。このカウンタ131の動作
はANDゲート135の出力によつて制御され
る、カウンタ131へROM137の特定の番地
を指示する働きを有する。すなわち前記カウンタ
131にはANDゲート135を介してクロツク
信号が供給され、このクロツク信号に応答してそ
の内容を1づつインクリメントする。又前記
ROM137はML命令の機能を実現するように各
種制御信号を発生するためのプログラムを記憶す
るメモリである。 ROM137から読出された値は、ROM出力ラ
ツチ回路139で保持され、このラツチ回路13
9から各種制御信号が分配される。すなわち
ROM137に格納されているプログラムをカウ
ンタ131の働きによつて0番地から実行し、
ML命令のオペランド読出しがすべて完了すると
プログラムの実行が停止される。プログラムの実
行はクロツク信号CLOCKの周期で行われる。メ
モリアドレスレジスタ141はプログラムカウン
タ103をソースとしてML命令の第1、第2、
第3オペランドのアドレスを指示するために用い
る。セレクタ143はマクロ命令メモリ81から
読出すべき番地を指示するソースと切換える働き
をもち、ソースとしてはメモリアドレスレジスタ
141、Aレジスタ119、Bレジスタ121、
Cレジスタスタツク123がある。この切換は信
号SEによつて行われる。マクロ命令メモリ81
に対して読出し要求を言うときは、セレクタ14
3で選択されたソースの値すなわち番地を出力バ
ツフア145を介してメモリアドレスバス106
へ送出すると同時にメモリ読出し要求信号RDRQ
を送出する。メモリアドレスバス109に送出さ
れた値はアドレスレジスタ83に転送され、マク
ロ命令メモリ81の当該番地の内容が読出され
る。読出された値はメモリデータバス85へ送出
され、データレジスタ117に保持される。これ
によつてレデイ信号RDYが前記ANDゲート13
5に送られ、カウンタ131の動作が許可状態と
なる。前記レデイ信号RDYの働きは、ROM13
7に格納されたプログラムの実行をマクロ命令メ
モリ81からのメモリ読出し完了迄待つための制
御に使われる。レデイ信号RDYによつてカウン
タ124の動作が許可状態になると、クロツク信
号CLOCKに従つてカウンタ131の内容は1だ
けインクリメントされる。前記マクロ命令メモリ
81から読出され、前記データレジスタ117に
保持された値はROM出力ラツチ回路139から
出力された許可信号ENAによつてAレジスタ1
19、Bレジスタ121、又はCレジスタスタツ
ク123のいづれかに格納される。すなわち各々
のレジスタにはML命令の第1、第2及び第3オ
ペランドの値が格納される。Aレジスタ119、
Bレジスタ121、Cレジスタスタツク123に
格納された値はマクロ命令メモリ81に対する番
地情報が入つたことになる。これらの番地のマク
ロ命令もアドレス/命令プリフエツチ制御回路1
15で前記マクロ命令メモリ81から読出され
る。Aレジスタ119の内容で指定されるマクロ
命令メモリ81の読出しも第1オペランドの値a
の読出しと同様である。すなわちROM出力ラツ
チ回路139は信号SEによつてセレクタ143
のソースをAレジスタ119にし、出力許可信号
OEによつて出力バツフア145を出力許可状態
にする。同時にメモリ読出し要求信号RDRQによ
つてマクロ命令メモリ81に対してメモリ読出し
要求を行う。この結果Aレジスタ119の内容は
メモリアドレスバス109を介してアドレスレジ
スタ83へ送られる。マクロ命令メモリ81から
読出された値は前述した読出しと同様にデータレ
ジスタ117がに保持される。第13図には図示
していないがデータレジスタ117に保持された
値はROM出力ラツチ回路139から出力される
許可信号ENAによつて命令レジスタ125,1
27,129のいづれかに格納される。以上の動
作がすべて完了するとフリツプフロツプ147の
出力DTEは“1”となりML命令のオペランド読
出しが完了したことを指示する。 第1のデコーダ93からの起動要求に対しML
命令のオペランド読出しは次の通りである。なお
この動作のタイミングは第12図に示すタイミン
グチヤートに基づいている。 プログラムカウンタ103の内容をメモリア
ドレスレジスタ141へロードする すでに述べたML命令の実行手順においてス
テツプ(4)のマクロ命令メモリ81からの読出し
データをデータレジスタ117に保持する データレジスタ117に保持されている値を
Aレジスタにロードする Aレジスタ119の内容を出力バツフア14
5を介してメモリアドレスバス109へ送出
し、マクロ命令メモリ81から読出し要求を行
う メモリアドレスレジスタ141の内容を1だ
けインクリメントする ステツプでマクロ命令メモリ81から読出
され、データレジスタ117に保持された値
(マクロ命令OPl)を命令レジスタ125へ格
納する メモリアドレスレジスタ141の内容を出力
バツフア145を介してメモリアドレスバス1
09へ送出しマクロ命令メモリ81に対して読
出し要求を行う マクロ命令メモリ81から読出され、データ
レジスタ117に保持されていた値bをBレジ
スタ121に格納する Bレジスタ121の内容を出力バツフア14
5を介してメモリアドレスバス109へ送出
し、マクロ命令メモリ81に対して読出し要求
を行う メモリアドレスレジスタ141の内容を1だ
けインクリメントする ステツプでマクロ命令メモリ81から読出
され、データレジスタ117に保持された値
(マクロ命令OPm)を命令レジスタ127に格
納する メモリアドレスレジスタ141の内容を出力
バツフア145を介してメモリアドレスバス1
09に送出しマクロ命令メモリ81に対して読
出し要求を行う マクロ命令メモリ81から読出され、データ
レジスタ117に保持された値CをCレジスタ
スタツク123に格納する 前記Cレジスタスタツク123に格納した値
を出力バツフア145を介してメモリアドレス
バス109へ送出しマクロ命令メモリ81から
読出し要求を行う マクロ命令メモリ81から読出され、データ
レジスタ117に保持された値(マクロ命令
OPn)を命令レジスタスタツク129に格納す
る 次にBTC命令、BFC命令について詳細に説明
する。BTC命令、BFC命令はいずれも分岐命令
で、分岐先の番地はML命令の第1オペランド、
又は第2オペランドで示す番地である。両者の命
令の異る点はこれらのマクロ命令に含まれるマス
クビツトとALUの演算結果で示されるフラツグ
の条件判定の方法である。ここではBTC命令に
ついて説明する。 第14図に示すように、マクロ命令メモリ81
のP番地にBTC命令が書込まれていたときの動
作を第15図a乃至kに示すタイミングチヤート
に従つて詳細に説明する (1) BTC命令の1ステツプ前で実行されるマク
ロ命令の実行中にBTC命令の読出し要求を行
う。すなわちプログラムカウンタ103の内容
をメモリアドレスバス109を経由してアドレ
スレジスタ83へ送出しメモリ読出し要求を行
う (2) プログラムカウンタ103の内容がインクリ
メンタ113により1だけインクリメントされ
前記プログラムカウンタ103に保持される (3) ステツプ1で要求したデータがマクロ命令メ
モリ81から読出され、メモリデータバス85
を経由してフエツチレジスタ87にロードされ
る。フエツチレジスタ87に保持されたBTC
命令はデコーダ93でデコードされML命令で
あるかどうかチエツクされる (4) プログラムカウンタ103の内容をアドレス
レジスタ83へ転送し次の命令の読出し要求を
マクロ命令メモリ81に対して行う (5) フエツチレジスタ87の内容は実行用レジス
タ91へ転送される。実行用レジスタ91の内
容すなわちBTC命令固有のマイクロプログラ
ムの先頭番地がマイクロプログラムシーケンサ
97に供給される (6) 実行用レジスタ91に保持されているBTC
命令のマスクビツトはALUへ送られる。 BTC命令の手前のマクロ命令の実行結果で
定まるフラツグと条件判定がされる さらに現在実行中のBTC命令より手前で実
行されたML命令によつてこの命令の第1、第
2、第3オペランドの値がAレジスタ119、
Bレジスタ121、Cレジスタスタツク123
及び命令レジスタ125,127,129に格
納されているかどうかチエツクする、メモリア
ドレスバス109やメモリデータバス85がバ
スビジーの状態のため、これらのレジスタに格
納されていないときは、格納が完了する迄この
ステツプで待ち状態となり、データが格納済み
であれば以下の動作を行う 条件判定の結果がF=1であればAレジスタ
119の内容(値a)はアドレス/命令プリフ
エツチ制御回路115、内部バス149、及び
切換器111を経由してプログラムカウンタ1
03へ保持される。 (7) プログラムカウンタ103の内容は1だけイ
ンクリメントされ分岐先のマクロ命令の次の番
地を指示する (8) プログラムカウンタ103の内容をアドレス
レジスタ83へ転送しマクロ命令メモリ81に
対しマクロ命令OP1のメモリの読出し要求を行
う (9) ステツプ(6)で条件判定の結果がF=1である
から、命令レジスタ125の内容(マクロ命令
OPl)がセレクタ89を経由して実行用レジス
タ91へ転送される。実行用レジスタ91の内
容すなわちマクロ命令OPl固有のマイクロプロ
グラムの先頭番地がマイクロプログラムシーケ
ンサ97に供給される。この結果BTC命令の
実行を完了し、マクロ命令OPlの実行に入る。 以上述べたのはBTC命令において条件判定
結果がF=1の場合であるが、F=0の場合は
ステツプ(6)でBレジスタの内容(値はb)がプ
ログラムカウンタ103に移され、かつステツ
プ(9)で命令レジスタ127の内容(マクロ命令
OPm)が実行用レジスタ91に移される点が
異るのみで他は全く同一のことを行う 次にEND命令の働きについて述べる END命令も分岐命令の1つで分岐先番地はML
命令の第3オペランドで示す番地である。第16
図に示すようにマクロ命令メモリ81のP番地に
END命令が書込まれているときの動作を第17
図に示すタイミングチヤートに従つて詳細に説明
する (1) END命令の手前で実行されるマクロ命令の
実行中にEND命令の読出し要求を行う。すな
わちプログラムカウンタ103の内容をアドレ
スレジスタ83へ転送しメモリ読出し要求を行
う (2) プログラムカウンタ103の内容はインクリ
メンタ113で1だけインクリメントされ、切
換器111を経由して再びプログラムカウンタ
103に保持される。 (3) ステツプ(1)で要求したデータはマクロ命令メ
モリ81から読出され、メモリデータバス85
を経由してフエツチレジスタ87にロードされ
る。フエツチレジスタ87に保持されたEND
命令はデコーダ93でデコードされML命令で
あるかどうかチエツクされる。 (4) プログラムカウンタ103の内容をアドレス
レジスタ83へ移し次の命令の読出し要求を行
う 但し読出された値はすでにBTC命令の動作
で述べた如くフエツチレジスタ87に保持され
るが使用されない。 (5) フエツチレジスタ89の内容は実行用レジス
タ91へ転送される。実行用レジスタ91の内
容すなわちEND命令固有のマイクロプログラ
ムの先頭番地がマイクロプログラムシーケンサ
97に供給される。 (6) END命令の実行によつてCレジスタスタツ
ク123をポツプアツプして取出された値をア
ドレス/命令プリフエツチ制御回路115、内
部バス149、切換器111を経由してプログ
ラムカウンタ103に保持される。 (7) プログラムカウンタ103の内容は1だけイ
ンクリメントされ、分岐先のマクロ命令OPm
の次の番地C+1を指示する。 (8) プログラムカウンタ103の内容をアドレス
レジスタ83へ移しマクロ命令メモリ81に対
しメモリ読出し要求を行う (9) 命令レジスタスタツク129をポツプアツプ
して取出された値をセレクタ89を経由して実
行レジスタ91に保持する。実行用レジスタ9
1の内容すなわちマクロ命令OPm固有のマイ
クロプログラムの先頭番地がマイクロプログラ
ムシーケンサ97に供給される。これでEND
命令の実行が完了され、マクロ命令OPnの実行
に入る。 この発明によれば、分岐条件に対応した分岐先
のアドレスを複数のレジスタにセツトする命令を
デコードし分岐命令を実行する以前に、分岐先の
命令をレジスタへプリフエツチする構成としたの
で、制御が簡単なパイプラインレジスタ方式の演
算制御装置が得られる。又制御が簡単であるため
論理素子数、回路数を低減化することができると
共にコストダウンを計ることができる。
におけるデータのプリフエツチ動作については本
発明と関係無いのでその説明は省略する。本発明
は、パイプラインレジスタ方式における命令のプ
リフエツチ動作を行う場合のブランチトリー考慮
方式に関する。ブランチトリーとは命令列の中に
判定命令が含まれているときその命令の後に並ぶ
命令列が複数に分れるので、その枝のことを意味
している。判定命令が実行されるとその判定に従
つてブランチトリーのひとつが選ばれ他は不必要
となる。ブランチトリー考慮型はプリフエツチに
際して判定命令後の全ブランチトリーをプリフエ
ツチする方法であり、ブランチトリー非考慮型は
いずれかひとつのブランチトリーとかプリフエツ
チしないという方法である。 後者の方法ではプリフエツチされたブランチト
リーが当らなかつた場合には他のブランチトリー
を再びフエツチせねばならず、プリフエツチの効
果が減少する。大型電子計算機ではブランチトリ
ー考慮型がよく用いられるが中形以下の電子計算
機ではコスト等の点で非考慮型が一般的に用いら
れる。 ここでパイプライン制御の一般的な実現法につ
いて述べる。 パイプラインということばは、処理時間tの論
理ユニツトLi(i=1、2、………、n)を縦に
つないだものを指し、これに入力端からt時間ご
とにデータ(命令を含む)をつぎつぎに入れてや
り、それぞれに各Liによるn段の処理をほどこし
た後出力端からt時間ごとにつぎつぎにデータを
取り出す処理方式をパイプライン制御とよんでい
る。そこで高速化をはかるには第1図のように各
命令の処理ステツプをオーバーラツプさせて命令
の並行処理をはかる必要がでてくる。これがパイ
プライン制御方式である。なお同図においてL1
は命令の読出しステツプを、L2の命令の解読ス
テツプを、L3はアドレス計算ステツプを、L4は
オペランド読出しステツプを、L5は命令実行の
ステツプを表わすものとする。 パイプライン制御による演算制御装置は一般に
第2図に様に表わせる。これらのユニツトの動作
関係を第3図に示す。この図における動作手順は
次の通りである。 PよりBに命令読出し要求を出す。 Bは要求された命令がバツフアメモリ
(BM)にあればそれをPに送る。なければF
に要求を出しPに送る。 Pでは命令をデコードしてオペランドのアド
レス計算をAに要求する。 AよりアドレスをBに送りデータを読出す。 PよりEに指令を出す。 結果はEからの指令でBまたはFを経由して
格納する。 以上の処理の流れを詳細なブロツク図の形で示
すと第4図のようになる。同図における動作は次
の通りである。 命令を読出す 第2オペランドのアドレスを計算する 第2オペランドをメモリから読出す 第1ペランドを汎用レジスタから読出す 命令実行の制御 演算 結果の格納 このように一つの命令がいくつかのユニツトを
経由して実行されるわけであるが、パイプライン
制御として実行される場合一つのユニツトにはつ
ぎつぎと命令が入つてくることになる。各ユニツ
トでの処理時間が常に一定ならば理想的なパイプ
ラインを組むことができる。しかしながら実際の
命令処理では種々の複雑な処理があるためいわゆ
る“パイプラインの乱れ”が生ずる。これは例え
ば条件付ジヤンプ命令が現われた場合である。パ
イプラインの乱れをできるだけ避けるためにいく
つかのユニツトにバツフアレジスタを置くことが
行われている。すなわちパイプラインの途中に情
報を一時的に蓄えて入つてくるデータが一様でな
い場合も出ていくデータを一様にしようという考
えである。バツフアレジスタの使い方として第5
図にも示したようにE(Execution Control)ユ
ニツトには4つ分の操作をためておくオペレーシ
ヨンスタツクレジスタ(OSR)と4つのデータ
をためておくためのオペランド・バツフア・レジ
スタ(OBR)が用意されている。これらは時間
のかる操作あるいはメモリから出てきたデータが
続いたようなときにもなるべくパイプラインの中
にすき間ができないようにするための仕掛けであ
る。 一方第6図にP(Program Control)ユニツト
にも5つの命令バツフアレジスタが用意されてい
る。現在実行中の命令の流れ(正常シーケンスと
呼ぶ)で、できるだけ先の命令を読出すためのバ
ツフアレジスタと、ジヤンプ命令が現われたとき
にジヤンプ先の命令(分岐先シーケンスと呼ぶ)
を読出すためのバツフア・レジスタとがある。5
個のバツフアレジスタのうち2個は正常シーケン
ス用、2個は分岐先シーケンス用に残りの1個
は、先取り命令がバツフア・メモリから送られた
ときに目的のバツフアレジスタが使用中である場
合、それを一時的に保存するためのレジスタであ
る。このようにパイプライン制御を行なう大型計
算機においては多数のハードウエアを用いて複雑
な制御を行つている。 この発明は上記実情に鑑みてなされたものでそ
の目的とするところは小形計算機やマイクロコン
ピユータ等においてもブランチトリー考慮方式を
採用できるように簡易プリフエツチ方式を採用し
た演算制御装置を提供することを目的とする。 以下この発明の一実施例につき図面を参照して
説明する。 この発明の一実施例の構成を説明する前にこの
構成を含む計算機システムに使用されるマクロ命
令群について説明する。このマクロ命令群につい
ては同一出願人によつて出願された特願昭54−
107643号、米国出願(U.S.serial No.919297)に
詳細に説明されているが、その概略について第7
図を参照して以下述べる。この場合には第7図に
示すように従来の演算制御装置に分岐アドレスを
格納するAレジスタ18、Bレジスタ19の2種
類のレジスタと、プツシユダウンスタツク16を
新たに設け、さらにこれらのエレメントを制御し
やすい回路を構成して機械語レベルでストラクチ
ヤードプログラムの実行を真に効率的にする演算
制御装置を得ることを目的としている。この目的
を達成するために4つの命令を与える手段を有し
ている。 (1) プログラムカウタから所定のアドレスを指定
させ主メモリに記憶されているプログラムの第
1、第2、第3ブロツクの実行先頭番地である
データA,B,Cを読出し、これらをそれぞれ
第1レジスタ(Aレジスタ)、第2レジスタ
(Bレジスタ)、プツシユダウンスタツクに格納
する命令(ML命令)を与える手段。 (2) 演算結果に応じて前記第1レジスタ又は第2
レジスタの内容を選択的に前記プログラムカウ
ンタに格納する真偽チエツク命令(BTC命
令、BFC命令)を与える手段。 (3) 前記プツシユダウンスタツクをポツプアツプ
してその内容を前記プログラムカウンタに格納
する命令(END命令)を与える手段。 これらの命令の実行はマイクロプログラムと前
述した回路によつて実現される。 以下4つのマクロ命令群について説明する。 ML A,B,C BTC M0,M1,M2,M3 BFC M0,M1,M2,M3 END AL A,B,C 値AをAレジスタに格納する 値BをBレジスタに格納する 値Cをフアーストイン・ラストアウト型スタ
ツクCへプツシユする BTC M0,M1,M2,M3 条件Fの値が1ならばAレジスタに格納され
ている値の番地へブランチする。 条件Fの値が1でないならば、Bレジスタに
格納されている値の番地へブランチする。 但し条件Fは、 F=(M0∧C)∨(M1∧V)∨(M2∧
N)∨(M3∧Z)で求められ、値C、V、
N、Zの値はBTC又はBFC命令の直前に行な
つたALUにおける演算結果に対してもとめら
れる。∧記号は論理積を示し、∨記号を論理和
を示している。又Cはキヤリーフラツグ、Vは
オーバーフローフラツグ、Nはネガテイブフラ
ツグ、Zはゼロフラツグを示している。 BFC M0,M1,M2,M3 条件Fの値がOならば、Aレジスタに格納さ
れている値の番地へブランチする。 END フアーストインラストアウト型スタツクCを
ポツプアツプする。取出した値をプログラムカ
ウンタへ移しかえてこの値の番地へプログラム
が分岐する。 上記のBTC、BFC命令の前には必らず判定条
件を作り出すような数組の命令が置かれるはずで
ある。ML命令はこれら数命令のさらに前に挿入
されねばならない。ML命令は従つてBTC又は
BFCのような判定を行う命令よりも数名令だけ
前に実行することによつてこれら判定命令の実行
後にブランチするアドレスを2個(AとB)と、
ブランチした後、再びもとの命令列へ帰つてくる
ときの帰り番地CとをBTC命令又はBFC命令の
実行の前に演算制御装置に通知することができ
る。 事前通報を目的とするこのような命令は必ずし
も上に示したML A,B,Cのようなものであ
る必要はない。種々の変形された形式の事前報命
令が可能である。この実施例においては、種々の
事前通報命令の代表としてML A,B,Cとい
う命令を取り上げている。マイクロプログラム中
にML A,B,Cという命令を挿入した場合、
そのあとに配置される判定命令は前記BTC、
BFC命令のように簡単化される。従来の判定命
令は判定命令の中にA,Bのようなブランチ先ア
ドレスを含まねばならなかつたので判定命令が長
いビツト列を必要とした。従つてこの発明におい
てML A,B,Cの命令を挿入してもマクロ命
令メモリサイズの増加に直結結びつくわけではな
い。ML命令、BTC命令、BFC命令、END命令の
各命令の作用をより明確にするために、簡単なプ
ログラムを考える。今2数の値を比較して小さい
方を取出すプログラムについて考えてみる。この
場合2数がそれぞれP、Qというアドレスをもつ
たメモリロケーシヨンに格納されており、小さい
方の数をMINというアドレスのメモリロケーシヨ
ンへ格納するものとする。 従来のマクロ命令を用いると、このプログラム
は次のようになる。 プログラム−1 LH 3,P レジスタ3へ片方の数を入れる SH 3,Q 他方の数を上の数から引算する BM A 結果がマイナスであればAへジヤンプ
する B LH 3,Q 小さい方の数をレジスタ3へ
入れる B C Cへジヤンプする A LH 3,P 小さい方の数をレジスタ3へ
入れる B C Cへジヤンプする C STH 3、MIN 小さい方の数をMINへ格 〓 納する これをML命令、BTC命令、BFC命令、END命
令の各命令を用いて書くと次のようになる。 プログラム−2 ML A,B,C ブランチ先事前通報命令 LH 3,P レジスタ3へ片方の数を入れる SH 3,Q 他方の数を上の数から引算する BTC 0,0,1,0 ネガテイブフラツグが
trueならAへ、falseならB
へそれぞれ分岐する A LH 3,P trueのときのブランチ先 END Cへジヤンプする B LH 3,Q falseのときのブランチ先 END Cへジヤンプする C STH 3、MIN 小さい方の数をMINへ 〓 格納する 上記例からわかるようにプログラム−1の場合
すなわち従来のマクロ命令を用いてプログラミン
グした場合必要なメモリ容量は32バイトであり、
ML命令、BTC命令、BFC命令、END命令を用い
てプログラミングした場合の必要なメモリ容量は
34バイトである。従つて本発明で使用するマクロ
命令の場合は2バイト余計に必要となるが、この
程度の増加は最近の集積密度の向上に伴うICメ
モリの価格の低下を考えると実質的に無視できる
ものである。 第8図はこの発明の一実施例を示したものであ
る。初めに計算機のユーザが使用する命令のこと
をマイクロ命令と区別するためにマクロ命令と呼
ぶことにする。 マクロ命令およびそれらに附随したデータはマ
クロ命令メモリ81に記憶されている。アドレス
レジスタ83に設定されたアドレスに記憶されれ
マクロ命令又はデータはメモリデータバス85を
介してフエツチレジスタ87にフエツチされさら
にその後切換スイツチ89を介して実行用レジス
タ91にフエツチされる。この場合前記フエツチ
レジスタ87へマクロ命令又はデータがフエツチ
される動作と実行用レジスタ91へマクロ命令が
フエツチされALUが実行する動作は並行して行
なわれる。(前記フエツチレジスタ87と実行用
レジスタ91を合せてパイプラインレジスタと呼
ぶ場合もある)。前記マクロ命令メモリ81から
フエツチレジスタ87へ読出された命令は第1の
デコーダ93へ供給される。前記第1のデコーダ
93は供給されたマクロ命令がML命令かどうか
をチエツクする。もしML命令でなければ実行用
レジスタ91の内容の実行が終了する迄フエツチ
レジスタ87の内容は保持される。実行用レジス
タ91の内容がALUによつて処理された後は、
フエツチ用レジスタ87の内容は実行用レジスタ
91に移され第2のデコーダ95によつて解読さ
れる。マイクロプログラムシーケンサ97は第2
のデコーダ95の解読結果にもとづいてマイクロ
プログラムROM99に格納されたマイクロプロ
グラムの実行を制御する。前記マイクロプログラ
ムROM99から出力されたマイクロ命令は命令
レジスタ101にロードされ、マイクロプログラ
ムシーケンサ97の指示に従つて信号をALU又
は論理回路の各部へ分配する。フエツチレジスタ
87へフエツチする命令又はデータのマクロ命令
メモリ81内におけるロケーシヨンアドレスはア
ドレスレジスタ83によつて指示される。すなわ
ちプログラムカウンタ103中にセツトされたア
ドレス値はアドレスコントローラ107を介して
メモリアドレスバス109上に出力される。バス
コントローラ105はこのメモリアドレスバス1
09上に出力されたアドレス値をアドレスレジス
タ83に供給する。前記プログラムカウンタ10
3は分岐命令がない限り、フエツチレジスタ87
の内容が実行用レジスタ91に送られる度に1づ
つインクリメントされる。仮に分岐命令が前記
ALUによつて実行されると、分岐アドレスが
ALUから切換器111を介してプログラムカウ
ンタ103に供給される。 他方前記第1のデコーダ93が供給された命令
がML命令であると判断すると、インクリメンタ
113は前記第1のデコーダ93からの指令によ
りプログラムカウンタ103の内容を+3インク
リメントする、 但しこの場合マクロ命令メモリ81はバイト
(8ビツト)を記憶単位とし、アドレスが附され
ているものとする。又命令やデータはバイトに区
切つて記憶されている。アドレス値が8ビツトで
構成され、命令のオペレーシヨンコードも8ビツ
トで構成されているとすると、ML A,B,C
という命令は4バイトで構成される。上記の場合
ML命令のオペレーシヨンコードは実行用レジス
タ91へは供給されない。アドレス/命令プリフ
エツチ制御回路115は前記第1のデコーダ93
からの指示によりML命令のオペランドを読出す
ようにバスコントローラ105に指示する。バス
コントローラ105はマクロ命令メモリ81から
ML命令のオペランドA,B,Cをメモリデータ
バス85上に読出しデータレジスタ117を介し
てそれぞれAレジスタ119、Bレジスタ121
及びCレジスタスタツク123へロードする。前
記Cレジスタスタツク123はフアーストインラ
ストアウトのスタツクである。更にアドレス/命
令プリフエツチ制御回路115は前記Aレジスタ
119、Bレジスタ121及びCレジスタスタツ
ク123に格納されたアドレスにより定義された
マクロ命令メモリ81のロケーシヨンの内容を読
出し、前記データレジスタ117を介して命令レ
ジスタ125、命令レジスタ127及び命令レジ
スタスタツク129にロードする。命令レジスタ
スタツク129は前記Cレジスタスタツク123
と同様フアーストインラストアウト方式である。 以上の動作でML命令のあとに必らず存在する
判定命令(上記BTC命令、BFC命令etc)がALU
で実行されたとき、ブランチする先の命令が前記
命令レジスタ125,127に準備され戻り先の
命令が前記命令レジスタスタツク129に事前に
準備されたことになる。このようにプリフエツチ
動作はプログラム−2の例ではML命令とBTC命
令との間に介在する2命令がALUで実行されて
いる間に並例して行われる。プログラム−2の例
では命令レジスタ125にLHが、命令レジスタ
127にもLHが、命令レジスタスタツク129
にはSTHがそれぞれロードされる。又前記Aレ
ジスタ119、Bレジスタ121、及びCレジス
タスタツク123にはそれぞれオペランドA,
B,Cの値が入る。判定命令(上記BTC命令又
はBFC命令等)が実行されると、その結果命令
レジスタ125,127のいずれかが切換器89
で選択されて実行用レジスタ91のロードされ
る。例えば命令レジスタ125の内容が選ばれた
場合には、この内容が実行用レジスタ91にロー
ドされると同時にAレジスタ119の内容がアド
レス/命令プリフエツチ制御回路115、切換器
111を介してプログラムカウンタ103へ入れ
られ、1だけインクリメントされる。この値は次
にマクロ命令メモリ81からフエツチするための
アドレスとなる。ALUによりEND命令が実行さ
れると、前記実行用レジスタ91にはフエツチレ
ジスタ87の内容を入れるのではなく、命令レジ
スタスタツク129をポツプアツプしてとり出さ
れた内容を入れる。このときフエツチレジスタ8
7に入つていた内容は無視される。プログラムカ
ウンタ103にはCレジスタスタツク123をポ
ツプアツプしてとり出された内容が入れられ、さ
らに1だけインクリメントされる。 次にこの発明による演算制御回路におけるマク
ロ命令の実行手順について説明する。 今第9図のメモリマツプに示すようにマクロ命
令メモリ81のP番地に1バイト命令OP0、P+
1番地及びP+2番地に2バイト命令OP1、P+
3番地及びP+4番地にそれぞれ1バイト命令
OP2,OP3が書込まれているものとする、この場
合のマクロ命令の実行処理手順は以下のようにな
る。 (1) マクロ命令OP0の1ステツプ前のマクロ命令
を実行中に前記マクロ命令OP0の読出し要求が
行われる。すなわちプログラムカウンタ103
の内容がメモリアドレスバス109を経由して
アドレスレジスタ83へ送出され、メモリ読出
し要求が行われる。 (2) プログラムカウンタ103の内容はインクリ
メンタ113で1だけインクリメントされ、
(P+1)切換器111を介して再びプログラ
ムカウンタ103に保持される。 (3) ステツプ1で読出し要求が成されたマクロ命
令OP0は前記マクロ命令メモリ81から読出さ
れメモリデータバス85を経由してフエツチレ
ジスタ87に保持される。前記フエツチレジス
タ87に保持されたマクロ命令OP0はデコーダ
93でデコードされML命令であるかどうかチ
エツクされる (4) プログラムカウンタ103の内容(P+1)
をアドレスレジスタ83へ移し次の命令の読出
し要求を行う (5) ステツプ(3)でML命令以外の命令であると判
定されると、フエツチレジスタ87の内容は切
換器89を介して実行用レジスタ91へ転送さ
れる。この実行用レジスタ91の内容はデコー
ダ95でデコードされ、前記マクロ命令OP0に
固有のマイクロプログラムの先頭番地を生成す
る。この先頭番地はマイクロプログラムシーケ
ンサ97に供給される。 (6) ステツプ(2)が繰返される。(P+2) (7) ステツプ(4)でメモリ読出し要求されたデータ
すなわちマクロ命令OP1がフエツチレジスタ8
7に保持される。 (8) ステツプ(4)が繰返される。 (9) マクロ命令OP0の実行が完了され次のマクロ
命令OP1を実行用レジスタ91へ転送し新しい
マクロ命令が実行される。 (10) ステツプ(8)でメモリ読出し要求されたデー
タ、すなわちマクロ命令OP1のオペランドがフ
エツチレジスタ87に保持される。この値は
ALUへ送られマクロ命令OP1の演算に使われ
る。 次にML命令の実行手順について述べる第11
図に示すメモリマツプのようにマクロ命令メモリ
81のP番地からML命令が書込まれており、
ML命令の第1、第2、第3オペランドで示す
a,b,cの各番地には、それぞれOPl,OPm,
OPnというマクロ命令が書込まれているものとす
る。又P+4番地以降は、ML命令に続くマクロ
命令OP2,OP3,OP4,………が順次実行される
ものとする。上記したようにマクロ命令が書込ま
れているときの実行手順を第12図a乃至第12
図mに示すタイミングチヤートを参照して詳細に
説明する。 (1) ML命令の手前で実行されるマクロ命令の実
行中にML命令の読出し要求を行う。すなわち
プログラムカウンタ103の内容Pをアドレス
レジスタ83へ転送しメモリの読出し要求を行
う (2) 前記プログラムカウンタ103の内容はイン
クリメンタ113で1だけインクリメントされ
(P+1となる)、切換器111を介して再びプ
ログラムカウンタ103に保持される。 (3) ステツプ(1)で要求したデータはマクロ命令メ
モリ81から読出され、メモリデータバス85
を経由してフエツチレジスタ87に保持され
る、前記フエツチレジスタ87に保持されたデ
ータはデコーダ93でデコードされ、ML命令
であるか否かがチエツクされるML命令である
と判定されると、アドレス/命令プリフエツチ
制御回路115へ起動要求が出される(起動要
求されたアドレス/命令プリフエツチ制御回路
の動作は後述する) (4) プログラムカウンタ103の内容(P+1)
をアドレスレジスタ83へ移し次のデータの読
出し要求が行われる マクロ命令メモリ81から読出された値a
(ML命令の第1オペランド)はアドレス/命令
プリフエツチ制御回路115の働きによつてデー
タレジスタ117に保持される (5) ステツプ(3)でML命令であると判断される
と、プログラムカウンタ103の内容はインク
リメンタ113で3だけインクリメントされる
(P+4となる)、これによつてプログラムカウ
ンタ103が指示する番地はML命令の次のマ
クロ命令OP2となる (6) マクロ命令OP2の読出しを行うため、プログ
ラムカウンタ103の内容をアドレスレジスタ
83へ転送し、メモリ読出し要求が行われる、
ML命令の第2、第3オペランドの読出しはア
ドレス/命令プリフエツチ制御回路115で行
われるため、ここでの処理は行われない (7) ステツプ(2)が繰返される (8) ステツプ(6)でマクロ命令メモリ81に要求し
たデータはメモリデータバス85を介してフエ
ツチレジスタ87に保持される。前記フエツチ
レジスタ87に保持された新しいマクロ命令
OP2はステツプ(3)と同様にデコーダ93でデコ
ードされML命令であるかどうかチエツクされ
る (9) 前記フエツチレジスタ87に保持されている
マクロ命令OP2は実行用レジスタ91に保持さ
れる。実行用レジスタ91の内容はML命令の
1つ手前の命令からマクロ命令OP2に変わり、
ML命令のものは実行用レジスタ91に保持さ
れない 次にML命令の機能を実現するアドレス/命令
プリフエツチ制御回路115について説明する。 デコーダ93においてML命令であると判定さ
れると、第13図に示すアドレス/命令プリフエ
ツチ制御回路のカウンタ131にクリア信号
CLRが供給される。このカウンタ131の動作
はANDゲート135の出力によつて制御され
る、カウンタ131へROM137の特定の番地
を指示する働きを有する。すなわち前記カウンタ
131にはANDゲート135を介してクロツク
信号が供給され、このクロツク信号に応答してそ
の内容を1づつインクリメントする。又前記
ROM137はML命令の機能を実現するように各
種制御信号を発生するためのプログラムを記憶す
るメモリである。 ROM137から読出された値は、ROM出力ラ
ツチ回路139で保持され、このラツチ回路13
9から各種制御信号が分配される。すなわち
ROM137に格納されているプログラムをカウ
ンタ131の働きによつて0番地から実行し、
ML命令のオペランド読出しがすべて完了すると
プログラムの実行が停止される。プログラムの実
行はクロツク信号CLOCKの周期で行われる。メ
モリアドレスレジスタ141はプログラムカウン
タ103をソースとしてML命令の第1、第2、
第3オペランドのアドレスを指示するために用い
る。セレクタ143はマクロ命令メモリ81から
読出すべき番地を指示するソースと切換える働き
をもち、ソースとしてはメモリアドレスレジスタ
141、Aレジスタ119、Bレジスタ121、
Cレジスタスタツク123がある。この切換は信
号SEによつて行われる。マクロ命令メモリ81
に対して読出し要求を言うときは、セレクタ14
3で選択されたソースの値すなわち番地を出力バ
ツフア145を介してメモリアドレスバス106
へ送出すると同時にメモリ読出し要求信号RDRQ
を送出する。メモリアドレスバス109に送出さ
れた値はアドレスレジスタ83に転送され、マク
ロ命令メモリ81の当該番地の内容が読出され
る。読出された値はメモリデータバス85へ送出
され、データレジスタ117に保持される。これ
によつてレデイ信号RDYが前記ANDゲート13
5に送られ、カウンタ131の動作が許可状態と
なる。前記レデイ信号RDYの働きは、ROM13
7に格納されたプログラムの実行をマクロ命令メ
モリ81からのメモリ読出し完了迄待つための制
御に使われる。レデイ信号RDYによつてカウン
タ124の動作が許可状態になると、クロツク信
号CLOCKに従つてカウンタ131の内容は1だ
けインクリメントされる。前記マクロ命令メモリ
81から読出され、前記データレジスタ117に
保持された値はROM出力ラツチ回路139から
出力された許可信号ENAによつてAレジスタ1
19、Bレジスタ121、又はCレジスタスタツ
ク123のいづれかに格納される。すなわち各々
のレジスタにはML命令の第1、第2及び第3オ
ペランドの値が格納される。Aレジスタ119、
Bレジスタ121、Cレジスタスタツク123に
格納された値はマクロ命令メモリ81に対する番
地情報が入つたことになる。これらの番地のマク
ロ命令もアドレス/命令プリフエツチ制御回路1
15で前記マクロ命令メモリ81から読出され
る。Aレジスタ119の内容で指定されるマクロ
命令メモリ81の読出しも第1オペランドの値a
の読出しと同様である。すなわちROM出力ラツ
チ回路139は信号SEによつてセレクタ143
のソースをAレジスタ119にし、出力許可信号
OEによつて出力バツフア145を出力許可状態
にする。同時にメモリ読出し要求信号RDRQによ
つてマクロ命令メモリ81に対してメモリ読出し
要求を行う。この結果Aレジスタ119の内容は
メモリアドレスバス109を介してアドレスレジ
スタ83へ送られる。マクロ命令メモリ81から
読出された値は前述した読出しと同様にデータレ
ジスタ117がに保持される。第13図には図示
していないがデータレジスタ117に保持された
値はROM出力ラツチ回路139から出力される
許可信号ENAによつて命令レジスタ125,1
27,129のいづれかに格納される。以上の動
作がすべて完了するとフリツプフロツプ147の
出力DTEは“1”となりML命令のオペランド読
出しが完了したことを指示する。 第1のデコーダ93からの起動要求に対しML
命令のオペランド読出しは次の通りである。なお
この動作のタイミングは第12図に示すタイミン
グチヤートに基づいている。 プログラムカウンタ103の内容をメモリア
ドレスレジスタ141へロードする すでに述べたML命令の実行手順においてス
テツプ(4)のマクロ命令メモリ81からの読出し
データをデータレジスタ117に保持する データレジスタ117に保持されている値を
Aレジスタにロードする Aレジスタ119の内容を出力バツフア14
5を介してメモリアドレスバス109へ送出
し、マクロ命令メモリ81から読出し要求を行
う メモリアドレスレジスタ141の内容を1だ
けインクリメントする ステツプでマクロ命令メモリ81から読出
され、データレジスタ117に保持された値
(マクロ命令OPl)を命令レジスタ125へ格
納する メモリアドレスレジスタ141の内容を出力
バツフア145を介してメモリアドレスバス1
09へ送出しマクロ命令メモリ81に対して読
出し要求を行う マクロ命令メモリ81から読出され、データ
レジスタ117に保持されていた値bをBレジ
スタ121に格納する Bレジスタ121の内容を出力バツフア14
5を介してメモリアドレスバス109へ送出
し、マクロ命令メモリ81に対して読出し要求
を行う メモリアドレスレジスタ141の内容を1だ
けインクリメントする ステツプでマクロ命令メモリ81から読出
され、データレジスタ117に保持された値
(マクロ命令OPm)を命令レジスタ127に格
納する メモリアドレスレジスタ141の内容を出力
バツフア145を介してメモリアドレスバス1
09に送出しマクロ命令メモリ81に対して読
出し要求を行う マクロ命令メモリ81から読出され、データ
レジスタ117に保持された値CをCレジスタ
スタツク123に格納する 前記Cレジスタスタツク123に格納した値
を出力バツフア145を介してメモリアドレス
バス109へ送出しマクロ命令メモリ81から
読出し要求を行う マクロ命令メモリ81から読出され、データ
レジスタ117に保持された値(マクロ命令
OPn)を命令レジスタスタツク129に格納す
る 次にBTC命令、BFC命令について詳細に説明
する。BTC命令、BFC命令はいずれも分岐命令
で、分岐先の番地はML命令の第1オペランド、
又は第2オペランドで示す番地である。両者の命
令の異る点はこれらのマクロ命令に含まれるマス
クビツトとALUの演算結果で示されるフラツグ
の条件判定の方法である。ここではBTC命令に
ついて説明する。 第14図に示すように、マクロ命令メモリ81
のP番地にBTC命令が書込まれていたときの動
作を第15図a乃至kに示すタイミングチヤート
に従つて詳細に説明する (1) BTC命令の1ステツプ前で実行されるマク
ロ命令の実行中にBTC命令の読出し要求を行
う。すなわちプログラムカウンタ103の内容
をメモリアドレスバス109を経由してアドレ
スレジスタ83へ送出しメモリ読出し要求を行
う (2) プログラムカウンタ103の内容がインクリ
メンタ113により1だけインクリメントされ
前記プログラムカウンタ103に保持される (3) ステツプ1で要求したデータがマクロ命令メ
モリ81から読出され、メモリデータバス85
を経由してフエツチレジスタ87にロードされ
る。フエツチレジスタ87に保持されたBTC
命令はデコーダ93でデコードされML命令で
あるかどうかチエツクされる (4) プログラムカウンタ103の内容をアドレス
レジスタ83へ転送し次の命令の読出し要求を
マクロ命令メモリ81に対して行う (5) フエツチレジスタ87の内容は実行用レジス
タ91へ転送される。実行用レジスタ91の内
容すなわちBTC命令固有のマイクロプログラ
ムの先頭番地がマイクロプログラムシーケンサ
97に供給される (6) 実行用レジスタ91に保持されているBTC
命令のマスクビツトはALUへ送られる。 BTC命令の手前のマクロ命令の実行結果で
定まるフラツグと条件判定がされる さらに現在実行中のBTC命令より手前で実
行されたML命令によつてこの命令の第1、第
2、第3オペランドの値がAレジスタ119、
Bレジスタ121、Cレジスタスタツク123
及び命令レジスタ125,127,129に格
納されているかどうかチエツクする、メモリア
ドレスバス109やメモリデータバス85がバ
スビジーの状態のため、これらのレジスタに格
納されていないときは、格納が完了する迄この
ステツプで待ち状態となり、データが格納済み
であれば以下の動作を行う 条件判定の結果がF=1であればAレジスタ
119の内容(値a)はアドレス/命令プリフ
エツチ制御回路115、内部バス149、及び
切換器111を経由してプログラムカウンタ1
03へ保持される。 (7) プログラムカウンタ103の内容は1だけイ
ンクリメントされ分岐先のマクロ命令の次の番
地を指示する (8) プログラムカウンタ103の内容をアドレス
レジスタ83へ転送しマクロ命令メモリ81に
対しマクロ命令OP1のメモリの読出し要求を行
う (9) ステツプ(6)で条件判定の結果がF=1である
から、命令レジスタ125の内容(マクロ命令
OPl)がセレクタ89を経由して実行用レジス
タ91へ転送される。実行用レジスタ91の内
容すなわちマクロ命令OPl固有のマイクロプロ
グラムの先頭番地がマイクロプログラムシーケ
ンサ97に供給される。この結果BTC命令の
実行を完了し、マクロ命令OPlの実行に入る。 以上述べたのはBTC命令において条件判定
結果がF=1の場合であるが、F=0の場合は
ステツプ(6)でBレジスタの内容(値はb)がプ
ログラムカウンタ103に移され、かつステツ
プ(9)で命令レジスタ127の内容(マクロ命令
OPm)が実行用レジスタ91に移される点が
異るのみで他は全く同一のことを行う 次にEND命令の働きについて述べる END命令も分岐命令の1つで分岐先番地はML
命令の第3オペランドで示す番地である。第16
図に示すようにマクロ命令メモリ81のP番地に
END命令が書込まれているときの動作を第17
図に示すタイミングチヤートに従つて詳細に説明
する (1) END命令の手前で実行されるマクロ命令の
実行中にEND命令の読出し要求を行う。すな
わちプログラムカウンタ103の内容をアドレ
スレジスタ83へ転送しメモリ読出し要求を行
う (2) プログラムカウンタ103の内容はインクリ
メンタ113で1だけインクリメントされ、切
換器111を経由して再びプログラムカウンタ
103に保持される。 (3) ステツプ(1)で要求したデータはマクロ命令メ
モリ81から読出され、メモリデータバス85
を経由してフエツチレジスタ87にロードされ
る。フエツチレジスタ87に保持されたEND
命令はデコーダ93でデコードされML命令で
あるかどうかチエツクされる。 (4) プログラムカウンタ103の内容をアドレス
レジスタ83へ移し次の命令の読出し要求を行
う 但し読出された値はすでにBTC命令の動作
で述べた如くフエツチレジスタ87に保持され
るが使用されない。 (5) フエツチレジスタ89の内容は実行用レジス
タ91へ転送される。実行用レジスタ91の内
容すなわちEND命令固有のマイクロプログラ
ムの先頭番地がマイクロプログラムシーケンサ
97に供給される。 (6) END命令の実行によつてCレジスタスタツ
ク123をポツプアツプして取出された値をア
ドレス/命令プリフエツチ制御回路115、内
部バス149、切換器111を経由してプログ
ラムカウンタ103に保持される。 (7) プログラムカウンタ103の内容は1だけイ
ンクリメントされ、分岐先のマクロ命令OPm
の次の番地C+1を指示する。 (8) プログラムカウンタ103の内容をアドレス
レジスタ83へ移しマクロ命令メモリ81に対
しメモリ読出し要求を行う (9) 命令レジスタスタツク129をポツプアツプ
して取出された値をセレクタ89を経由して実
行レジスタ91に保持する。実行用レジスタ9
1の内容すなわちマクロ命令OPm固有のマイ
クロプログラムの先頭番地がマイクロプログラ
ムシーケンサ97に供給される。これでEND
命令の実行が完了され、マクロ命令OPnの実行
に入る。 この発明によれば、分岐条件に対応した分岐先
のアドレスを複数のレジスタにセツトする命令を
デコードし分岐命令を実行する以前に、分岐先の
命令をレジスタへプリフエツチする構成としたの
で、制御が簡単なパイプラインレジスタ方式の演
算制御装置が得られる。又制御が簡単であるため
論理素子数、回路数を低減化することができると
共にコストダウンを計ることができる。
第1図は従来技術における理想的なパイプライ
ン制御を説明するための説明図、第2図は従来技
術におけるパイプライン制御のブロツク図、第3
図は第2図に示した各ユニツトの動作を説明する
ための説明図、第4図は従来技術におけるパイプ
ライン制御による演算制御装置において命令を実
行実行の流れを説明するための説明図、第5図は
第4図に示したEユニツト内のバツフア構成を示
す図、第6図は第4図に示したPユニツトの構成
を示す構成図、第7図はこの発明に使用される命
令を説明するために関連出願から引用した演算制
御装置のハードウエアブロツク図、第8図はこの
発明の演算制御装置の一実施例を示すブロツク
図、第9図は第8図に示したマクロ命令メモリに
書込まれたマクロ命令のメモリマツプ、第10図
a乃至gは第9図で示したマクロ命令が順番に実
行されたときのタイミングチヤート、第11図は
マクロ命令メモリに書込まれたML命令を表わす
メモリマツプ、第12図a乃至mは第11図に示
したML命令が実行されて第1、第2及び第3オ
ペランドの値がプリフエツチされる手順と、この
動作と並列して実行されるML命令に続くマクロ
命令群のタイミングチヤート、第13図は第8図
に示したアドレスコントローラの詳細ブロツク
図、第14図はマクロ命令メモリに書込まれてい
るBTC命令を示すメモリマツプ、第15図a乃
至kは第14図に示したBTC命令が実行された
ときのタイミングチヤート、第16図はマクロ命
令メモリに書込まれたEND命令を示すメモリマ
ツプ、第17図a乃至iは、第16図に示した
END命令を実行したときのタイミングチヤート
である。 81……マクロ命令メモリ、83……アドレス
レジスタ、85……メモリデータバス、87……
フエツチレジスタ、89……切換スイツチ、91
……実行用レジスタ、93,95……デコーダ、
97……マイクロプログラムシーケンサ、99…
…マイクロプログラムROM、101……命令レ
ジスタ、103……プログラムカウンタ、105
……バスコントローラ、107……アドレスコン
トローラ、109……メモリアドレスバス、11
1……切換器、113……インクリメンタ、11
5……アドレスコントローラ、117……データ
レジスタ、119,121,123……レジス
タ、125,127,129……命令レジスタ、
131……カウンタ、137……ROM、139
……ROM出力ラツチ回路、141……メモリア
ドレスレジスタ、143……セレクタ、145…
…出力バツフア、147……フリツプフロツプ、
149……内部バス。
ン制御を説明するための説明図、第2図は従来技
術におけるパイプライン制御のブロツク図、第3
図は第2図に示した各ユニツトの動作を説明する
ための説明図、第4図は従来技術におけるパイプ
ライン制御による演算制御装置において命令を実
行実行の流れを説明するための説明図、第5図は
第4図に示したEユニツト内のバツフア構成を示
す図、第6図は第4図に示したPユニツトの構成
を示す構成図、第7図はこの発明に使用される命
令を説明するために関連出願から引用した演算制
御装置のハードウエアブロツク図、第8図はこの
発明の演算制御装置の一実施例を示すブロツク
図、第9図は第8図に示したマクロ命令メモリに
書込まれたマクロ命令のメモリマツプ、第10図
a乃至gは第9図で示したマクロ命令が順番に実
行されたときのタイミングチヤート、第11図は
マクロ命令メモリに書込まれたML命令を表わす
メモリマツプ、第12図a乃至mは第11図に示
したML命令が実行されて第1、第2及び第3オ
ペランドの値がプリフエツチされる手順と、この
動作と並列して実行されるML命令に続くマクロ
命令群のタイミングチヤート、第13図は第8図
に示したアドレスコントローラの詳細ブロツク
図、第14図はマクロ命令メモリに書込まれてい
るBTC命令を示すメモリマツプ、第15図a乃
至kは第14図に示したBTC命令が実行された
ときのタイミングチヤート、第16図はマクロ命
令メモリに書込まれたEND命令を示すメモリマ
ツプ、第17図a乃至iは、第16図に示した
END命令を実行したときのタイミングチヤート
である。 81……マクロ命令メモリ、83……アドレス
レジスタ、85……メモリデータバス、87……
フエツチレジスタ、89……切換スイツチ、91
……実行用レジスタ、93,95……デコーダ、
97……マイクロプログラムシーケンサ、99…
…マイクロプログラムROM、101……命令レ
ジスタ、103……プログラムカウンタ、105
……バスコントローラ、107……アドレスコン
トローラ、109……メモリアドレスバス、11
1……切換器、113……インクリメンタ、11
5……アドレスコントローラ、117……データ
レジスタ、119,121,123……レジス
タ、125,127,129……命令レジスタ、
131……カウンタ、137……ROM、139
……ROM出力ラツチ回路、141……メモリア
ドレスレジスタ、143……セレクタ、145…
…出力バツフア、147……フリツプフロツプ、
149……内部バス。
Claims (1)
- 1 与えられたデータの条件を判定し、その条件
にしたがつて特定の分岐先アドレスに進み、複数
の構造化されたプログラムからなり、マクロ分岐
命令を有するプログラムを実行する分岐考慮型演
算制御装置において、オペランドフイールドに分
岐先アドレスを有する分岐先アドレス設定命令を
有する複数のマクロ命令を格納するメインメモリ
装置と;実行すべき命令のアドレスを指示するプ
ログラムカウンタと;前記プログラムの第1ブロ
ツクのエントリアドレスを格納する第1レジスタ
と前記プログラムの第2ブロツクのエントリアド
レスを格納する第2レジスタと;前記プログラム
の第3ブロツクのエントリアドレスを格納する第
1プツシユダウンスタツクと;前記プログラムの
第1ブロツクのエントリアドレスに対応する、前
記メインメモリ装置のマクロ命令を格納する第3
レジスタと;前記プログラムの第2ブロツクのエ
ントリアドレスに対応する、前記メインメモリ装
置のマクロ命令を格納する第4レジスタと;前記
プログラムの第3ブロツクのエントリアドレスに
対応する、前記メインメモリ装置のマクロ命令を
格納する第2プツシユダウンスタツクと;前記プ
ログラムカウンタに所定のアドレスを指示し、前
記メインメモリ装置からマクロ命令を読み、前記
プログラムの第1、第2および第3ブロツクの内
容である各命令のエントリアドレスを前記メイン
メモリ装置から読込む手段と;前記メインメモリ
装置から読まれたマクロ命令をデコードし、デコ
ードした命令が分岐先アドレス設定命令であると
き、特定信号を出力するデコード手段と;前記デ
コード手段からの特定信号に応答して、前記エン
トリアドレスをそれぞれ、前記第1および第2レ
ジスタ、および前記第1プツシユダウンスタツク
に格納する手段と、前記第1および第2レジスタ
の内容をアンロードすると共に、前記第1プツシ
ユダウンスタツクをポツプアツプし、前記第1レ
ジスタ、第2レジスタおよび第1プツシユダウン
スタツクの内容をシーケンスに従つて前記プログ
ラムカウンタに格納する手段と;前記第1、第2
レジスタ、および第1プツシユダウンスタツクの
内容に対応する、前記メインメモリ装置から、前
記第1、第2、および第3ブロツクの第1、第2
および第3の所定のマクロ命令を読出し、前記第
3レジスタ、第4レジスタおよび第2プツシユダ
ウンスタツクに格納する手段と;前記マクロ命令
が第1の分岐条件を表わす分岐命令であるとき前
記第3のレジスタに格納されたマクロ命令を読出
し、前記マクロ命令が第2の分岐条件を表わす分
岐命令であるとき前記第4のレジスタに格納され
たマクロ命令を読出し、前記マクロ命令がプログ
ラムの終了を表わすEND命令であるとき前記第
2プツシユダウンスタツクに格納されているマク
ロ命令を読出す手段とを備えたことを特徴とする
分岐考慮型演算制御装置。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP5256880A JPS56149646A (en) | 1980-04-21 | 1980-04-21 | Operation controller |
DE3116100A DE3116100C2 (de) | 1980-04-21 | 1981-04-21 | Datenverarbeitungseinheit |
US06/554,760 US4471433A (en) | 1980-04-21 | 1983-11-25 | Branch guess type central processing unit |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP5256880A JPS56149646A (en) | 1980-04-21 | 1980-04-21 | Operation controller |
Publications (2)
Publication Number | Publication Date |
---|---|
JPS56149646A JPS56149646A (en) | 1981-11-19 |
JPS6217252B2 true JPS6217252B2 (ja) | 1987-04-16 |
Family
ID=12918402
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP5256880A Granted JPS56149646A (en) | 1980-04-21 | 1980-04-21 | Operation controller |
Country Status (3)
Country | Link |
---|---|
US (1) | US4471433A (ja) |
JP (1) | JPS56149646A (ja) |
DE (1) | DE3116100C2 (ja) |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0109655B1 (en) * | 1982-11-17 | 1991-07-24 | Nec Corporation | Instruction prefetching device with prediction of a branch destination address |
EP0150177A1 (en) * | 1983-07-11 | 1985-08-07 | Prime Computer, Inc. | Data processing system |
US4764861A (en) * | 1984-02-08 | 1988-08-16 | Nec Corporation | Instruction fpefetching device with prediction of a branch destination for each branch count instruction |
US4742451A (en) * | 1984-05-21 | 1988-05-03 | Digital Equipment Corporation | Instruction prefetch system for conditional branch instruction for central processor unit |
US4825363A (en) * | 1984-12-05 | 1989-04-25 | Honeywell Inc. | Apparatus for modifying microinstructions of a microprogrammed processor |
JPH0769818B2 (ja) * | 1984-10-31 | 1995-07-31 | 株式会社日立製作所 | デ−タ処理装置 |
US4775927A (en) * | 1984-10-31 | 1988-10-04 | International Business Machines Corporation | Processor including fetch operation for branch instruction with control tag |
JPH0789319B2 (ja) * | 1985-04-22 | 1995-09-27 | 株式会社日立製作所 | デ−タ処理装置における先行制御装置 |
JPH0752390B2 (ja) * | 1985-05-07 | 1995-06-05 | 株式会社日立製作所 | 命令処理装置 |
JPS6341932A (ja) * | 1985-08-22 | 1988-02-23 | Nec Corp | 分岐命令処理装置 |
JPH0827716B2 (ja) * | 1985-10-25 | 1996-03-21 | 株式会社日立製作所 | データ処理装置及びデータ処理方法 |
JPH0743648B2 (ja) * | 1985-11-15 | 1995-05-15 | 株式会社日立製作所 | 情報処理装置 |
JPH0740225B2 (ja) * | 1985-12-25 | 1995-05-01 | 日本電気株式会社 | プログラムスキツプ動作制御方式 |
US4991080A (en) * | 1986-03-13 | 1991-02-05 | International Business Machines Corporation | Pipeline processing apparatus for executing instructions in three streams, including branch stream pre-execution processor for pre-executing conditional branch instructions |
JP2565495B2 (ja) * | 1986-08-27 | 1996-12-18 | 株式会社日立製作所 | デ−タ処理システム |
JPS6393038A (ja) * | 1986-10-07 | 1988-04-23 | Mitsubishi Electric Corp | 計算機 |
JP2603626B2 (ja) * | 1987-01-16 | 1997-04-23 | 三菱電機株式会社 | データ処理装置 |
US4991090A (en) * | 1987-05-18 | 1991-02-05 | International Business Machines Corporation | Posting out-of-sequence fetches |
US5134561A (en) * | 1987-07-20 | 1992-07-28 | International Business Machines Corporation | Computer system with logic for writing instruction identifying data into array control lists for precise post-branch recoveries |
US4894772A (en) * | 1987-07-31 | 1990-01-16 | Prime Computer, Inc. | Method and apparatus for qualifying branch cache entries |
JPH0646382B2 (ja) * | 1987-10-05 | 1994-06-15 | 日本電気株式会社 | プリフェッチキュー制御方式 |
US5197136A (en) * | 1987-11-12 | 1993-03-23 | Matsushita Electric Industrial Co., Ltd. | Processing system for branch instruction |
US5247628A (en) * | 1987-11-30 | 1993-09-21 | International Business Machines Corporation | Parallel processor instruction dispatch apparatus with interrupt handler |
US4974155A (en) * | 1988-08-15 | 1990-11-27 | Evans & Sutherland Computer Corp. | Variable delay branch system |
WO1990002995A1 (en) * | 1988-09-01 | 1990-03-22 | Yin Ronald L | An improved modular processor, a computer incorporating same, and a method of operating same |
US5333287A (en) * | 1988-12-21 | 1994-07-26 | International Business Machines Corporation | System for executing microinstruction routines by using hardware to calculate initialization parameters required therefore based upon processor status and control parameters |
US5276824A (en) * | 1990-01-08 | 1994-01-04 | Motorola, Inc. | Data processor having a multi-stage instruction pipe and selection logic responsive to an instruction decoder for selecting one stage of the instruction pipe |
JPH03288228A (ja) * | 1990-04-04 | 1991-12-18 | Koufu Nippon Denki Kk | 情報処理装置 |
US5276825A (en) * | 1991-03-12 | 1994-01-04 | Chips & Technologies, Inc. | Apparatus for quickly determining actual jump addresses by assuming each instruction of a plurality of fetched instructions is a jump instruction |
JPH05173779A (ja) * | 1991-12-25 | 1993-07-13 | Toshiba Corp | デジタル演算集積回路 |
JP2761688B2 (ja) * | 1992-02-07 | 1998-06-04 | 三菱電機株式会社 | データ処理装置 |
JP2786574B2 (ja) * | 1992-05-06 | 1998-08-13 | インターナショナル・ビジネス・マシーンズ・コーポレイション | コンピュータ・システムにおける順不同ロード動作の性能を改善する方法と装置 |
JPH0756892A (ja) * | 1993-08-10 | 1995-03-03 | Fujitsu Ltd | マスク付きベクトル演算器を持つ計算機 |
US7891818B2 (en) | 2006-12-12 | 2011-02-22 | Evans & Sutherland Computer Corporation | System and method for aligning RGB light in a single modulator projector |
US8358317B2 (en) | 2008-05-23 | 2013-01-22 | Evans & Sutherland Computer Corporation | System and method for displaying a planar image on a curved surface |
US8702248B1 (en) | 2008-06-11 | 2014-04-22 | Evans & Sutherland Computer Corporation | Projection method for reducing interpixel gaps on a viewing surface |
US8077378B1 (en) | 2008-11-12 | 2011-12-13 | Evans & Sutherland Computer Corporation | Calibration system and method for light modulation device |
US9641826B1 (en) | 2011-10-06 | 2017-05-02 | Evans & Sutherland Computer Corporation | System and method for displaying distant 3-D stereo on a dome surface |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS513750A (ja) * | 1974-06-28 | 1976-01-13 | Hitachi Ltd | Deetashorisochi |
JPS54107643A (en) * | 1978-02-13 | 1979-08-23 | Toshiba Corp | Operation control method and unit executing structured program |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3401376A (en) * | 1965-11-26 | 1968-09-10 | Burroughs Corp | Central processor |
FR1536616A (fr) * | 1966-09-21 | Ibm | Système de traitement d'instructions avec des perfectionnements pour le branchementet les boucles du programme | |
US3551895A (en) * | 1968-01-15 | 1970-12-29 | Ibm | Look-ahead branch detection system |
US3644900A (en) * | 1968-11-30 | 1972-02-22 | Tokyo Shibaura Electric Co | Data-processing device |
US3696340A (en) * | 1970-11-09 | 1972-10-03 | Tokyo Shibaura Electric Co | Microprogram execution control for fault diagnosis |
US3793631A (en) * | 1972-09-22 | 1974-02-19 | Westinghouse Electric Corp | Digital computer apparatus operative with jump instructions |
JPS52120640A (en) * | 1976-04-02 | 1977-10-11 | Toshiba Corp | Micro program control system |
JPS6029126B2 (ja) * | 1977-01-14 | 1985-07-09 | 株式会社日立製作所 | デ−タ処理装置 |
US4210960A (en) * | 1977-09-02 | 1980-07-01 | Sperry Corporation | Digital computer with overlapped operation utilizing conditional control to minimize time losses |
US4200927A (en) * | 1978-01-03 | 1980-04-29 | International Business Machines Corporation | Multi-instruction stream branch processing mechanism |
US4338661A (en) * | 1979-05-21 | 1982-07-06 | Motorola, Inc. | Conditional branch unit for microprogrammed data processor |
-
1980
- 1980-04-21 JP JP5256880A patent/JPS56149646A/ja active Granted
-
1981
- 1981-04-21 DE DE3116100A patent/DE3116100C2/de not_active Expired
-
1983
- 1983-11-25 US US06/554,760 patent/US4471433A/en not_active Expired - Lifetime
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS513750A (ja) * | 1974-06-28 | 1976-01-13 | Hitachi Ltd | Deetashorisochi |
JPS54107643A (en) * | 1978-02-13 | 1979-08-23 | Toshiba Corp | Operation control method and unit executing structured program |
Also Published As
Publication number | Publication date |
---|---|
DE3116100A1 (de) | 1982-04-08 |
DE3116100C2 (de) | 1985-08-08 |
US4471433A (en) | 1984-09-11 |
JPS56149646A (en) | 1981-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPS6217252B2 (ja) | ||
US4454578A (en) | Data processing unit with pipelined operands | |
US4740893A (en) | Method for reducing the time for switching between programs | |
US7424598B2 (en) | Data processor | |
US5638526A (en) | Apparatus for operand data bypassing having previous operand storage register connected between arithmetic input selector and arithmetic unit | |
US4305124A (en) | Pipelined computer | |
JP3151444B2 (ja) | ロード命令を処理する方法及びスーパースカラ・プロセッサ | |
KR100346515B1 (ko) | 수퍼파이프라인된수퍼스칼라프로세서를위한임시파이프라인레지스터파일 | |
JPH09311786A (ja) | データ処理装置 | |
USRE32493E (en) | Data processing unit with pipelined operands | |
US7546442B1 (en) | Fixed length memory to memory arithmetic and architecture for direct memory access using fixed length instructions | |
JP2002215387A (ja) | 命令トランスレータを備えたデータ処理装置およびメモリインタフェース装置 | |
JPH0673105B2 (ja) | 命令パイプライン方式のマイクロプロセッサ | |
JPH07239780A (ja) | 1クロック可変長命令実行処理型命令読み込み電子計 算機 | |
KR100974401B1 (ko) | 주소 레지스터의 내용을 스와핑하기 위한 방법 및 장치 | |
JP2916605B2 (ja) | コンピュータ用プロセツサ | |
KR920002573B1 (ko) | 데이타 처리기 | |
US4853889A (en) | Arrangement and method for speeding the operation of branch instructions | |
CA1193738A (en) | Pre-execution next address calculating mechanism | |
US6233675B1 (en) | Facility to allow fast execution of and, or, and test instructions | |
US6289439B1 (en) | Method, device and microprocessor for performing an XOR clear without executing an XOR instruction | |
JPH07110769A (ja) | Vliw型計算機 | |
EP0015276B1 (en) | A digital pipelined computer | |
JP2824484B2 (ja) | パイプライン処理計算機 | |
JP3102399B2 (ja) | データ処理装置及び方法 |