JPH02306341A - マイクロプロセッサ - Google Patents

マイクロプロセッサ

Info

Publication number
JPH02306341A
JPH02306341A JP2023687A JP2368790A JPH02306341A JP H02306341 A JPH02306341 A JP H02306341A JP 2023687 A JP2023687 A JP 2023687A JP 2368790 A JP2368790 A JP 2368790A JP H02306341 A JPH02306341 A JP H02306341A
Authority
JP
Japan
Prior art keywords
instruction
signal
branch
decoder
decoded
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
JP2023687A
Other languages
English (en)
Inventor
Nariko Suzuki
鈴木 奈利子
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.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Publication of JPH02306341A publication Critical patent/JPH02306341A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution

Abstract

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

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明はパイプライン処理のマイクロプロセッサに関し
、特にパイプラインマイクロプロセッサの命令デコード
ユニットの改良に関する。
〔従来の技術〕
パイプラインマイクロプロセッサでは、命令を先取りす
る命令先取りユニッ) (PDU)、先取りされた命令
をデコードする命令デコード情報ッ) (IDU)、同
ユニットからのオペランドアクセス情報にもとづきオペ
ランドアドレスの実効アドレス等を計算するメモリ管理
ユニッ) (MMU)、IDUからのデコード情報にも
とづき命令を実行する命令実行ユニット(EXU)等の
各ユニットは、所定のパイプライン処理の流れに従つて
それぞれ要求される処理を実行1〜でいる。したがっで
、IDUは、EXUが現在実行中の命令の数ステップ後
の命令を通常デコード12でいる。
〔発明が解決しようとする課題〕
ところで、条件分岐命令が実行すべき一連の命令の中に
1−ばしば用いられる。条件分岐命令は、当該命令で指
定される分岐条件がEXUで実行された命令の結果や状
態によって制御されるプログラムステータスフラグをも
とに成立するか否かによって処理すべき命令の流れを制
御するものである。かかる条件分岐命令がIDUに転送
されると、IDUは当該命令をデコードするわけである
が、EXUが現在実行中の命令および/又は当該実行中
の命令と条件分岐命令との間にある本実行のデコード済
命令がプログラムステ・−タスフラグの内容を変更する
命令である場合には、EXUがそのような命令を実行す
るまで分岐するか否かを確定することはできない。
そこで、I D Uが条件分岐命令をデコードすると、
同命令によって指定される分岐条件が確定するまて、以
後の命令のデコードを停止することが一般的に行なわれ
ている。しか1.なから、これは、パイプライン処理の
流れを停止することを意味しており、マイクロプロセッ
サのスピード・ネックにつながる。このように、条件分
岐命令はマイクロプロセッサのバ・fブライン処理を乱
す大きな原因として挙げられる。
それ故、本発明の目的は、条件分岐命令によって生じる
パイプライン処理の乱れをより少なくしたマイクロプロ
セッサを提供することにある。
本発明の目的は、条件分岐命令をデコードしても可能な
限りパイプライン処理の乱れを防止1〜得る命令テコニ
ドユニットを含むマイクロプロセッサを提供することに
ある。
〔課題を解決するだめの手段〕
本発明によるマイクロプロセッサは、命令を解1洸する
デコーダと、このデコーダからのデコード情報を一時格
納するキューレジスタと、このレジスタに格納されたデ
コード情報が実行準備完了状態となると当該レジスタか
らデコード情報を読み出しする手段と、読み出されたデ
コード情報を受取り実行する実行部と、前記デコーダが
条件分岐命令をデコード1−たことを示す情報に応答し
て、当該条件分岐命令が指定する分岐条件が確定するま
での期間に前記デコーダによって解読された命令の実行
準備完了状態をマスクする手段と、前記分岐条件が確立
した後、当該分岐条件の成立/不成立に応答1−で前記
実行準備完了状態のマスクを解除するか又は前記実行準
備完了状態を実行不可状態に変更する手段とを備え、前
記実行準備完了状態が実行不可状態に変更された場合、
当該変更された命令のデコード情報が格納されたキュー
レジスタに他の命令のデコード情報を格納することを特
徴としている。
〔実施例〕
以下、本発明を図面により詳述する。
第1図は本発明の一実施例を示すバイブラインマイクロ
プロセッサのブロック図である。バスインターフェース
ユニット(BIU)20はシステムバス21を介して図
示1〜ないメモリや周辺■10テバ・イスの間でデータ
のリード/ライトを実行する。ブリフェッチ/ブリデコ
ードユニソh(PDU)301−1:バス21を介して
BIU20と通信し、命令の先取りを実行する。PDU
30は先取りされた命令ストリームを一担保持し、その
命令ストリームを、命令テコードユニッ)(IDU)4
0でデコードし易いようにブリデコードし、すなわち、
オペコード、アドレシングモード情報。
データ等に分割し、バス31を介してIDU40に転送
する。IDU303は転送された壷金コート′をデコー
ドし、メモリ管理ユニット (MMU)50にはオペラ
ンドの実効アト1/ス計算に必要なアドレス情報をバス
42を介して転送し、一方、命令実行ユニッ) (EX
U)60には命令処理のための情報(オペランドデータ
の位置や算術論理演算処理の種類等)をバス41を介し
て転送する。
MMU50はIDU40からのアドレス情報をもとにオ
ペランドデータの実効アドレスを計算し、実アドレスに
変換してBIU20に対しバス51を介してオペランド
アクセス要求を発行する。分枝先アドレス情報はバス5
2を介してPDU30に転送される。MMU50はアド
レス変換が終了したことをTLENDI信号によってI
DU40に通知する。EXU60はIDU40からのデ
コード情報をもとにBIU20とバス61を介シて通信
しオペランドがそろった時点で命令の実行を開始する。
IDU40は命令デコード情報を・一時ストアする複数
のキューレジスタ(第2図)を有シ、すべてのレジスタ
に未実行のデコード命令が格納されると、IDQFUL
L信号をPDU30に供給し、PDU30からの命令転
送を一時禁止する。すべてのキューレジスタの空き状態
になると、IDQEMP信号を発行し、EXU60に対
し命令の引き取りを一時禁止させる。EXU60は、I
DU40からの命令フードを引き取ると■DQACK信
号を発生する。また、EXU506は、実行した命令の
結果や状態によって制御されるプログラムステータスフ
ラグ(図示せず)を有し、条件分岐命令によって指定さ
り、た分岐条件フラグを参照してその条件が成立したか
否かを示すTAKEN信号をIDU40に供給する。こ
のTAKEN信号をもとに、IDU40は条件分岐命令
で指定された分岐条件が成立した場合はVCAN信号を
、不成立のときUCAN信号を発生ずる。
これらの信号はPDU30.Mネtυ;1丑−BIU2
0に供給さh分岐条件成立/不成立を通知する。
これらBIU20.PDU30.IDU40.MMrJ
5QおよびEXtJ60はバイブラインで動作1、てお
り、互いに並行に割り合てられた処理を実行している。
第2図を参照すると、本発明によるIDU40がより詳
細に示されている。バス31を介するPDU30からの
命令は、シーケンサ401によって制御されるデコード
シーケンスに従ってデコーダ400で解読される。解読
された情報のうち、オペランドアドレス情報はバス42
を介してMMU50に供給され、命令処理情報はバス4
13を介して3つのキュー17ジスタ(IDQO,ID
Ql、1DQ2)402−404に共通に供給される。
各IDQ40 :2−404はそのライトイネーブル端
子WEへの対応するストローブ信号QSLSTBO−2
の供給によってバス413上の情報を一時スドアし、そ
のリードイネーブル端子REへの対応するストローブ信
号EXQSLO−2の供給によってEXU60へのバス
」二にストアしていた情報を読み出す。これらQST、
5TEO−2,EXQS L O−2はキューレジスタ
リード/ライト制御回路405から出力される。同回路
405は、シーケンサ401から一つの命令のデコード
が終了する毎に発生されるIDQSTB信号に応答1〜
てQSLSTBO−2を順々に発生し、デコーダ413
からのデコード情報をIDQ (0−2)402−40
4に順4にスI・アさせる。そして、キューレディー制
御回路407からの各キューレディ信号IDQRDYO
−2とEXU60からのIDQACK信号によってEX
Q、5LO−2を順々に発生1〜IDQ (0−2) 
402−404から順々にストア情報をバス41上に転
送させる。
制御回路407は、IDQO−2にストアされたデコー
ド命令が必要とするオペランドのアドレス変換が終了し
た信号TLENDIに応答して、対応するIDQRDY
O−2信号を発生する。IDQRDYO−2はギューレ
ディークリア制御回路411からのクリア信号VQCL
RO−2によってそれぞれクリアされる。本IDU40
は、デコーダ400が条件分岐命令をデコードしたこと
によってデコーダ400から発生される信号CBRAに
応答して、同命令のデコード情報をストアするギ、−レ
ジスタ(IDQ)の位置を格納する分岐キューレジスタ
ポインタ406と、デコーダ400からデコー ドした
命令がEXU60内のプログラムステータスフラグの内
容を変更し得る命令であることを示すFLAGM信号を
受けて、条件分岐命令によって指定される分岐条件が確
定1〜ない期間をF HZ R信号によって通知する分
岐未確定期間検出回路409と、F HZ R信号がイ
ンアクティブとなったときに、EXU60からのTAK
EN信号をもとに確定した分岐成立信号vCAN、分岐
不成立信号UCANを出力する分岐確定信号出力回路4
08とをさらに有している。CBRAR号によって条件
分岐命令がデコードされない限り出力回路408からの
信号VCAN、UCANは両方ともインアクティブレベ
ルとなる。
本IDU40は、デコーダ400が条件分岐命令をデコ
ードした後もそれに続く命令(あるいは分岐先の命令)
のデコードを続行しているので、キューレディマスク制
御回路410がさらに設けられている。同回路410は
、マスク信号INVO−2によって、条件分岐命令後に
デコードされる命令に対するキューレディ信号IDQR
DY、0−2をマスクし、回路408からのBRENR
号によってそのマスク信号INVO−2を解除する。
もし、条件分岐命令後にデコードされた命令が分岐条件
成立又は不成立によって実行すべき命令でないときは、
クリア回路411が対応するIDQRDY信号をクリア
し、同命令がEXU60に転送されることを禁止する。
上述した回路405−411の動作は第3図A、Hに示
した詳細な回路構成によって実現される。第3図Aは回
路405,406,408゜409の構成を、第3図B
は回路キュー17デイに関する回路407,410,4
11を示している。
以下、動作について第1図乃至第3図および第4図、第
5図のタイミングチャートを用いて説明する。なお、本
実施例では、条件分岐命令がデコードされた場合、同命
令の次のアドレスに続く命令を先行デコードしている。
第4図は条件分岐命令で指定された分岐条件が成立しな
かった場合、すなわち先行デコードされた命令が有効で
なる場合であり、第5図は分岐条件が成立して次に実行
すべき命令が分岐先アドレスの命令である場合、すなわ
ち、先行デコードされた命令が無効となる場合である。
まず第4図において、条件分岐命令■の前の命令0の解
読をデコーダ400が開始するとともに、D型フリップ
フロップ(D−F/F) 307 。
317.360が“l”をストアしているとする。
またこの時、EXU60はIDQ(2)404にストア
されていた命令■を実行中であり、IDQ(0)402
には命令■と命令0の間にある命令■をストアしている
。デコーダ400にJ:る命令Oのデコード終了によっ
てシーケンサはIDQSTEを発生し、その結果、AN
Dゲート312からQSLSTBI信号が発生される。
命令@のデコード情報はかくしてI DQ(1)403
にストアさ九る。
SR型ラフリップフロップSR−F/F)303がセッ
トされる。遅延回路314により遅延されたIDQST
B信号によってD−F/F 316−318はそのD入
力のデータを取り込む。マルチプレクサ(MPX)31
9−321は図示していないがVCAN信号によって制
御さh、同信号がインアクティブレベル(ロウレベル)
のときはF/F316−318のQ出力をそれぞれ選択
する。
したがって、F/F 317のQ出力“1″はF/F3
18に転送され、F/F 317はF/F316からの
Onを取り込む。命令0は算術論理演算命令であってE
XTJ60内のプログラムステータスフラグの内容を変
更する命令であるので、デコーダ400はFLA、GM
倍信号発生し、5R−F/F 506がセットされる。
命令[相]のためのオペランドのアドレス計算および返
換が終了するとMMIJ50はTLENDI信号を発生
し、その結果、5R−F/F354がセットされる。5
R−F/F366−368はリセット状態にあるので、
それらの司出力である■Nvo−2はハイレベルであり
、その結果、命令0が実行可能状態であるこ七を示すI
DQRDYI信号がアクティブハイレベルとなる。この
レベルによってANDゲート507がυnきFHzD信
号がハイレベルとなる。
なお、命令■又は■もプログラムステータスフラグの内
容を変更し得る命令である場合には対応するF/F50
2,510がセット状態となっており、FHzD信号は
すでにハイレベルとなっている。遅延回路362によっ
て遅延されたTLENDI信号によってD−F/F35
9−361は入力データDを取り込む。MPX363−
364もVCAN信号によって制御されるので、F/F
360のQ出力“1″はF/F 361に取り込まれ、
F/F 360はF/F 359からのQ出力“0゛を
取り込む、F/F354によってIDQRDY1信号は
アクティブハイレベルのままである。
デコーダ400は条件分岐命令■のデコードを開始する
。そのデコードの最中にEXtJ60は命令■の実行を
終了し、命令実行終了信号EXQENDを発生して5R
−F/F518をリセットする。すなわち、5R−F/
F502,506゜510はそれぞれ対応するIDQO
−2にストアされた命令がプログラムステータスフラグ
の内容を変更し得るかどうかの情報をストアし、5R−
F/F 518はEXU60によって実行中の命令がプ
ログラムステータスフラグの内容を変更し得るかどうか
の情報をストアしている。EXU60は命令実行を終了
するとバス41上の命令を取り込む。本説明では、EX
QSLO信号がアクティブハイレベルであるので、  
I DQ(0)402にスI・アされていた命令■がE
XU60に取り込まれる。
EXU60は命令を取り込むとIDQACK信号を発生
する。この信号によって、命令■がプログラムステータ
スフラグの内容を変更し得るかどうかの情報(F/F 
502のストアデータ)が)/′F518に取り込まれ
る。IDQACK信号によってF/F 307のQ出力
゛1′′はF/F 308に取り込まれるので、F/F
 307のQ出力は′“0″となり、IDQRDYO信
