JP2640454B2 - ディジタル命令プロセッサ制御装置および1サイクル内で分岐を実行する方法 - Google Patents

ディジタル命令プロセッサ制御装置および1サイクル内で分岐を実行する方法

Info

Publication number
JP2640454B2
JP2640454B2 JP61203569A JP20356986A JP2640454B2 JP 2640454 B2 JP2640454 B2 JP 2640454B2 JP 61203569 A JP61203569 A JP 61203569A JP 20356986 A JP20356986 A JP 20356986A JP 2640454 B2 JP2640454 B2 JP 2640454B2
Authority
JP
Japan
Prior art keywords
instruction
branch
address
cycle
pipeline
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 - Lifetime
Application number
JP61203569A
Other languages
English (en)
Other versions
JPS6254342A (ja
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JPS6254342A publication Critical patent/JPS6254342A/ja
Application granted granted Critical
Publication of JP2640454B2 publication Critical patent/JP2640454B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime 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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution

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)
  • Hardware Redundancy (AREA)

Description

【発明の詳細な説明】 この発明はディジタルコンピュータのための命令を処
理するための方法および装置に関するものであって、特
に分岐予測または複雑な回路の必要なしにパイプライン
内で命令に割当てられた1サイクルのみを用いてパイプ
ライン内の分岐命令を処理するための方法および装置に
関するものである。
[従来の技術] 縮小命令セットコンピュータ(RISC)は、命令の簡単
なデコーディングおよびパイプライン化した実行を用い
ることの有利さを認めたものである。分岐命令は命令の
流れを制御するためにコンピュータ内に必要とされる。
パイプライン化されたコンピュータの分岐命令は、通
常、分岐命令が制御を移した先のた位置である「分岐ア
ドレス」の命令がフェッチされるまでパイプラインを遅
延させる。そのため、これらの命令は通常のパイプライ
ン化した命令の流れを妨げる。先行技術で知られている
ものとして、分岐の影響を遅延する「遅延分岐」、前も
って分岐を予測し、間違った予測を訂正する技術、また
は分岐の方向がわかるまで複数の命令をフェッチすると
いった複雑な技術がある。
[発明が解決しようとする課題] これらの技術の大部分はRISCアーキテクチャには複雑
すぎるので、遅延分岐がそのために選ばれた。遅延分岐
により、RISCが、現在の命令の実行中に(物理的に)次
の命令を常にフェッチすることができる。大部分のRISC
は命令のパイプライン化を採用するので、先行技術にお
いて遅延分岐は分岐命令を実行するために2つの命令プ
ロセッサクロックサイクルを必要とする。これは命令の
パイプラインを分断させる。そのような分断をなくすた
めに先行技術には複雑な回路が導入されていた。分岐命
令は命令ストリームの中に頻繁に現れるので、先行技術
のコンピュータは所望のものよりも遅くそして複雑であ
った。
サブルーチンならびにインターラプトおよびトラップ
ルーチンの呼出は同様に分岐を含むので、先行技術のRI
SCで招かれた時間ペナルティはまたこれらのよく起こる
手順に対しても存在する。したがって、単一のサイクル
で分岐を行ない、そして命令のパイプラインを分断させ
ない一方、複雑な回路を要求することなしに完全に正確
な分岐予測を提供する、RISC内で用いるのに適した命令
プロセッサが望まれている。
[課題を解決するための手段] この発明の命令プロセッサは、分岐命令が条件コード
レジスタの代わりに汎用レジスタにストアされたビット
を含む、パイプライン化されたRISCに用いるためのプロ
グラムカウンタを提供する。これにより、分岐条件が条
件コードレジスタ内の特別な場合としてではなく、通常
の命令オペランドとして取扱われることが可能になる。
分岐命令のデコードサイクルの間に、条件ビットがフェ
ッチされ、分岐「ターゲット」アドレスが、実行される
分岐命令の型に依存して、別個の相対アドレス加算器に
よって計算されるかまたは、レジスタからフェッチされ
る。
分岐命令の実行サイクルの始めでは、条件ビットおよ
びターゲットアドレスはどの命令がフェッチされるべき
かを制御し、次に続く命令が実行されるまで分岐は実施
されない。マルプレクサがこの制御を実現する。このよ
うにして、パイプライン内で物理的に分岐命令に続く命
令の置換えをする必要がなく、パイプラインは中断する
ことなく最大の速度で実行できる。したがって、分岐は
それに割り当てられたパイプラインの単一のサイクル内
で起こる。
この発明のプロセッサを組込むコンピュータはまたサ
ブルーチン、インターラプトおよびトラップルーチンで
の呼出のための特別な取扱い技術をも容易に実行する。
[好ましい実施例の詳細な説明] この発明の単一サイクル分岐能力を提供するデイジタ
ルプロセッサ制御のプログラムカウンタ部分10は、第1
図にブロック図の形で例示されている。第1図に示され
ていない命令レジスタが、現在プロセッサ10によって実
行されている命令を格納している。もしこの命令が、分
岐の実行を要求するなら、分岐条件は第1図に示されて
いない汎用レジスタ内の予め定められたビット位置にス
トアされ、そこでその分岐貢献は命令オペランドとして
プロセッサ10によって処理されるであろう。プロセッサ
10の命令デコードサイクルの間、分岐命令がデコードさ
れているとき、分岐条件は汎用レジスタから検索され、
そしてプロセッサ10の命令実行サイクルの間に用いられ
る。下に説明される分岐条件およびターゲットアドレス
が、プロセッサ10によって次に実行されるべき命令のロ
ケーションを決定するために用いられる。第1図に例示
された簡単な論理により、命令が条件付分岐を要求する
場合でさえも、命令パイプラインが中断なく動作するこ
とが可能になる。
プロセッサ10は「相対または絶対分岐アドレス」、
「間接分岐アドレス」または「トラップアドレス」の3
つの分岐の行先の1つを特定することができる分岐命令
を実行する。4番目の「継続アドレス」は単純に、分岐
が起こらないときに実行される、次に続く命令のもので
ある。第1図に示される経路は示された要素の間のデー
タの流れのみを示し、いくつかの信号を並列に導伝する
ことができる。当業者によって認められるであろうよう
に、制御信号経路もまた必要であるが、種々の例示され
た要素の制御を行なう方法は当業者によって周知である
ので、第1図に図示されていない。
第1図を参照すると、プロセッサ10は分岐ターゲット
アドレス(BRN TGT)マルチプレクサ/レジスタ12を含
み、これは第1図に図示されていない汎用レジスタファ
イルからデータ経路14を介して、プロセッサ10の分岐先
のロケーションを含むアドレス、いわゆる「間接分岐ア
ドレス」を受取る。分岐アドレスの第2の型、いわゆる
「相対または絶対分岐アドレス」は加算器16によって決
定される。加算器16は、第1の入力でデータ経路18を介
して命令レジスタから分岐変位値を受取る。この値は、
データ経路20を介して加算器16により第2の入力で受取
られた、現在実行されている命令のアドレスに加えられ
ることができ、この結果相対分岐アドレスを生じる。も
し加算が行なわれないなら、分岐変位アドレスのみが加
算器16によって発生され、その結果、絶対分岐アドレス
を生じる。加算器16によって発生されるアドレスはデー
タ経路22を介してBRN TGTレジスタ/マルチプレクサ12
の第2の入力に導伝される。
プロセッサ10によって実行される分岐命令に従ってプ
ロセッサ10によって発生される制御信号によって決定さ
れる、BRN TGTレジスタ/マルチプレクサ12によって選
択された分岐ターゲットアドレスは、その出力で発生さ
れ、そしてデータ経路24を介してマルチプレクサ(MU
X)26の第1の入力に導伝される。このマルチプレクサ
はその出力端子がデータ経路28を介して命令キャッシュ
30の入力端子に接続される。命令キャッシュ30は、プロ
グラムの内、プロセッサ10によって現在実行されている
部分を構成する1組の連続命令をストアするための、1
組の、好ましい実施の形態では512個の、記憶ロケーシ
ョンを含む。キャッシュ30の入力端子にアドレスを与え
ると、そのアドレスにストアされた命令がプロセッサ10
の命令レジスタに導伝され、実行されるべき次の命令と
なる。
プログラムカウンタ(PC)スタック32もまたMUX26に
よって発生されたアドレスを受取り、これはデータ経路
28を介してMUX26によって発生されたアドレスがそれに
導伝されるデコードPCレジスタ34と、データ経路38を介
してデコードPCレジスタ34の内容がそれに導伝される実
行PCレジスタ36と、さらにデータ経路42を介して実行PC
レジスタ36の内容がそれに導伝される記憶PCレジスタ40
とを含む。PCスタック32は第2図に関連して以下に説明
されるように、4ステージ命令アドレスパイプラインを
実現する。
アドレス増分器(+1)44もまたMUX26によって発生
されるアドレスを受取り、これはデータ経路28を介して
それに与えられるアドレスを1だけ増加させたアドレ
ス、すなわち継続アドレスを出力で発生する。プログラ
ムカウンタ(PROG CNT)レジスタ46はデータ経路48を介
して増分器44によって発生される継続アドレスを受取
り、そのアドレスをストアする。継続アドレスはPROG C
NTレジスタ46の出力で発生され、そしてデータ経路20を
介して加算器16の第2の入力とMUX26の第2の入力とに
導伝される。
MUX26は、上に説明された分岐条件に基づいた制御信
号を受取り、データ経路24上に与えられた分岐ターゲッ
トアドレスかまたはデータ経路20上に与えられた継続ア
ドレスのどちらを命令キャッシュ30に与えて、プロセッ
サ10によって実行されるべき次の命令をフェッチするか
を決定する。分岐を要求する命令は、分岐命令に続く命
令が実行されるまで分岐が起こらないようにプロセッサ
10によって処理される。このようにして、PCスタックパ
イプライン32によって実現された命令パイプラインは、
分岐命令がパイプラインに入るときでさえ、中断なく動
作する。これは分岐命令に通常従う命令の置換えがパイ
プラインでなされる必要がないからである。したがっ
て、分岐は第2図に関連して説明されるように、それに
割当てられたパイプラインの単一のサイクル内で起こ
る。
4ステージパイプラインがこの発明のプロセッサ10に
よって用いられる。命令フェッチステージ、命令デコー
ドステージ、命令実行ステージ、およびデータ記憶ステ
ージである。プロセッサ10によって採用された命令パイ
プラインの種々のステージは、分岐命令の実行を例示す
る第2図に示される。
いわゆる「遅延分岐」技術を採用することによって、
プロセッサ10は複雑な論理回路を必要とせずに単一のプ
ロセッササイクル内で分岐命令の実行を達成することが
できる。第2図の垂直の点線の間の空間は一つのプロセ
ッササイクルと対応し、各サイクルは等しい持続期間を
有する。「分岐1」がプロセッサ10の第1のサイクルの
間、t0からt1までにわたって示されており、そこでは分
岐命令が命令キャッシュ30からフェッチされ、プロセッ
サ10の命令レジスタ内にストアされる。プロセッサ10の
第2のサイクルの間、t1からt2までにわたって示される
「分岐2」は命令レジスタにストアされた分岐命令のデ
コードである。命令が必要とする分岐条件が上に説明さ
れた汎用レジスタから取出され、命令によって特定され
た分岐ターゲットアドレスが上に説明されたように決定
され、データバス24上を介してMUX26の第1の入力へと
導伝される。
t2からt3までにわたる「分岐3」の分岐命令の実行サ
イクルの間、条件はプロセッサ10が制御信号を発生する
ことを引起こし、今度はこの信号が(論理的に)次の命
令をフェッチする際に用いるために、命令キャッシュ30
へと分岐ターゲットアドレスまたは継続アドレスのいず
れが導伝されるべきかをMUX26が選択することを引起こ
す。t3からt4までにわたるストアバックサイクルの間
に、分岐命令に(物理的に)続く命令がプロセッサ10の
実行ステージの中にある。
第2図に示されるように、分岐遅延命令「遅延」は物
理的に分岐命令に続き、そして常に実行される。すなわ
ち分岐自身は、分岐遅延命令の後、すなわち分岐命令が
制御を移す先の命令「ターゲット」が実行されるまで、
起こることがない。このようにして、プロセッサ10は現
在の命令の実行の間、次の命令を常にフェッチすること
ができ、すなわちパイプラインをインターラプトした
り、または命令のフェッチを取消すことなく、パイプラ
インモード内で動作することができる。したがって、第
2図は、第2のサイクル「遅延1」の間に、プロセッサ
10が、キャッシュ30から、そのフェッチング、デコーデ
ィング、実行およびストアバックサイクルにおいて、今
説明した分岐命令に物理的に続く命令をフェッチするこ
とを示す。こうしてこの命令は、それに先行した分岐命
令の直後に続くパイプライン内のステージを占める。こ
うして、分岐遅延命令「遅延2」、「遅延3」および
「遅延4」のデコーディング、実行およびストアバック
サイクルが、第2図に示されるように、プロセッサ10の
第3、第4および第5のサイクルの間に起こるであろ
う。
分岐命令によって制御が移る先の命令「ターゲット」
は、第2図に示されるように、遅延命令の直後に続くパ
イプライン内のステージを占有する。こうしてターゲッ
ト命令「ターゲット1」、「ターゲット2」、「ターゲ
ット3」、および「ターゲット4」に対するフェッチン
グ、デコーディング、実行およびストアバックサイクル
は第2図に示されるようにプロセッサ10の第4、第5お
よび第6サイクルの間起こるであろう。間隔t0、t1
…、t6でクロックされるデコードPCレジスタ34、実行PC
レジスタ36および記憶PCレジスタ40の直列接続は、対応
するパイプラインステージに関連した命令のアドレスを
ストアすることによって、上で説明されたパイプライン
を実現する。
この発明のプロセッサ10は、第2図に関連して上に説
明された遅延された分岐技術を修正することにより、サ
ブルーチン呼出命令によって要求される分岐を実行する
ことができる。サブルーチン呼出命令はキャッシュ30か
らフェッチされ、第2図に「分岐1」として示される、
t0からt1までにわたるプロセッサ10の第1のサイクルの
間に、命令レジスタにストアされる。プロセッサ10の第
2のサイクルの間に、サブルーチン呼出命令「分岐2」
がデコードされ、PROG CNTレジスタ46の内容がデータ経
路20上に発生され、MUX26を介して、第1図に示されて
いないデータ経路パイプラインへ入るためのデータ経路
28上に発生される。プロセッサ10の第3のサイクル「分
岐3」の間に、PROG CNTレジスタの内容が第2図に示さ
れていないプロセッサ10の演算論理装置内で4だけ増加
され、サブルーチンからの復帰アドレスを確立する。プ
ロセッサ10の第4のサイクル「分岐4」の間に、復帰ア
ドレスは汎用レジスタ内にセーブされる。その他あらゆ
る点において、サブルーチン呼出命令を実行するための
技術は分岐命令を実行するために第2図に関連して上に
説明されたものであり、ここではサブルーチン呼出命令
によって制御が移る先の命令「ターゲット」は、サブル
ーチンの先頭の命令となるだろう。
この発明のプロセッサ10はインターラプトおよびトラ
ップを処理することができるので、分岐またはサブルー
チン呼出命令とそれに続く遅延分岐命令との間のインタ
ーラプトまたはトラップの発生に特別な考慮がされなく
てはならない。この場合プロセッサ10は、分岐または呼
出命令によって制御が移される先のターゲット命令に加
えて、インターラプトまたはトラップルーチンから復帰
した後に遅延分岐命令が実行されるようにしなくてはな
らない。インターラプトまたはトラップルーチンから復
帰するときこの結果を確実にするために、プロセッサ10
は2つの分岐を実行しなくてはならない。第1の分岐
は、インターラプトまたはトラップの発生によって後回
しにされた分岐遅延命令の実行を引き起こし、そして第
2の分岐は、遅延分岐命令に続くターゲット命令の実行
を引き起こす。
分岐またはサブルーチン読出命令とそれに続く遅延分
岐命令との間に発生するインターラプトまたはトラップ
ルーチンを実行するためにプロセッサ10によって採用さ
れた命令パイプラインの種々のステージが第3A図に例示
される。インターラプトまたはトラップルーチンからの
復帰を達成するために、プロセッサ10によって採用され
たパイプラインステージが第3B図に例示される。第3A図
を参照して、プロセッサ10の動作は時間t1で起こるイン
ターラプトによって例示される。後者の手順への修正は
当業者であれば行ない得るので、ここでは説明されな
い。例示の目的で、t0からt1までにわたる先行のサイク
ル内で、シフト命令が命令キャッシュ30からフェッチさ
れているものとして示されている。例示の目的で、パイ
プラインはまた、ジャンプ命令を含み、加算命令と、シ
フト命令がその後に続く。ジャンプ命令がインターラプ
トの発生の直前に実行され、加算およびシフト命令がま
だ実行されていないので、プロセッサ10は、インターラ
プトルーチンから復帰すると次に加算およびシフト命令
を実行する必要がある。これらの命令のアドレスはイン
ターラプトルーチンへの制御の移行の前にセーブされな
くてはならない。したがって、「セーブ_PC_ジャンプ」
命令が、インターラプトの発生に引き続いて、t1からt2
までにわたるサイクルの間にフェッチされるのが第3A図
に示されている。これはプロセッサ10が分岐遅延命令の
アドレスをセーブすることを引き起こす。この分岐遅延
命令は、インターラプトの発生に引き続くt1からt2まで
にわたるサイクルの間に実行されるべき、加算命令であ
る。PCスタック32の、実行PCレジスタ36(第1図)の内
容が従ってセーブされる。また、「セーブ_PC_ジャン
プ」命令は、プロセッサ10がデータ経路24上に、そして
MUX26を介してデータ経路28上にそしてさらにそこから
命令キャッシュ30へと、BRN TGTマルチプレクサ/レジ
スタ12の内容を発生することを引き起こすであろう。こ
れらの内容は、インターラプトルーチの第1の命令のア
ドレスである。第3A図に示されるように、プロセッサ10
はt2からt3までにわたるサイクルの間に、「セーブ_P
C」命令をフェッチし、この命令はプロセッサ10がター
ゲット命令、すなわち通常であれば加算命令に引き続い
たであろうシフト命令のアドレスをセーブすることを引
き起こす。次に、第3A図の「インターラプトハンドラ」
で示されるインターラプトルーチンの第1の命令が、t3
からt4までにわたるサイクルの間に、プロセッサ10によ
ってフェッチされるであろう。
シフト命令のデコーディングおよび加算命令の実行は
したがって、デコーディングおよび実行ステージの間、
「(加算)」および「(シフト)」によって第3A図に示
されるように放棄される。後のストアバックステージの
間に、「セーブ_PC_ジャンプ」および「セーブ_PC」命
令は、プロセッサ10が、第3A図に示されるように、加算
命令およびシフト命令のアドレスをセーブすることを引
き起こす。
第3B図を参照すると、インターラプトルーチンはプロ
セッサ10が2つのジャンプ間接命令をフェッチすること
を引き起こすことによって完了し、これらの2つの命令
はt0′からt1′までとt1′からt2′までにわたるサイク
ルの間に、デコードされるものとして示されている。次
にインターラプトルーチンから復帰するために、プロセ
ッサ10は第3A図に関連して説明された「セーブ_PC」命
令によってセーブされた値を介して間接ジャンプを行な
い、したがってt1′からt2′までにわたるサイクルの間
に、キャッシュ30から加算命令をフェッチし、「セーブ
_PC_ジャンプ」命令によってセーブされた値を介して間
接ジャンプを行ない、したがって第3B図に示されるよう
にt2′からt3′までにわたるサイクルの間に、キャッシ
ュ30からシフト命令をフェッチするであろう。こうし
て、プロセッサ10はインターラプトの発生の直前におけ
るパイプライン内でのこれら命令の生起の順序に従って
これらの命令を実行するであろう。
【図面の簡単な説明】
第1図は、単一サイクルの分岐を提供するこの発明のプ
ログラムカウンタユニットを採用する命令プロセッサの
ブロック図である。 第2図は、この発明の命令プロセッサによる分岐命令の
処理の間のパイプラインステージのタイミング図であ
る。 第3図は命令プロセッサによるインターラプトルーチン
の処理の間、およびインターラプトルーチンからの復帰
の間のパイプラインステージの複合タイミング図であ
る。 10はプロセッサ、12は分岐ターゲットアドレスマルチプ
レクサ/レジスタ、14はデータ経路、16は加算器、18、
20、22、24、28、38、42および48はデータ経路、26はマ
ルチプレクサ、30は命令キャッシュ、32はプログラムカ
ウンタスタック、34はデコードプログラムカウンタレジ
スタ、36は実行プログラムカウンタレジスタ、40はスト
アプログラムカウンタレジスタ、44は増分器、16はプロ
グラムカウンタレジスタである。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ロッド・ジー・フレック アメリカ合衆国、カリフォルニア州、マ ウンテン・ヴューライト・アヴェニュ ー、928 ナンバー・304 (72)発明者 オゥリィ・モウラー デンマーク王国 ディー・ケイ・2990 ニヴァー ロルムセン、310 (72)発明者 ジャン・ガン・コン アメリカ合衆国、カリフォルニア州、サ ン・ホセ アーグアー・ヴィスタ・ドラ イヴ、2822 (56)参考文献 特開 昭59−183434(JP,A) 特開 昭57−162034(JP,A) 特開 昭60−142747(JP,A) 特公 昭56−40382(JP,B2)

