JPH09171463A - ディジタル命令プロセッサ制御装置によってインターラプトルーチンを処理する方法 - Google Patents

ディジタル命令プロセッサ制御装置によってインターラプトルーチンを処理する方法

Info

Publication number
JPH09171463A
JPH09171463A JP8283792A JP28379296A JPH09171463A JP H09171463 A JPH09171463 A JP H09171463A JP 8283792 A JP8283792 A JP 8283792A JP 28379296 A JP28379296 A JP 28379296A JP H09171463 A JPH09171463 A JP H09171463A
Authority
JP
Japan
Prior art keywords
instruction
pipeline
branch
processor
branching
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.)
Granted
Application number
JP8283792A
Other languages
English (en)
Other versions
JP2796797B2 (ja
Inventor
Brian W Case
ブライアン・ダブリュ・ケース
Rod G Fleck
ロッド・ジー・フレック
Ole Moller
オゥリィ・モウラー
Gan Kon Jean
ジャン・ガン・コン
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 JPH09171463A publication Critical patent/JPH09171463A/ja
Application granted granted Critical
Publication of JP2796797B2 publication Critical patent/JP2796797B2/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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/323Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect 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)

Abstract

(57)【要約】 【課題】 1サイクルで分岐を行ない、命令のパイプラ
インを分断させない一方、複雑な回路を要求することな
しに完全に正確な分岐予測を提供する、RISC内で用
いるのに適したインターラプトルーチンを処理する方法
を提供する。 【解決手段】 インターラプトルーチンを処理する方法
は、(a)インターラプト発生の2サイクル前にパイプ
ラインに投入された命令のロケーション指示部をセーブ
する段階と、(b)インターラプト発生の1サイクル前
に投入された命令のロケーション指示部をセーブする段
階と、(c)インターラプトルーチンを処理する段階
と、(d)インターラプトルーチンから復帰する前に、
段階(a)でセーブされたロケーション指示部にある命
令をパイプラインに投入する段階と、(e)インターラ
プトルーチンから復帰する前に、段階(b)でセーブさ
れたロケーション指示部にある命令をパイプラインに投
入する段階とを含む。

Description

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

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 各々が指示部を持った複数個のロケーシ
    ョンを有する命令キャッシュにストアされた、セットか
    らの命令をサイクル的に実行する命令パイプラインを有
    するディジタル命令プロセッサ制御装置によってインタ
    ーラプトルーチンを処理する方法であって: a ) インターラプトの発生の2サイクル前に、パイプ
    ライン内に置かれた命令のロケーション指示部をセーブ
    する段階と; b ) インターラプトの発生の1サイクル前に、パイプ
    ラインに置かれた命令のロケーション指示部をセーブす
    る段階と; c ) 前記インターラプトルーチンを処理する段階と; d ) 前記インターラプトルーチンから復帰する前に、
    段階(a)でセーブされたロケーション指示部に位置さ
    れた命令を前記パイプラインに対してフェッチする段階
    と;さらに e ) 前記インターラプトルーチンから復帰する前に、
    段階(b)でセーブされたロケーション指示部に位置さ
    れた命令を前記パイプラインに対してフェッチする段階
    とを含む、方法。
  2. 【請求項2】 f ) 前記インターラプトルーチンから
    の復帰に続いて、段階(a)でセーブされたロケーショ
    ン指示部で前記キャッシュから第1の間接分岐命令をフ
    ェッチし、そして前記命令パイプライン内に前記命令を
    投入する段階と; g) 前記インターラプトルーチンからの復帰に続い
    て、段階(b)でセーブされたロケーション指示部で前
    記キャッシュから第2の間接分岐命令をフェッチし、そ
    して前記命令パイプライン内に前記命令を投入する段階
    とをさらに含む、請求項1に記載のインターラプトルー
    チンを処理する方法。
  3. 【請求項3】 前記命令プロセッサ制御はプログラムカ
    ウンタを有し、そしてフェッチング段階(f)は: f1) 前記プログラムカウンタの内容によって特定さ
    れたロケーション指示部で前記キャッシュから前記第1
    の間接分岐命令をフェッチし、そして命令レジスタ内に
    前記命令をストアする段階と; f2) 前記命令レジスタにストアされた前記命令をデ
    コードする段階と; f3) デコード段階(f2)で発生された情報に基づ
    いて間接分岐アドレスを決定する段階とを含み、 前記段階(g)は、 g1) 段階(f3)で決定された前記第2の間接分岐
    アドレスから決定された前記キャッシュのロケーション
    から命令をフェッチする段階と;さらに g2) プログラムカウンタの内容を、段階(g1)で
    前記命令をフェッチするために用いられるアドレスを1
    だけ増やしたものと取替える段階とを含む、請求項2に
    記載のインターラプトルーチンを処理する方法。