号はハイレベルからロウレベルに反転する。この反転に
応答してワンショットパルス発生器08504はワンシ
ョットパルスEXQEOを発生しF/F502をリセッ
トとする。また、EXQEOによってキューレデイクリ
ア制御回路411のORゲート373はVQCLROを
発生し、F’/F301゜353をリセットとする。I
DQRDYO信号はかくしてインアクティブレベルとな
る。F/F308はパ1″を取り込み、IDQRDY1
信号はすでにアクティブハイレベルであるので、EXQ
SLI信号がアクティブハイレベルとなる。かくして、
IDQI  (403)にストアされていた命令■がバ
ス41上に読み出される。EXU60は命令■を実行中
である。
デコーダ400による条件分岐命令0のデコード終了を
示すIDQSTB信号によってQSLSTE2信号が発
生され、命令■のデコード情報はIDQ2 (404)
に取り込まれる。F/F 303がセットされ、データ
“1″はF/F318からF/F316に移る。条件分
岐命令0の分岐条件はバス412を介してEXU60に
先行して渡たされる。デコーダ400はまたCBRA信
号をアクティブにする。FLAGM信号はロウレベルで
あり、F’/F 510はリセットされたままである。
CBRA信号とQSLSTB2信号とによってANDゲ
ート341はラッチ回路を活性化する。すなわち、条件
分岐命令■がストアされたキューレジスタの位置(ID
Q2=“001”)がラッチ回路322に取り込まれる
。ANDゲート341はさらに5R−F/F343をセ
ットする。F/F343の出力CBRAQLは遅延回路
372によって遅延されてANDゲー)369−371
に供給されるため、5R−F/F368はセット状態と
ならない。INV2はハイレベルのままである。CBR
AQL信号によってANDケート327は開くが、少な
くともF/F 506がセット状態でありIDQRDY
I信号はアクティブハイレベルであるので、ORゲート
519の出力FHzRはハイレベルでありANDゲート
327は出力はロウレベルを保持している。分岐先アド
レスの実効アドレス計算、変換の終了を示す信号TLE
NDIによって5R−F/F355はセットされ、ID
QRDY2信号はアクティブハイレベルとなる。テーダ
′1°′はF/F 361からF/F 359に移る。
IDU40は条件分岐命令■の次のアドレスにある命令
0を先行デコード゛するので・、デコーダ400は命令
0のデコードを開始する。このデコード最中に、EXU
60は命令■の実行の終了し、F/F 518をリセッ
トする。EXU60はさらにデコーダ400から先行し
て渡された条件分岐命令0が指定する分岐条件が自己の
プログラムステータスフラグの内容と一致するかどうか
を命令の実行終了の毎に判定し、その結果をT A K
EN信号として出力する。しかしながら、この時、FH
2R信号はハイl/ベルであって分岐未確定期間を示し
ているので、ANDゲート324,325は閉じたまま
であり、分岐確定信号出力回路408は有効なVCAN
、UCAN信号を発生しない。
EXQSLI信号がハイレベルであるので、EXU60
は命令0を取り込み、そしてIDQACK信号を出力す
る。この信号によってF/F 506のストア情報の“
1″ (すなわち、命令[F]はプログラムステータス
フラグの内容を変更し得る命令であることを示す)はF
/F 518に取り込まれ、FH2R信号はハイレベル
を保持する。さらに■DQACK信号によって、EXQ
SLIはハイレベルからロウレベルに反転し、F/F5
Q6゜354.302がリセットされる。F/F 30
9は“1″を取り込む。
命令■のデコード終了によってQSLSTBO信号が発
生し、命令0のデコード情報はIDQ(0)402にス
トアされる。この命令0がプログラムステータスフラグ
の内容を変更し得るものであればFLAGM信号も発生
され、F/F 502がセットされる。このとぎ、まだ
IDQRDYO信号は発生していないのでANDゲート
503は閉じたままである。F/F 302はセットさ
れ、データ“′1″はF/F 316からF/F 31
7に移る。QSLSTBO信号と遅延されたCBRAQ
、 L信号とによってANDゲート369が開きF/F
366をセット状態とする。すなわち、命令0は条件分
岐命令0のデコード後に先行してデコードされた命令と
1−でキューレディマスク信号IVOがアクティブロウ
レベルをとる。したがって、命令0のオペランドアドレ
ス計算、変換が終了してF/F 353がセットされて
も、IDQRDYO信号)11Vo信号およびANDゲ
ート350によってマスクされロウレベルを保持したま
まとなる。IDQRDYO信号がマスクされるのでF/
F502の内容もANDゲート503によってマスクさ
れる。デコーダは命令0の先行デコードを続行し、命令
0のデコード情報はI DQ(1)403にストアされ
る。命令0の場合と同様に、命令0のためのIDQRD
Y1信号はマスクされ、F/F506の情報もマスクさ
れる。IDQ (0−2)402−404にはそれぞれ
未実行の命令■、0.0がストアされキューレジスタに
空きがなくなったため、ANDゲート300はアクティ
ブハイレベルのIDQFULL信号を発生する。
これによって、シーケンサ401はその後のデコード処
理を一時中断させ、PDU30に対し命令の転送を一時
中断させる。
EXU60が命令0の実行を終了すると、F/F518
がリセットされ、その結果、FHzR信号はロウレベル
に反転する。すなわち、回路409は分岐未確定期間が
終了したことをF HZ R信号のロウレベルによって
出力回路408に通知する。
この結果、ANDゲー)324,325が開く。
また、EXU60はバス412を介して先行1.て渡さ
れた条件分岐命令■の分岐条件が命令[F]の実行結果
によって制御されたプログラムステータスフラグの内容
と一致するかどうか、すなわち分岐条件が成立したかど
うかのTAKEN信号を発生している。本説明では分岐
未成室であるので、TAKEN信号はロウレベルとなっ
ている。したがって、出力回路408はVCAN信号を
ロウレベルのままとしUCAN信号をハイレベルとして
、分岐条件不成立であることを出力する。VCAN、U
CAN信号のORゲート323を通した出力BRENに
よってF/F 343はリセットされ、その結果、出力
回路408はVCAN、UCANの両信号を無効なもの
とする。BREN信号によってF/F366−368も
リセットされ、各マスク信号INVO−2はハイレベル
となる。したがって、IDQRDYo、1信号のマスク
は解除されそれぞれアクティブハイレベルとなる6F/
F502,506の出力のマスクも解除され、命令0,
0の少なくとも一方がプログラムステータスフラグの内
容を変更し得る場合はF HZ R信号がハイレベルと
なる。かくして、命令0,0は実行すべき有効な命令と
なる。命令0の実行終了時点ではEXQSL2が出力さ
れているので、EXU60は命令■を引き取り、IDQ
ACK信号を発生する。EXQSI、2はハイからロウ
に反転I2、F/F 355がリセットされIDQRD
Y 2信号をロウレベルどなる。また、F/F 303
がリセットされ、IDQFULL信号がロウレベルとな
るので、IDU40は命令0のデコード処理を開始する
。さらにまた、データ“1”がF/F309からF/F
 307に移るため、EXQSLOがハイレベルとなり