Claims (5)

    (57)【特許請求の範囲】
  1. 【請求項1】単一のサイクルで、複数個の複数ビット分
    岐命令を含むセットからの、各々が指示部を有する複数
    個のロケーションを有する命令キャッシュ内にストアさ
    れる命令をサイクル的に実行する、ディジタル命令プロ
    セッサ制御装置であって: 「次の命令との継続」アドレスを示す継続アドレス信号
    を発生するための手段と; 前記継続アドレス信号と前記分岐命令の予め定められた
    ビット部分に応答し、「分岐ターゲット」アドレスを示
    す信号を発生するための分岐ターゲットアドレス発生手
    段と;さらに 第1および第2の入力端子と、前記命令キャッシュに接
    続された出力端子とを有し、前記分岐命令の予め定めら
    れた「条件」ビット部分の内容を示す制御信号に応答
    し、前記第1の入力端子に与えられる前記分岐ターゲッ
    トアドレス信号と前記第2の入力端子に与えられる前記
    継続アドレス信号とに応答して、前記命令プロセッサに
    よって処理されるべき次の命令をフェッチするための前
    記命令キャッシュ内のロケーションを示す前記アドレス
    信号の1つを前記出力端子に選択的に導伝するための、
    第1マルチプレクサ手段とを含み、 前記分岐ターゲットアドレス発生手段が: 前記第1のマルチプレクサ手段の前記第1の入力端子に
    接続される出力端子を有し、前記複数個の分岐命令のど
    れが実行されるかを示す制御信号に応答し、前記分岐命
    令によって決定された「間接アドレス」を示す、第1の
    入力端子に与えられる信号と、「相対または絶対分岐ア
    ドレス」を示す、第2の入力端子に与えられる信号とに
    応答し、前記分岐ターゲットアドレスを示す前記アドレ
    ス信号の1つを前記出力端子に選択的に導伝するための
    第2のマルチプレクサ/レジスタ手段と;さらに 前記第2のマルチプレクサ/レジスタ手段の前記第2の
    入力端子に接続される出力端子を有し、前記複数個の分
    岐命令のどれが実行されるかを示す前記制御信号に応答
    し、前記分岐命令の予め定められた「分岐変位」部分を
    示す、第1の入力端子に与えられる信号と、そして第2
    の入力端子に与えられる前記継続アドレス信号とに応答
    し、前記第1および第2の入力端子に与えられる前記信
    号の算術的組合わせを前記出力端子で選択的に発生する
    ための加算器手段とを含む、ディジタル命令プロセッサ
    製御装置。
  2. 【請求項2】前記第1のマルチプレクサ手段の前記出力
    端子に接続され、そこに指示される各命令が命令「パイ
    プライン」内のステージを占有している、命令キャッシ
    ュロケーション指示部を示す少なくとも3つの信号をス
    トアし、そこにストアされた内容を示す信号を発生し、
    さらにそこにストアされた前記ロケーション指示部の内
    容を更新するための手段をさらに含み、そのため前記命
    令プロセッサの先行するサイクルの間、前記第1のマル
    チプレクサによって導伝された前記命令キャッシュロケ
    ーション指示部がそれの第1の記憶ロケーションの内容
    と置換り、前記第1の記憶ロケーションでストアされた
    命令キャッシュロケーション指示部が第2の記憶ロケー
    ションの内容と置換り、そして前記第2の記憶ロケーシ
    ョンでストアされた命令キャッシュロケーション指示部
    が第3の記憶ロケーションの内容と置換る、特許請求の
    範囲第1項に記載のディジタル命令プロセッサ制御装
    置。
  3. 【請求項3】前記パイプライン手段が、前記第1のマル
    チプレクサ手段の前記出力端子に接続される入力端子
    と、出力端子とを有する第1のクロックレジスタと、前
    記第1のレジスタの前記出力端子に接続される入力端子
    と、出力端子とを有する、第2のクロックレジスタと、
    さらに前記第2のレジスタの前記出力端子に接続される
    入力端子を有する第3のレジスタとを含む、特許請求の
    範囲第2項に記載のディジタル命令プロセッサ制御装
    置。
  4. 【請求項4】命令パイプラインとプログラムカウンタと
    を有し、「分岐遅延」命令と、各々が「分岐条件」を決
    定する複数個の分岐命令とを含み、各々が指示部を有す
    る複数個のロケーションを有する命令キャッシュにスト
    アされる、セットからの命令をサイクル的に実行するデ
    ジタル命令プロセッサ制御の1サイクル内で分岐を実行
    する方法であって; a) 前記プログラムカウンタの内容物によって特定さ
    れたロケーション指示部で分岐命令を前記キャッシュか
    らフェッチし、前記パイプラインに投入し、さらに継続
    するサイクルで前記分岐遅延命令を前記パイプラインに
    投入する階段と; b) 前記命令パイプラインにストアされた前記分岐命
    令をデコードする階段と; c) 前記分岐命令によって決定された前記分岐条件を
    セーブする階段と; d) デコード階段(c)で発生された情報に基づい
    て、間接、相対および絶対分岐アドレスから分岐ターゲ
    ットアドレスを選択する階段と; e) 階段(d)で選択された前記分岐ターゲットアド
    レスと、前記プログラムカウンタの内容とから段階
    (c)でセーブされた前記分岐条件情報に基づいて選択
    された前記キャッシュでのロケーションから命令をフェ
    ッチし、前記分岐遅延命令が前記パイプラインに投入さ
    れたサイクルの直後に、フェッチされた命令を前記命令
    パイプラインに投入する段階と;さらに f) プログラムカウンタの内容を、段階(e)で前記
    命令をフェッチするために用いられたアドレスを1だけ
    増やしたものと取替える段階とを含む方法。
  5. 【請求項5】前記命令セットは手順呼出命令をさらに含
    み、段階(a)は前記手順呼出命令をフェッチすること
    を要求する、1サイクルで手順を要求するための方法を
    さらに含み: g) デコーディング段階(b)で発生された情報およ
    び前記プログラムカウンタの内容に基づいて呼出復帰ア
    ドレスを決定する段階と; h) 段階(g)で決定された前記呼出復帰アドレスを
    セーブする段階とをさらに含む、特許請求の範囲第4項
    に記載の1サイクル内で分岐を実行する方法。