JP8283792A 1985-08-30 1996-10-25 ディジタル命令プロセッサ制御装置によってインターラプトルーチンを処理する方法 Expired - Lifetime JP2796797B2 (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 Parent Applications (1)

Application Number Title Priority Date Filing Date
JP61203569A Division JP2640454B2 (ja) 1985-08-30 1986-08-28 ディジタル命令プロセッサ制御装置および1サイクル内で分岐を実行する方法

Publications (2)

Publication Number Publication Date
JPH09171463A true JPH09171463A (ja) 1997-06-30
JP2796797B2 JP2796797B2 (ja) 1998-09-10

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 Before (1)

Application Number Title Priority Date Filing Date
JP61203569A Expired - Lifetime JP2640454B2 (ja) 1985-08-30 1986-08-28 ディジタル命令プロセッサ制御装置および1サイクル内で分岐を実行する方法

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)

Families Citing this family (88)

* 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
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
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 Kabushiki Kaisha Toshiba, Kawasaki, Kanagawa 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 三菱電機株式会社 データ処理装置
US5442756A (en) * 1992-07-31 1995-08-15 Intel Corporation Branch prediction and resolution apparatus for a superscalar computer processor
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
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
WO1998008160A1 (en) * 1996-08-20 1998-02-26 Idea Corporation A method for identifying hard-to-predict branches to enhance processor performance
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
US5964869A (en) * 1997-06-19 1999-10-12 Sun Microsystems, Inc. Instruction fetch mechanism with simultaneous prediction of control-flow instructions
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
AU7098600A (en) 1999-09-01 2001-03-26 Intel Corporation Instruction for multithreaded parallel processor
WO2001016702A1 (en) 1999-09-01 2001-03-08 Intel Corporation Register set used in multithreaded parallel processor architecture
AU2597401A (en) * 1999-12-22 2001-07-03 Ubicom, Inc. System and method for instruction level multithreading in an embedded processor using zero-time context switching
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
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
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
US7487505B2 (en) 2001-08-27 2009-02-03 Intel Corporation Multithreaded microprocessor with register allocation based on number of active threads
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
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 上海芯豪微电子有限公司 一种分支处理方法
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
US9817666B2 (en) 2013-03-15 2017-11-14 Intel Corporation Method for a delayed branch implementation by using a front end track table
KR20170089973A (ko) 2013-03-15 2017-08-04 인텔 코포레이션 회선 속도 상호 연결 구조를 구현하는 방법
US20170277539A1 (en) * 2016-03-24 2017-09-28 Imagination Technologies Limited Exception handling in processor using branch delay slot instruction set architecture

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS57162034A (en) * 1981-03-31 1982-10-05 Fujitsu Ltd Data processing system

Family Cites Families (10)

* 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
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS57162034A (en) * 1981-03-31 1982-10-05 Fujitsu Ltd Data processing system

Also Published As

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

Similar Documents

Publication Publication Date Title
JP2796797B2 (ja) ディジタル命令プロセッサ制御装置によってインターラプトルーチンを処理する方法
US6553488B2 (en) Method and apparatus for branch prediction using first and second level branch prediction tables
US4858104A (en) Preceding instruction address based branch prediction in a pipelined processor
EP0423906B1 (en) Method of and apparatus for nullifying an instruction
US5832259A (en) Apparatus for superscalar instruction pre-decoding using cached instruction lengths
US5276882A (en) Subroutine return through branch history table
EP0134620B1 (en) Data processing apparatus and method
EP1003095B1 (en) A computer system for executing branch instructions
US6338136B1 (en) Pairing of load-ALU-store with conditional branch
US5542109A (en) Address tracking and branch resolution in a processor with multiple execution pipelines and instruction stream discontinuities
KR100571322B1 (ko) 파이프라인식 프로세서에서의 예외 취급 방법, 장치 및시스템
US20050210224A1 (en) Processor including fallback branch prediction mechanism for far jump and far call instructions
JPH05143336A (ja) デジタル・コンピユータ及び分岐命令実行方法
KR101081674B1 (ko) 워킹 글로벌 히스토리 레지스터를 이용하기 위한 시스템 및 방법
JPH06236271A (ja) プロセッサおよび命令推測実行方法
US20040030860A1 (en) Conditional execution control head in a vliw processor
US5889986A (en) Instruction fetch unit including instruction buffer and secondary or branch target buffer that transfers prefetched instructions to the instruction buffer
JP2003058366A (ja) 分岐予測なしで分岐ペナルティを減少させる新規なフェッチ分岐アーキテクチャ
JP2526017B2 (ja) ランタイム遅延削減方法及びデ―タ処理システム
US5590293A (en) Dynamic microbranching with programmable hold on condition, to programmable dynamic microbranching delay minimization
US20050144427A1 (en) Processor including branch prediction mechanism for far jump and far call instructions
JP2003263313A (ja) デジタルプロセッサおよび命令の選択方法
EP0211487A1 (en) Conditional operations in computers
JP2002182902A (ja) メモリデータアクセス構造およびその方法
US11036510B2 (en) Processing merging predicated instruction with timing permitting previous value of destination register to be unavailable when the merging predicated instruction is at a given pipeline stage at which a processing result is determined

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 19980519

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