、命令0がバス412に出力される。EXU60は条件
分岐命令■を引き取るが、同命令はすでに実行されてい
るので、EXU60は同命令■を所謂NOP (ノーオ
ペレーション)命令として処理する。EXU60はその
後、命令0を引き取り実行を開始する。
以上の説明から明らかなように、条件分岐命令■がデコ
ードされても、PDU30.IDU40.MMU50は
その後の処理を続行しており、しかも分岐不成立のとき
は先行処理は無効とならずパイプライン処理の流れは実
質停止しない。
一方、条件分岐命令■の分岐条件が成立l−た場合は、
第5図のようにVCAN信号がアクティブハイレベルと
なるため、クリア制御回路411内のANDケ’−)3
74,376がクリア信号VQCLR70,1を発生1
〜、F/F354,355をリセットする。したがって
、INVo、1がハイ1/ベルとなってマスクが解除さ
れても、IDQRl)YO,lはロウレベルとなり、デ
コードされた命令0,0は実行されない無効なものとな
る。F/F301,302もリセットされIDQFUL
L信号はロウレベルとなる。VCAN信号によって、B
IU20.PDU20は分岐先の命令をフェッチするよ
うに指示される。さらに、VCAN信号はORゲー)3
15,560を介してF/F316−318,359−
360にクロックを与え、MPX319−321,36
4−365にラッチ回路322から分岐キューレジスタ
のポインタ情報“001”を選択するJ:うに指示する
その結果、データ“1”′がF/F316,359に取
り込まれ、F/F317,318,360゜361はデ
ータ“ONを取り込む。すなわち、分岐先アドレスの命
令のデコード情報をストアするキューレジスタとして、
条件分岐命令0をストアしたキューレジスタIDQ(2
)404の次のレジスタI DQ(0)402が指定さ
れる。I〜たがって、EXU60に転送すべき命令の流
れに何ら不都合は生じない。EXU60が命令■を引き
取ることによって発生されるIDQACK信号によって
、F/F355がリセットされIDQRDY2がロウレ
ベルとなる。このため、すべてのIDQRDYO−2が
ロウレベルとなり、NORゲート310はハイレベルの
IDQEMP信号を発生し、EXU60に実行可能なデ
コード済命令がキューレジスタIDQO−2に存在しな
いことを通知する。
これに応答して、EXTJ60はIDU40からの命令
引き取りを一時中断し、IDU40に実行可能なデコー
ド済命令が存在するまで、処理を中断する。したがって
、EXU60の誤動作が防止される。PDU30から分
岐先の命令0がIDU40に転送され、IDU40が同
命令のデコードを完了しかつオペランドアドレス計算、
変換が終了してIDQEMPがロウレベルとなると、E
XU60は処理を再開して命令0を引き取り実行する。
このように、分岐条件成立の場合、命令0,0のデコー
ド処理およびオペランドアドレス計算。
変換処理は無効となるが、分岐条件が確定するまでID
U40.MMU50は有効に働いていることになりその
効果は大きい。ここで、分岐先アドレスの計算、変換は
すでに終了しているから、PDU30が命令@、 @、
 @たけてなく分岐先の命令ω、■も予じめ先取りして