JP61203569A 1985-08-30 1986-08-28 ディジタル命令プロセッサ制御装置および1サイクル内で分岐を実行する方法 Expired - Lifetime JP2640454B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US06/771,327 US4777587A (en) 1985-08-30 1985-08-30 System for processing single-cycle branch instruction in a pipeline having relative, absolute, indirect and trap addresses
US771327 1985-08-30

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP8283792A Division JP2796797B2 (ja) 1985-08-30 1996-10-25 ディジタル命令プロセッサ制御装置によってインターラプトルーチンを処理する方法

Publications (2)

Publication Number Publication Date
JPS6254342A JPS6254342A (ja) 1987-03-10
JP2640454B2 true JP2640454B2 (ja) 1997-08-13

Family

ID=25091461

Family Applications (2)

Application Number Title Priority Date Filing Date
JP61203569A Expired - Lifetime JP2640454B2 (ja) 1985-08-30 1986-08-28 ディジタル命令プロセッサ制御装置および1サイクル内で分岐を実行する方法
JP8283792A Expired - Lifetime JP2796797B2 (ja) 1985-08-30 1996-10-25 ディジタル命令プロセッサ制御装置によってインターラプトルーチンを処理する方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP8283792A Expired - Lifetime JP2796797B2 (ja) 1985-08-30 1996-10-25 ディジタル命令プロセッサ制御装置によってインターラプトルーチンを処理する方法

Country Status (5)

Country Link
US (1) US4777587A (ja)
EP (1) EP0219203B1 (ja)
JP (2) JP2640454B2 (ja)
AT (1) ATE118628T1 (ja)
DE (1) DE3650232T2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2796797B2 (ja) 1985-08-30 1998-09-10 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド ディジタル命令プロセッサ制御装置によってインターラプトルーチンを処理する方法

Families Citing this family (87)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1250667A (en) * 1985-04-15 1989-02-28 Larry D. Larsen Branch control in a three phase pipelined signal processor
US5440704A (en) * 1986-08-26 1995-08-08 Mitsubishi Denki Kabushiki Kaisha Data processor having branch predicting function
US4942520A (en) * 1987-07-31 1990-07-17 Prime Computer, Inc. Method and apparatus for indexing, accessing and updating a memory
JPH0766326B2 (ja) * 1987-11-12 1995-07-19 松下電器産業株式会社 情報処理装置
JPH0760387B2 (ja) * 1987-11-12 1995-06-28 松下電器産業株式会社 情報処理装置
US5247628A (en) * 1987-11-30 1993-09-21 International Business Machines Corporation Parallel processor instruction dispatch apparatus with interrupt handler
JP2723238B2 (ja) * 1988-01-18 1998-03-09 株式会社東芝 情報処理装置
JPH0769808B2 (ja) * 1988-02-23 1995-07-31 三菱電機株式会社 データ処理装置
JPH0769817B2 (ja) * 1988-02-29 1995-07-31 日本電気株式会社 条件ジャンプ実行制御方式
US4890221A (en) * 1988-04-01 1989-12-26 Digital Equipment Corporation Apparatus and method for reconstructing a microstack
GB8815042D0 (en) * 1988-06-24 1988-08-03 Int Computers Ltd Data processing apparatus
US5136696A (en) * 1988-06-27 1992-08-04 Prime Computer, Inc. High-performance pipelined central processor for predicting the occurrence of executing single-cycle instructions and multicycle instructions
US5159680A (en) * 1988-07-28 1992-10-27 Sun Microsystems, Inc. Risc processing unit which selectively isolates register windows by indicating usage of adjacent register windows in status register
US5101341A (en) * 1988-08-25 1992-03-31 Edgcore Technology, Inc. Pipelined system for reducing instruction access time by accumulating predecoded instruction bits a FIFO
US5155818A (en) * 1988-09-28 1992-10-13 Data General Corporation Unconditional wide branch instruction acceleration
EP0365188B1 (en) * 1988-10-18 1996-09-18 Hewlett-Packard Company Central processor condition code method and apparatus
EP0378415A3 (en) * 1989-01-13 1991-09-25 International Business Machines Corporation Multiple instruction dispatch mechanism
JPH02212936A (ja) * 1989-02-14 1990-08-24 Matsushita Electron Corp パイプライン構造を有する半導体装置
US5072364A (en) * 1989-05-24 1991-12-10 Tandem Computers Incorporated Method and apparatus for recovering from an incorrect branch prediction in a processor that executes a family of instructions in parallel
JPH0795271B2 (ja) * 1989-06-20 1995-10-11 富士通株式会社 分岐命令実行装置
US5440749A (en) * 1989-08-03 1995-08-08 Nanotronics Corporation High performance, low cost microprocessor architecture
US5210841A (en) * 1990-01-30 1993-05-11 Advanced Micro Devices, Inc. External memory accessing system
EP0442116A3 (en) * 1990-02-13 1993-03-03 Hewlett-Packard Company Pipeline method and apparatus
US5163140A (en) * 1990-02-26 1992-11-10 Nexgen Microsystems Two-level branch prediction cache
US5230068A (en) * 1990-02-26 1993-07-20 Nexgen Microsystems Cache memory system for dynamically altering single cache memory line as either branch target entry or pre-fetch instruction queue based upon instruction sequence
US5226130A (en) * 1990-02-26 1993-07-06 Nexgen Microsystems Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
US5333280A (en) * 1990-04-06 1994-07-26 Nec Corporation Parallel pipelined instruction processing system for very long instruction word
JPH0437927A (ja) * 1990-06-01 1992-02-07 Sony Corp プロセッサの処理方法
CA2045791A1 (en) * 1990-06-29 1991-12-30 Richard Lee Sites Branch performance in high speed processor
WO1992006426A1 (en) * 1990-10-09 1992-04-16 Nexgen Microsystems Method and apparatus for parallel decoding of instructions with branch prediction look-up
US5454090A (en) * 1990-10-12 1995-09-26 Siemens Aktiengesellschaft Apparatus for furnishing instructions in a microprocessor with a multi-stage pipeline processing unit for processing instruction phase and having a memory and at least three additional memory units
DE69130757T2 (de) * 1990-11-30 1999-07-29 Toshiba Kawasaki Kk Ausführungsvorrichtung für bedingte Verzweigungsbefehle
US5265213A (en) * 1990-12-10 1993-11-23 Intel Corporation Pipeline system for executing predicted branch target instruction in a cycle concurrently with the execution of branch instruction
US5454089A (en) * 1991-04-17 1995-09-26 Intel Corporation Branch look ahead adder for use in an instruction pipeline sequencer with multiple instruction decoding
US5450585A (en) * 1991-05-15 1995-09-12 International Business Machines Corporation Compiler with delayed conditional branching
US5434986A (en) * 1992-01-09 1995-07-18 Unisys Corporation Interdependency control of pipelined instruction processor using comparing result of two index registers of skip instruction and next sequential instruction
JP2761688B2 (ja) * 1992-02-07 1998-06-04 三菱電機株式会社 データ処理装置
US5692167A (en) * 1992-07-31 1997-11-25 Intel Corporation Method for verifying the correct processing of pipelined instructions including branch instructions and self-modifying code in a microprocessor
US5442756A (en) * 1992-07-31 1995-08-15 Intel Corporation Branch prediction and resolution apparatus for a superscalar computer processor
US5410660A (en) * 1992-12-24 1995-04-25 Motorola, Inc. System and method for executing branch on bit set/clear instructions using microprogramming flow
US5634025A (en) * 1993-12-09 1997-05-27 International Business Machines Corporation Method and system for efficiently fetching variable-width instructions in a data processing system having multiple prefetch units
US5604909A (en) * 1993-12-15 1997-02-18 Silicon Graphics Computer Systems, Inc. Apparatus for processing instructions in a computing system
US5539888A (en) * 1993-12-23 1996-07-23 Unisys Corporation System and method for processing external conditional branch instructions
US5706459A (en) * 1994-01-06 1998-01-06 Fujitsu Limited Processor having a variable number of stages in a pipeline
GB9412487D0 (en) 1994-06-22 1994-08-10 Inmos Ltd A computer system for executing branch instructions
EP0715251B1 (en) * 1994-11-29 2000-07-26 International Business Machines Corporation One cycle processor for real time processing
JPH08212075A (ja) * 1995-01-31 1996-08-20 Nec Corp 情報処理装置
US6003127A (en) * 1995-10-04 1999-12-14 Nippondenso Co., Ltd. Pipeline processing apparatus for reducing delays in the performance of processing operations
US5905881A (en) * 1995-11-30 1999-05-18 Unisys Corporation Delayed state writes for an instruction processor
US5867699A (en) * 1996-07-25 1999-02-02 Unisys Corporation Instruction flow control for an instruction processor
AU3666697A (en) * 1996-08-20 1998-03-06 Idea Corporation A method for identifying hard-to-predict branches to enhance processor performance
US5964869A (en) * 1997-06-19 1999-10-12 Sun Microsystems, Inc. Instruction fetch mechanism with simultaneous prediction of control-flow instructions
US5935238A (en) * 1997-06-19 1999-08-10 Sun Microsystems, Inc. Selection from multiple fetch addresses generated concurrently including predicted and actual target by control-flow instructions in current and previous instruction bundles
JPH1165840A (ja) * 1997-08-11 1999-03-09 Sony Corp 演算処理装置およびその方法
US6112299A (en) * 1997-12-31 2000-08-29 International Business Machines Corporation Method and apparatus to select the next instruction in a superscalar or a very long instruction word computer having N-way branching
US6243805B1 (en) * 1998-08-11 2001-06-05 Advanced Micro Devices, Inc. Programming paradigm and microprocessor architecture for exact branch targeting
US6289442B1 (en) 1998-10-05 2001-09-11 Advanced Micro Devices, Inc. Circuit and method for tagging and invalidating speculatively executed instructions
US7191309B1 (en) 1999-09-01 2007-03-13 Intel Corporation Double shift instruction for micro engine used in multithreaded parallel processor architecture
WO2001016715A1 (en) * 1999-09-01 2001-03-08 Intel Corporation Branch instructions in a multithreaded parallel processing system
WO2001016702A1 (en) 1999-09-01 2001-03-08 Intel Corporation Register set used in multithreaded parallel processor architecture
US7120783B2 (en) 1999-12-22 2006-10-10 Ubicom, Inc. System and method for reading and writing a thread state in a multithreaded central processing unit
EP1247195A4 (en) * 1999-12-22 2005-01-05 Ubicom Inc SYSTEM AND METHOD FOR MULTITHREADING WORKING ON COMMAND LEVEL IN AN EMBEDDED PROCESSOR WITH ZERO-TIME CONTEXT SWITCHING
US7308686B1 (en) 1999-12-22 2007-12-11 Ubicom Inc. Software input/output using hard real time threads
US7047396B1 (en) 2000-06-22 2006-05-16 Ubicom, Inc. Fixed length memory to memory arithmetic and architecture for a communications embedded processor system
US7010612B1 (en) 2000-06-22 2006-03-07 Ubicom, Inc. Universal serializer/deserializer
US7681018B2 (en) * 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
US20020053017A1 (en) * 2000-09-01 2002-05-02 Adiletta Matthew J. Register instructions for a multithreaded processor
US7020871B2 (en) * 2000-12-21 2006-03-28 Intel Corporation Breakpoint method for parallel hardware threads in multithreaded processor
US6868476B2 (en) 2001-08-27 2005-03-15 Intel Corporation Software controlled content addressable memory in a general purpose execution datapath
US7216204B2 (en) 2001-08-27 2007-05-08 Intel Corporation Mechanism for providing early coherency detection to enable high performance memory updates in a latency sensitive multithreaded environment
US7487505B2 (en) 2001-08-27 2009-02-03 Intel Corporation Multithreaded microprocessor with register allocation based on number of active threads
US7225281B2 (en) 2001-08-27 2007-05-29 Intel Corporation Multiprocessor infrastructure for providing flexible bandwidth allocation via multiple instantiations of separate data buses, control buses and support mechanisms
US7610451B2 (en) 2002-01-25 2009-10-27 Intel Corporation Data transfer mechanism using unidirectional pull bus and push bus
US7437724B2 (en) * 2002-04-03 2008-10-14 Intel Corporation Registers for data transfers
US7337275B2 (en) 2002-08-13 2008-02-26 Intel Corporation Free list and ring data structure management
US6941438B2 (en) 2003-01-10 2005-09-06 Intel Corporation Memory interleaving
US7822950B1 (en) 2003-01-22 2010-10-26 Ubicom, Inc. Thread cancellation and recirculation in a computer processor for avoiding pipeline stalls
US7765388B2 (en) * 2003-09-17 2010-07-27 Broadcom Corporation Interrupt verification support mechanism
US7278014B2 (en) * 2004-12-02 2007-10-02 International Business Machines Corporation System and method for simulating hardware interrupts
US7478228B2 (en) 2006-08-31 2009-01-13 Qualcomm Incorporated Apparatus for generating return address predictions for implicit and explicit subroutine calls
JP2008165589A (ja) * 2006-12-28 2008-07-17 Fujitsu Ltd 情報処理装置
CN102117198B (zh) * 2009-12-31 2015-07-15 上海芯豪微电子有限公司 一种分支处理方法
US9817666B2 (en) * 2013-03-15 2017-11-14 Intel Corporation Method for a delayed branch implementation by using a front end track table
US9753691B2 (en) 2013-03-15 2017-09-05 Intel Corporation Method for a stage optimized high speed adder
US11003459B2 (en) 2013-03-15 2021-05-11 Intel Corporation Method for implementing a line speed interconnect structure
WO2014151773A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a line speed interconnect structure
US20170277539A1 (en) * 2016-03-24 2017-09-28 Imagination Technologies Limited Exception handling in processor using branch delay slot instruction set architecture

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS52120640A (en) * 1976-04-02 1977-10-11 Toshiba Corp Micro program control system
US4240105A (en) * 1979-08-20 1980-12-16 Yves C. Faroudja Method and apparatus for separation of chrominance and luminance with adaptive comb filtering in a quadrature modulated color television system
US4398244A (en) * 1980-05-07 1983-08-09 Fairchild Camera & Instrument Corporation Interruptible microprogram sequencing unit and microprogrammed apparatus utilizing same
JPS57162034A (en) * 1981-03-31 1982-10-05 Fujitsu Ltd Data processing system
US4399507A (en) * 1981-06-30 1983-08-16 Ibm Corporation Instruction address stack in the data memory of an instruction-pipelined processor
US4471431A (en) * 1982-09-27 1984-09-11 Data General Corporation Encachement apparatus
US4498136A (en) * 1982-12-15 1985-02-05 Ibm Corporation Interrupt processor
JPS59183434A (ja) * 1983-04-01 1984-10-18 Nippon Telegr & Teleph Corp <Ntt> 命令先取り制御方式
JPH0644238B2 (ja) * 1983-12-29 1994-06-08 株式会社日立製作所 命令再実行制御方法
EP0208181A1 (en) * 1985-06-28 1987-01-14 Hewlett-Packard Company Programme counter queue for a pipelined processor
US4777587A (en) 1985-08-30 1988-10-11 Advanced Micro Devices, Inc. System for processing single-cycle branch instruction in a pipeline having relative, absolute, indirect and trap addresses

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2796797B2 (ja) 1985-08-30 1998-09-10 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド ディジタル命令プロセッサ制御装置によってインターラプトルーチンを処理する方法