おくように構成することにより、VCAN信号の発生に
よってPPU3Oは命令0.oを直ちにIDU40に転
送することが可能となる。この場合、バイブライン処理
の流れは停止は最小限に抑えられる。第4図、第5図で
、命令[F]はプログラムステータスフラグの内容を変
更I7ない命令であり、命令■は同内容を変更する場合
は、命令■の実行終了時にTAKEN信号は確定し、有
効なVCAN、UCAN信号が出力される。
なお、第3図A、Bに示した具体的構成は第2図の各回
路405−411の機能実現のための−例であり、同一
機能のために適宜変更し得ることは熱論である。
第6図に本発明の他の実施例を示す。第1図と同一構成
部は同じ番号で示す。本実施例では、第1図のブリフェ
ッチ/プリデコードユニッ)PDU30の代わりにプリ
フェッチ/分岐予測ヒツトリデフ−1フ分岐予測ユニツ
U)600が設けられている。このユニット600は、
命令プリフェッチ制御およびプリデコード制御の他に、
分岐予測制御も実行する。分岐予測制御のため、BPP
DU600は、現在プリフェッチしている命令のアドレ
スを格納するレジスタ(CPFIAR)601.条件分
岐命令がストア、されているアドレス(分岐元アドレス
)を格納するレジスタ(BRAIAR)602.当該分
岐命令で指定される分岐先アドレスを格納する1/ジス
タ(BRDTAR)603.および比較器604を有す
る。
CPFIAR601の内容は通常はプリフェッチした命
令のバイト数だけプリフェッチ毎に更新される。BRA
IAR602には前回プリフェッチした条件分岐命令の
分岐元アドレスを格納できる。
したがって、プログラム処理が進みBRAIAR602
の分岐元アドレスにある条件分岐命令が再度フェッチさ
れると、比較器604は分岐予測ヒツト信号HITBR
Aを発生する。そして、BPPDU600はBRDTA
R603の内容を用いて、条件分岐命令に引き続く命令
ではなく、分岐先アドレスの命令から以降プリフェッチ
する。
分岐予測ヒツト信号HITBRAはIDU40の分岐確
定信号出力回路に供給される。ただし、第6図で408
′として示しているように、この構成は第7図に示すよ
うに第3図Aのものとは若干異なっている。
すなわち、HITBRA信号は5R−F/F701に記
憶される。F/F 701のQ出力はマルチプレクサ(
MPX)702を制御する。MPX702はF/F 7
01のQ出力が“l”のときは、ANDゲート324お
よび325の出力をそわ2ぞれUCANおよびVCAN
として出力し、一方、′0”のときはANDゲート32
4,325の出力をVCAN、UCANとして出力する
その動作はIDU40に条件分岐命令後に転送される命
令が変更されるだけでIDU40の基本動作は第4図、
第5図と同じである。すなわち、BPPDU600が条
件分岐命令■をプリフェッチした結果として分岐予測ヒ
ツトが生じると、F/F70.1はセットされ、BPP
DU600はそれ以降分岐先の命令0.oをプリフェッ
チする。
したがって、第4図、第5図で“デコード処理”と1.
て示した命令の流れは■→0→■→・・・となる。
命令0の実行終了時点で分岐条件が確定するが、この条
件が命令00条件を満足する場合、ANDゲー)324
,325の出力はそれぞれノ・イレベル、ロウレベルと
なる。F/F 701はセットされているので、AND
ゲート324の出力がUCANとなる。かくして、ID
Qo、1にストアされた命令0.oのデコード情報は有
効となり実行される。一方、条件不成立のとぎはV C
A、 N信号がアクティブハイレベルとなるので、ID
QO。
■のストア命令0.oは無効となり、命令O2゜のプリ
フェッチ、デコード処理に移行する。BPPDU 60
0が条件分岐命令をプリフェッチしても分岐予測がミス
ヒツトした場合は、第4図、第5図と同一の動作となる
上述の実施例において、分岐条件命令■のデフード後の
命令のオペランドのアクセスは分岐が確定した後に行な
う必要がある。この目的のために、BIU20は第8図
に示すように、アクセス情報保持部800を有する。回
部800はキュー構成の3本のバッファレジスタADR
O(801)。
ADR,1(803)、 ADR2(805)を有し、
各レジスタにオペランドアクセスアドレスがストアされ
る。また、各レジスタに付随してタグフラグBTO(8
02)、BTI  (804)、Br3(805)があ
り、これらはCBRA、QL(第3図A)が入力されて
いる。したがって、条件分岐命令0後にデコードされた
命令、すなわち分岐未確定期間中にデコードされた命令
のオペランドアドレス情報は同期間であることを示すタ
グ情報とともに保持部800に一時スドアされる。アク
セスコントローラ810はBTO−2の内容を受ケ、そ
こにタグ情報があればオペランドアクセスを一時中断す
る。そして、VCANに応答して保持部800の内容を
無効とし、UCANに応答して有効としアクセスを開始
する。
なお、第8図で、各バッファにさらにアクセス優先情報
も付加しておき、UCANに応答して優先度の高いもの
からアクセスを開始してもよい。
〔発明の効果〕
以上のとおり、本発明によれば、条件分岐命令カテコー
ドされてもバイブライン処理の流れを停止させないか又
はその停止を最小限に抑えたマイクロプロセツサが提供
される。
【図面の簡単な説明】
第1図は本発明の一実施例を示すブロック図、第2図は
第1図で示したIDUのブロック図、第3図A、Bは第
2図の要部回路図、第4図、第5図はそれぞれ条件分岐
命令デコード時のIDUの動作を示すタイミングチャー
ト、第6図は本発明の他の実施例を示すブロック図、第
7図は第6図に示した出力回路408′の回路図、第8
図は第1図又は第6図のB I Uの要部構成図である