Also Published As

Publication number Publication date
EP0219203B1 (en) 1995-02-15
EP0219203A2 (en) 1987-04-22
DE3650232T2 (de) 1995-08-10
JP2796797B2 (ja) 1998-09-10
DE3650232D1 (de) 1995-03-23
JPS6254342A (ja) 1987-03-10
ATE118628T1 (de) 1995-03-15
JPH09171463A (ja) 1997-06-30
EP0219203A3 (en) 1989-07-19
US4777587A (en) 1988-10-11

Similar Documents

Publication Publication Date Title
JP2640454B2 (ja) ディジタル命令プロセッサ制御装置および1サイクル内で分岐を実行する方法
US7117347B2 (en) Processor including fallback branch prediction mechanism for far jump and far call instructions
US4858104A (en) Preceding instruction address based branch prediction in a pipelined processor
US6553488B2 (en) Method and apparatus for branch prediction using first and second level branch prediction tables
EP0423906B1 (en) Method of and apparatus for nullifying an instruction
US6338136B1 (en) Pairing of load-ALU-store with conditional branch
US5606682A (en) Data processor with branch target address cache and subroutine return address cache and method of operation
US5611061A (en) Method and processor for reliably processing interrupt demands in a pipeline processor
US5276882A (en) Subroutine return through branch history table
US6189091B1 (en) Apparatus and method for speculatively updating global history and restoring same on branch misprediction detection
US5131086A (en) Method and system for executing pipelined three operand construct
KR101081674B1 (ko) 워킹 글로벌 히스토리 레지스터를 이용하기 위한 시스템 및 방법
EP2220556B1 (en) A method and a system for accelerating procedure return sequences
KR20080014062A (ko) 마이크로프로세서에서의 효율적인 서브프로그램 복귀
JPH1196004A (ja) データプロセッサにおける条件分岐実行を制御するための方法および装置
JPS623342A (ja) パイプラインプロセツサ
US20050144427A1 (en) Processor including branch prediction mechanism for far jump and far call instructions
US7472264B2 (en) Predicting a jump target based on a program counter and state information for a process
US6044455A (en) Central processing unit adapted for pipeline process
US5903918A (en) Program counter age bits
US20050154859A1 (en) Branch prediction in a data processing apparatus
JP3602801B2 (ja) メモリデータアクセス構造およびその方法
EP0211487A1 (en) Conditional operations in computers
JPH07262006A (ja) 分岐ターゲットアドレスキャッシュを備えたデータプロセッサ
JP3100705B2 (ja) マイクロプロセッサ内の命令準備のための装置

Legal Events

Date Code Title Description
R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term