Claims (1)

    【特許請求の範囲】
  1. 命令を解読するデコーダと、このデコーダからのデコー
    ド情報を一時格納するキューレジスタと、このレジスタ
    に格納されたデコード情報が実行準備完了状態となると
    当該レジスタからデコード情報を読み出しする手段と、
    読み出されたデコード情報を受取り実行する実行部と、
    前記デコーダが条件分岐命令をデコードしたことを示す
    情報に応答して、当該条件分岐命令が指定する分岐条件
    が確定するまでの期間に前記デコーダによって解読され
    た命令の実行準備完了状態をマスクする手段と、前記分
    岐条件が確立した後、当該分岐条件の成立/不成立に応
    答して前記実行準備完了状態のマスクを解除するか又は
    前記実行準備完了状態を実行不可状態に変更する手段と
    を備え、前記実行準備完了状態が実行不可状態に変更さ
    れた場合、当該変更された命令のデコード情報が格納さ
    れたキューレジスタに他の命令のデコード情報を格納す
    ることを特徴とするマイクロプロセッサ。
JP2023687A 1989-02-03 1990-02-02 マイクロプロセッサ Pending JPH02306341A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP1-24864 1989-02-03
JP2486489 1989-02-03

Publications (1)

Publication Number Publication Date
JPH02306341A true JPH02306341A (ja) 1990-12-19

Family

ID=12150083

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2023687A Pending JPH02306341A (ja) 1989-02-03 1990-02-02 マイクロプロセッサ

Country Status (4)

Country Link
US (1) US5185869A (ja)
EP (1) EP0381246B1 (ja)
JP (1) JPH02306341A (ja)
DE (1) DE69031229T2 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2560889B2 (ja) * 1990-05-22 1996-12-04 日本電気株式会社 マイクロプロセッサ
JP2834862B2 (ja) * 1990-07-13 1998-12-14 松下電器産業株式会社 プロセッサ
JP2875909B2 (ja) * 1991-07-12 1999-03-31 三菱電機株式会社 並列演算処理装置
US5375222A (en) * 1992-03-31 1994-12-20 Intel Corporation Flash memory card with a ready/busy mask register
US5422855A (en) * 1992-03-31 1995-06-06 Intel Corporation Flash memory card with all zones chip enable circuitry
US5428579A (en) * 1992-03-31 1995-06-27 Intel Corporation Flash memory card with power control register and jumpers
JP3452655B2 (ja) * 1993-09-27 2003-09-29 株式会社日立製作所 ディジタル信号処理プロセッサおよびそれを用いて命令を実行する方法
US5428566A (en) * 1993-10-27 1995-06-27 Intel Corporation Nonvolatile memory card with ready and busy indication and pin count minimization
US5634119A (en) * 1995-01-06 1997-05-27 International Business Machines Corporation Computer processing unit employing a separate millicode branch history table
US5812861A (en) * 1995-06-22 1998-09-22 Intel Corporation Override signal for forcing a powerdown of a flash memory
JPH10161871A (ja) * 1996-11-28 1998-06-19 Toshiba Corp プロセッサ
JP3699796B2 (ja) * 1996-11-29 2005-09-28 株式会社東芝 プロセッサ
US6282663B1 (en) * 1997-01-22 2001-08-28 Intel Corporation Method and apparatus for performing power management by suppressing the speculative execution of instructions within a pipelined microprocessor
US5983341A (en) * 1997-04-25 1999-11-09 International Business Machines Corporation Data processing system and method for extending the time for execution of an instruction
US6101568A (en) * 1998-08-25 2000-08-08 Stmicroelectronics, Inc. Bus interface unit having dual purpose transaction buffer
US6205506B1 (en) * 1998-08-25 2001-03-20 Stmicroelectronics, Inc. Bus interface unit having multipurpose transaction buffer
US7114059B2 (en) * 2001-11-05 2006-09-26 Intel Corporation System and method to bypass execution of instructions involving unreliable data during speculative execution
DE10332311B3 (de) * 2003-07-16 2004-10-07 Infineon Technologies Ag Verfahren zur beschleunigten Ausführung eines Sprungbefehls
US20170315812A1 (en) * 2016-04-28 2017-11-02 Microsoft Technology Licensing, Llc Parallel instruction scheduler for block isa processor

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS612971A (ja) * 1984-05-05 1986-01-08 エスカ−エフ ゲ−エムベ−ハ− テンシヨンロ−ラ

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR1536616A (fr) * 1966-09-21 Ibm Système de traitement d'instructions avec des perfectionnements pour le branchementet les boucles du programme
US3771138A (en) * 1971-08-31 1973-11-06 Ibm Apparatus and method for serializing instructions from two independent instruction streams
US3736567A (en) * 1971-09-08 1973-05-29 Bunker Ramo Program sequence control
US4200927A (en) * 1978-01-03 1980-04-29 International Business Machines Corporation Multi-instruction stream branch processing mechanism
US4298927A (en) * 1978-10-23 1981-11-03 International Business Machines Corporation Computer instruction prefetch circuit
JPS56129950A (en) * 1980-03-07 1981-10-12 Hitachi Ltd Information processor
EP0109655B1 (en) * 1982-11-17 1991-07-24 Nec Corporation Instruction prefetching device with prediction of a branch destination address
US4742451A (en) * 1984-05-21 1988-05-03 Digital Equipment Corporation Instruction prefetch system for conditional branch instruction for central processor unit
US4853840A (en) * 1986-01-07 1989-08-01 Nec Corporation Instruction prefetching device including a circuit for checking prediction of a branch instruction before the instruction is executed
JPS6393038A (ja) * 1986-10-07 1988-04-23 Mitsubishi Electric Corp 計算機
JPS63131230A (ja) * 1986-11-21 1988-06-03 Hitachi Ltd 情報処理装置
US4881194A (en) * 1987-11-16 1989-11-14 Intel Corporation Stored-program controller for equalizing conditional branch delays

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS612971A (ja) * 1984-05-05 1986-01-08 エスカ−エフ ゲ−エムベ−ハ− テンシヨンロ−ラ

Also Published As

Publication number Publication date
EP0381246A2 (en) 1990-08-08
EP0381246B1 (en) 1997-08-13
DE69031229D1 (de) 1997-09-18
EP0381246A3 (en) 1992-10-28
US5185869A (en) 1993-02-09
DE69031229T2 (de) 1998-05-07

Similar Documents

Publication Publication Date Title
JPH02306341A (ja) マイクロプロセッサ
JP2504830Y2 (ja) デ―タ処理装置
JPH02208728A (ja) 仮想命令キャッシュ再補充アルゴリズム
WO2001016715A9 (en) Branch instructions in a multithreaded parallel processing system
JP2560889B2 (ja) マイクロプロセッサ
JPH0795271B2 (ja) 分岐命令実行装置
JPH01214932A (ja) データ処理装置
JP3683248B2 (ja) 情報処理装置及び情報処理方法
US5615375A (en) Interrupt control circuit
JPH02287626A (ja) パイプライン方式の分岐命令制御装置
JPH06266556A (ja) データ処理装置
US5421026A (en) Data processor for processing instruction after conditional branch instruction at high speed
JP3741945B2 (ja) 命令フェッチ制御装置
JP2534662B2 (ja) 命令キヤツシユ制御方法
EP0315995B1 (en) Processing system for branch instruction
JP2532560B2 (ja) 高機能な例外処理を行うデ―タ処理装置
JPH09190348A (ja) 命令プリフェッチバッファ制御方法、命令プリフェッチバッファ制御装置、及び命令プリフェッチバッファフラッシュ方法
WO1993018451A1 (en) Elimination of the critical path in memory control unit and input/output control unit operations
JPH027128A (ja) 情報処理装置
JPH0774992B2 (ja) データ処理装置
JPH0471028A (ja) マイクロプロセッサ
JPH0855033A (ja) 情報処理装置
JPH05282146A (ja) 情報処理装置
JPH01281534A (ja) データ処理装置
JPH0218620A (ja) 情報処理装置