JP2518616B2 - 分岐方法 - Google Patents
分岐方法Info
- Publication number
- JP2518616B2 JP2518616B2 JP14771686A JP14771686A JP2518616B2 JP 2518616 B2 JP2518616 B2 JP 2518616B2 JP 14771686 A JP14771686 A JP 14771686A JP 14771686 A JP14771686 A JP 14771686A JP 2518616 B2 JP2518616 B2 JP 2518616B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- branch
- execution
- address
- executed
- 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
Links
- 238000000034 method Methods 0.000 title claims description 19
- 230000003247 decreasing effect Effects 0.000 claims 2
- 238000006073 displacement reaction Methods 0.000 description 24
- 230000003111 delayed effect Effects 0.000 description 11
- 230000000694 effects Effects 0.000 description 6
- 238000013459 approach Methods 0.000 description 4
- 230000006399 behavior Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 230000002123 temporal effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006866 deterioration Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000002250 progressing effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000013519 translation 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/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30069—Instruction skipping instructions, e.g. SKIP
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30058—Conditional branch instructions
-
- 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
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3846—Speculative instruction execution using static prediction, e.g. branch taken strategy
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
- G06F9/38585—Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
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)
- Devices For Executing Special Programs (AREA)
Description
【発明の詳細な説明】 〔発明の技術分野〕 本発明は分岐による実行効率の低下の防止等に有効な
分岐方式に関する。
分岐方式に関する。
条件付き分岐により判断を行う能力はコンピュータ・
システムが有用な仕事を行うには欠くことのできない条
件である。分岐するか分岐しないかの決定は一つあるい
はそれ以上の事象に基いて行われる。これらの事象は条
件と呼ばれることが多いが、これらは、正数であるか、
負数であるかあるいは0であるかという条件や、最近行
なわれた演算で、オーバーフロー、アンダフロー、ある
いはキャリーがあったか、あるいは偶奇のパリティが合
致したかあるいは、その他多くのものが含まれている。
条件付き分岐はディジタル・コンピュータでは条件付き
分岐命令により行われる。条件付き分岐命令はループや
if−then−else構文のような高水準プログラム構文を構
成するのに使用される。ループやif−then−else構文は
非常に良く使用されるため、これらを実行する条件付き
分岐命令はできるだけ効率的に実行することが肝要であ
る。
システムが有用な仕事を行うには欠くことのできない条
件である。分岐するか分岐しないかの決定は一つあるい
はそれ以上の事象に基いて行われる。これらの事象は条
件と呼ばれることが多いが、これらは、正数であるか、
負数であるかあるいは0であるかという条件や、最近行
なわれた演算で、オーバーフロー、アンダフロー、ある
いはキャリーがあったか、あるいは偶奇のパリティが合
致したかあるいは、その他多くのものが含まれている。
条件付き分岐はディジタル・コンピュータでは条件付き
分岐命令により行われる。条件付き分岐命令はループや
if−then−else構文のような高水準プログラム構文を構
成するのに使用される。ループやif−then−else構文は
非常に良く使用されるため、これらを実行する条件付き
分岐命令はできるだけ効率的に実行することが肝要であ
る。
コンピュータの命令は一つあるいは複数のステップを
覆むことによって実行される。代表的には、これらのス
テップは、最初にプログラム・カウンタが指す命令をフ
ェッチし、次にその命令が指示する演算をデコードし実
行し、最後に結果をしまい込む。単純な分岐命令はプロ
グラム内のどこかに「ジャンプ」するためにプログラム
・カウンタの内容を変更する。コンピュータ命令の実行
速度を上げるために、パイプライン方式と呼ばれる、同
時に、複数の命令を実行する手法が開発された。パイプ
ライン方式では、たとえば、CPU(中央処理装置)は1
つの命令をフエッチしながら同時に別の命令を実行し、
且つ同時に第3の命令の結果をしまい込むことができ
る。パイプライン方式のコンピュータ・システムでは、
分岐は高くつく操作である。なんとなれば、分岐命令を
実行すると、その実行結果が確定するまで他の命令の実
行が一時的に止められることがあるからである。条件付
き分岐命令を実行したらその条件が成立したとする。こ
の場合、CPUBは目標アドレスと呼ばれる新しいアドレス
に制御を移しここから実行を継続する。命令のフェッチ
はパイプライン方式コンピュータ内では命令のデコード
および実行と同時に進行するので、この条件付き分岐命
令を実行している時にはコンピュータは既にプログラム
内の分岐命令に続く命令をフェッチしてしまっている。
これは目標アドレスにある命令とは違う命令である。し
たがって、分岐命令の実行結果がわかって且つ正しい命
令がフェッチされるまで、分岐命令に続く命令パイプラ
インを一時に止めておかなければならない。コンピュー
タのスループットを最大限にするために、コンピュータ
の設計者は命令パイプラインを一時止める必要を極力少
なくしてスループットを最大にするようにコンピュータ
を設計しようとしてきた。
覆むことによって実行される。代表的には、これらのス
テップは、最初にプログラム・カウンタが指す命令をフ
ェッチし、次にその命令が指示する演算をデコードし実
行し、最後に結果をしまい込む。単純な分岐命令はプロ
グラム内のどこかに「ジャンプ」するためにプログラム
・カウンタの内容を変更する。コンピュータ命令の実行
速度を上げるために、パイプライン方式と呼ばれる、同
時に、複数の命令を実行する手法が開発された。パイプ
ライン方式では、たとえば、CPU(中央処理装置)は1
つの命令をフエッチしながら同時に別の命令を実行し、
且つ同時に第3の命令の結果をしまい込むことができ
る。パイプライン方式のコンピュータ・システムでは、
分岐は高くつく操作である。なんとなれば、分岐命令を
実行すると、その実行結果が確定するまで他の命令の実
行が一時的に止められることがあるからである。条件付
き分岐命令を実行したらその条件が成立したとする。こ
の場合、CPUBは目標アドレスと呼ばれる新しいアドレス
に制御を移しここから実行を継続する。命令のフェッチ
はパイプライン方式コンピュータ内では命令のデコード
および実行と同時に進行するので、この条件付き分岐命
令を実行している時にはコンピュータは既にプログラム
内の分岐命令に続く命令をフェッチしてしまっている。
これは目標アドレスにある命令とは違う命令である。し
たがって、分岐命令の実行結果がわかって且つ正しい命
令がフェッチされるまで、分岐命令に続く命令パイプラ
インを一時に止めておかなければならない。コンピュー
タのスループットを最大限にするために、コンピュータ
の設計者は命令パイプラインを一時止める必要を極力少
なくしてスループットを最大にするようにコンピュータ
を設計しようとしてきた。
先行技術では、条件付き分岐で命令パイプラインの進
行を止めてしまわないように幾つかの機構を使用してき
た。第1に、ある種の高性能処理装置ではいろいろな分
岐予測機構を使用して条件付き分岐が成功するか失敗す
るかを予測していた。この手法は広範なハードウェアが
必要になり、その広範なハードウェアの必要のため最高
性能コンピュータ以外では全く受け入れることができな
い。他の構成では、プログラム中で分岐命令に続くアド
レスにある命令と分岐目標アドレスにある命令との両者
をフェッチする。この手法は、これも高価なハードウェ
アと、条件付き分岐命令の後では常に2組の命令をフェ
ッチするための余分なメモリアクセスとが必要であるた
め、受入れることはできない。更に別の構成では、命令
内に、分岐命令の後のアドレス命令と分岐目標アドレス
にある命令のいずれがより実行される可能性が高いかを
コンピュータに知らせるビットを備えている。これによ
りコンピュータはより可能性の高い命令をフェッチし、
その予測が外れた場合にのみパイプラインを一時的に止
める。この手法は高価なハードウェアを必要とし、また
予測が外れた場合にはパイプラインを逆流させ、適切な
命令をフェッチするのに余分な時間が浪費される。更に
別の構成では、分岐が起るか起らないかに基いて、CPU
に分岐命令に続く命令を常に実行するかまたは決して実
行しないかを指示するために、命令中の2ビットを用い
ている。この構成は命令中のビットをあまりに多く使用
しており、分岐命令が分岐により到達できる最大範囲が
狭くなる。最後に、更に他の構成では、分岐を行うか行
わないかにかかわらずその前に、プログラム中で次のア
ドレスにある命令を常に実行している。
行を止めてしまわないように幾つかの機構を使用してき
た。第1に、ある種の高性能処理装置ではいろいろな分
岐予測機構を使用して条件付き分岐が成功するか失敗す
るかを予測していた。この手法は広範なハードウェアが
必要になり、その広範なハードウェアの必要のため最高
性能コンピュータ以外では全く受け入れることができな
い。他の構成では、プログラム中で分岐命令に続くアド
レスにある命令と分岐目標アドレスにある命令との両者
をフェッチする。この手法は、これも高価なハードウェ
アと、条件付き分岐命令の後では常に2組の命令をフェ
ッチするための余分なメモリアクセスとが必要であるた
め、受入れることはできない。更に別の構成では、命令
内に、分岐命令の後のアドレス命令と分岐目標アドレス
にある命令のいずれがより実行される可能性が高いかを
コンピュータに知らせるビットを備えている。これによ
りコンピュータはより可能性の高い命令をフェッチし、
その予測が外れた場合にのみパイプラインを一時的に止
める。この手法は高価なハードウェアを必要とし、また
予測が外れた場合にはパイプラインを逆流させ、適切な
命令をフェッチするのに余分な時間が浪費される。更に
別の構成では、分岐が起るか起らないかに基いて、CPU
に分岐命令に続く命令を常に実行するかまたは決して実
行しないかを指示するために、命令中の2ビットを用い
ている。この構成は命令中のビットをあまりに多く使用
しており、分岐命令が分岐により到達できる最大範囲が
狭くなる。最後に、更に他の構成では、分岐を行うか行
わないかにかかわらずその前に、プログラム中で次のア
ドレスにある命令を常に実行している。
プログラム中で分岐命令に続くアドレスにある命令を
実行する技法は遅延分岐(delayed branching)として
知られている。遅延分岐は、パイプライン内の命令が常
に実行されパイプラインが止まることがないので望まし
い。これは遅延分岐を採用することにより、コンピュー
タが分岐命令を実行する時間が与えられるとともに、コ
ンピュータはパイプライン内の命令を実行しながら次の
命令のアドレスを受け取ることができるからである。こ
の技法は命令パイプラインが止まることを回避してはい
るが、分岐命令の後に結局はNOP(無動作命令)を置く
ことが必要になることが多いこともよく知られている。
この場合には最終的には何の役にもたたない命令のため
に命令フェッチを行なうことになり上述の遅延分岐の効
果が打消されるので、性能の向上にはならない。
実行する技法は遅延分岐(delayed branching)として
知られている。遅延分岐は、パイプライン内の命令が常
に実行されパイプラインが止まることがないので望まし
い。これは遅延分岐を採用することにより、コンピュー
タが分岐命令を実行する時間が与えられるとともに、コ
ンピュータはパイプライン内の命令を実行しながら次の
命令のアドレスを受け取ることができるからである。こ
の技法は命令パイプラインが止まることを回避してはい
るが、分岐命令の後に結局はNOP(無動作命令)を置く
ことが必要になることが多いこともよく知られている。
この場合には最終的には何の役にもたたない命令のため
に命令フェッチを行なうことになり上述の遅延分岐の効
果が打消されるので、性能の向上にはならない。
遅延分岐の長所を活用する一つのソフトウェア技法と
してマージャ(merger)がある。マージャは、ループ分
岐命令がループの終りにあるループ構造で用いられる。
マージャはループの最初の命令と同じ命令をループの分
岐命令の次の命令位置に複製し、更に分岐の目標アドレ
スをループの第2の命令とすることにより、遅延分岐の
長所を利用している。マージャに関して起り得る一つの
問題は、ループから脱出する際にはプログラムは必らず
しも遅延分岐命令をもう一度実行したい(つまり分岐命
令の次のアドレスの命令まで実行したい)とは思わない
ということである。これは常に遅延分岐を行なうアーキ
テクチャで問題となる点である。
してマージャ(merger)がある。マージャは、ループ分
岐命令がループの終りにあるループ構造で用いられる。
マージャはループの最初の命令と同じ命令をループの分
岐命令の次の命令位置に複製し、更に分岐の目標アドレ
スをループの第2の命令とすることにより、遅延分岐の
長所を利用している。マージャに関して起り得る一つの
問題は、ループから脱出する際にはプログラムは必らず
しも遅延分岐命令をもう一度実行したい(つまり分岐命
令の次のアドレスの命令まで実行したい)とは思わない
ということである。これは常に遅延分岐を行なうアーキ
テクチャで問題となる点である。
先行技術の多くのコンピュータ・システムでは、分岐
をまもなく実行すると判定すると、コンピュータ・シス
テムは命令パイプラインを一時的に止める、すなわちイ
ンタロックする。パイプライをインタロックするとはコ
ンピュータが次の命令をフェッチするのを停止させ、ま
たパイプライがパイプライン内の命令の実行に移らない
ようにすることが含まれる。インタロックを行なうと、
パイプライン方式により得られる性能向上が減殺される
ので、回避すべきである。
をまもなく実行すると判定すると、コンピュータ・シス
テムは命令パイプラインを一時的に止める、すなわちイ
ンタロックする。パイプライをインタロックするとはコ
ンピュータが次の命令をフェッチするのを停止させ、ま
たパイプライがパイプライン内の命令の実行に移らない
ようにすることが含まれる。インタロックを行なうと、
パイプライン方式により得られる性能向上が減殺される
ので、回避すべきである。
本発明、ハードウェアの量と性能の低下を最小限にす
る分岐方式を提出することにある。この方式のために命
令中のビットはできる限り消費しないことが好ましい。
というのも、1ビットは消費されれば分岐命令の最大分
岐範囲は実際半分になってしまうからである。
る分岐方式を提出することにある。この方式のために命
令中のビットはできる限り消費しないことが好ましい。
というのも、1ビットは消費されれば分岐命令の最大分
岐範囲は実際半分になってしまうからである。
本発明の好ましい実施例によれば、ディジタル・コン
ピュータ内の分岐法が提出される。本発明の好ましい実
施例では、分岐が起るか起らないかを分岐のディスプレ
ースメントに基いて静的に予測する分岐命令が与えられ
る。この方式では可能な場合には遅延分岐を利用する
が、遅延スロットに置かれた命令を有効に利用できない
場合には分岐命令の後に続く遅延スロットにある命令の
取り消し(nullification)を行う。
ピュータ内の分岐法が提出される。本発明の好ましい実
施例では、分岐が起るか起らないかを分岐のディスプレ
ースメントに基いて静的に予測する分岐命令が与えられ
る。この方式では可能な場合には遅延分岐を利用する
が、遅延スロットに置かれた命令を有効に利用できない
場合には分岐命令の後に続く遅延スロットにある命令の
取り消し(nullification)を行う。
本発明はいくつかの点で先行技術よりすぐれている。
第1に、本発明の好ましい実施例は分岐ディスプレーメ
ントの現行の符号ビットに基いて、命令内に他のビット
を設けることを必要とせずに、条件付きの分岐命令につ
いて条件の合致により分岐が成功する可能性の方が高い
かまたは分岐が失敗する可能性の方が高いのかを予測す
ることができる。第2に本発明の好ましい実施例では、
条件付きの分岐の直後に置かれている命令の使用が最適
化される。これにより命令パイプラインの進行が一時的
に止まる可能性と、その結果生じる性能の低下とが少な
くなる。第3に、本発明の好ましい実施例は命令を利用
することができない場合にのみ分岐の後に置かれた命令
を取り消す(nullify)。最後に、本発明の好ましい実
施例は通常の遅延分岐のように分岐命令の後に置かれた
命令を常に実行したり、あるいは通常の分岐のように分
岐命令の後に置かれた命令は、常に実行されないという
のではなく、分岐の方向に基いてもっと柔軟且つ効率的
な取り消しを行なう。
第1に、本発明の好ましい実施例は分岐ディスプレーメ
ントの現行の符号ビットに基いて、命令内に他のビット
を設けることを必要とせずに、条件付きの分岐命令につ
いて条件の合致により分岐が成功する可能性の方が高い
かまたは分岐が失敗する可能性の方が高いのかを予測す
ることができる。第2に本発明の好ましい実施例では、
条件付きの分岐の直後に置かれている命令の使用が最適
化される。これにより命令パイプラインの進行が一時的
に止まる可能性と、その結果生じる性能の低下とが少な
くなる。第3に、本発明の好ましい実施例は命令を利用
することができない場合にのみ分岐の後に置かれた命令
を取り消す(nullify)。最後に、本発明の好ましい実
施例は通常の遅延分岐のように分岐命令の後に置かれた
命令を常に実行したり、あるいは通常の分岐のように分
岐命令の後に置かれた命令は、常に実行されないという
のではなく、分岐の方向に基いてもっと柔軟且つ効率的
な取り消しを行なう。
第2図は本発明の好ましい実施例による比較分岐命令
の命令フォーマットである。比較分岐命令501はコンピ
ュータが命令を実行するのに使用する32ビットの情報か
ら構成されている。この命令は分岐の機能と2つのオペ
ランドを比較する動作とを組み合わせたものであるが、
本発明は分岐だけの命令によっても同様によく実現する
ことができる。比較分岐命令501は6ビットの命令コー
ド・フィールド502,5ビットの第1ソース・レジスタ・
アドレス・フィールド503,5ビットの第2ソース・レジ
スタ・アドレス・フィールド504,3ビットの条件コード
・フィールド505,11ビットの分岐ディスプレースメント
・フィールド506および1ビットのディスプレースメン
ト・フィールド符号ビット508,および取り消しビット50
7から成っている。命令コード・フィールド502はこの命
令が比較分岐命令であることを識別する。第1および第
2のソース・レジスタ・アドレス・フィールド503と504
は、その内容が比較されることになるレジスタを指示す
る。分岐ディスプレースメントは、正でも負でもよい
が、フィールド508と506により指示される。すなわちフ
ィールド508をフィールド506の最上位ビットの左側に連
結してできる数が通常の符号付き2進数で表現されたデ
ィスプレースメントになる。このディスプレースメント
は分岐の目標アドレスを計算するのに使用される。本実
施例では、取り消しビット507をセットしておくことに
より命令パイプライン内の次の命令の実行を取り消すこ
とができる。
の命令フォーマットである。比較分岐命令501はコンピ
ュータが命令を実行するのに使用する32ビットの情報か
ら構成されている。この命令は分岐の機能と2つのオペ
ランドを比較する動作とを組み合わせたものであるが、
本発明は分岐だけの命令によっても同様によく実現する
ことができる。比較分岐命令501は6ビットの命令コー
ド・フィールド502,5ビットの第1ソース・レジスタ・
アドレス・フィールド503,5ビットの第2ソース・レジ
スタ・アドレス・フィールド504,3ビットの条件コード
・フィールド505,11ビットの分岐ディスプレースメント
・フィールド506および1ビットのディスプレースメン
ト・フィールド符号ビット508,および取り消しビット50
7から成っている。命令コード・フィールド502はこの命
令が比較分岐命令であることを識別する。第1および第
2のソース・レジスタ・アドレス・フィールド503と504
は、その内容が比較されることになるレジスタを指示す
る。分岐ディスプレースメントは、正でも負でもよい
が、フィールド508と506により指示される。すなわちフ
ィールド508をフィールド506の最上位ビットの左側に連
結してできる数が通常の符号付き2進数で表現されたデ
ィスプレースメントになる。このディスプレースメント
は分岐の目標アドレスを計算するのに使用される。本実
施例では、取り消しビット507をセットしておくことに
より命令パイプライン内の次の命令の実行を取り消すこ
とができる。
本発明の好ましい実施例では、今実行されている命令
の実行を取消すことができる。取り消しの目的は、たと
えその目的がフェッチされ、その命令が実行されてしま
っても、あたかもその命令がパイプライン内に全く存在
していなかったように見せかけることである。取り消し
はその命令がCPUの状態を変えさせないようにすること
により行われる。コンピュータの状態を変えないように
するには、取り消しプロセスは取り消された命令の結果
がレジスタまたはメモリ・ロケーションに書き込まれな
いようにするとともに、副作用、たとえば、取り消され
た命令により発生する割り込み、が起ることのないよう
にしなければならない。これは好ましい実施例では、書
き込み信号を前の命令で発生した取り消し信号で抑止
(qualify)して、放置しておけばコンピュータ・シス
テムの状態を変えてしまうであろう計算の結果の記憶が
生起しないようにすることにより行われる。今実行中の
命令の書き込み信号を抑止する簡単な方法は、書き込み
信号と前の命令で発生し一時的に保持されている取り消
し信号の論理積を取ることである。命令により発生した
取り消し信号は、たとえば、処理装置のステータス・ワ
ード内に保持し次の命令に使うようにすることができ
る。取り消しは、極めて有効な技法である。なんとなれ
ば、この技法を用いれば、パイプライン中の他の命令に
より行われている判断の結果、今フェッチしようとして
いる命令が実行されなくなるか否かに関係なくその命令
をパイプライン内にフェッチすることができるからであ
る。すなわちこのようにしてフェッチされた命令は単に
パイプライン中を進行し、演算結果を記憶するところま
で進む。ここにおいてこの命令を最後の瞬間に取り消
し、その命令がパイプライン中にはまるで存在しなかっ
たと同じ効果を発揮することができる。
の実行を取消すことができる。取り消しの目的は、たと
えその目的がフェッチされ、その命令が実行されてしま
っても、あたかもその命令がパイプライン内に全く存在
していなかったように見せかけることである。取り消し
はその命令がCPUの状態を変えさせないようにすること
により行われる。コンピュータの状態を変えないように
するには、取り消しプロセスは取り消された命令の結果
がレジスタまたはメモリ・ロケーションに書き込まれな
いようにするとともに、副作用、たとえば、取り消され
た命令により発生する割り込み、が起ることのないよう
にしなければならない。これは好ましい実施例では、書
き込み信号を前の命令で発生した取り消し信号で抑止
(qualify)して、放置しておけばコンピュータ・シス
テムの状態を変えてしまうであろう計算の結果の記憶が
生起しないようにすることにより行われる。今実行中の
命令の書き込み信号を抑止する簡単な方法は、書き込み
信号と前の命令で発生し一時的に保持されている取り消
し信号の論理積を取ることである。命令により発生した
取り消し信号は、たとえば、処理装置のステータス・ワ
ード内に保持し次の命令に使うようにすることができ
る。取り消しは、極めて有効な技法である。なんとなれ
ば、この技法を用いれば、パイプライン中の他の命令に
より行われている判断の結果、今フェッチしようとして
いる命令が実行されなくなるか否かに関係なくその命令
をパイプライン内にフェッチすることができるからであ
る。すなわちこのようにしてフェッチされた命令は単に
パイプライン中を進行し、演算結果を記憶するところま
で進む。ここにおいてこの命令を最後の瞬間に取り消
し、その命令がパイプライン中にはまるで存在しなかっ
たと同じ効果を発揮することができる。
パイプライン方式コンピュータ・システムでは、実行
すべき次の命令に関して明確な2つの概念が存在する。
第1の概念は時間的次命令である。これは命令パイプラ
イン中で、今実行されている命令のすぐ後を流れている
命令である。この命令は今実行中の命令後に実行され、
動作の結果は取り消されないかぎり記憶される。第2の
概念は空間的次命令である。これはプログラムの中で今
実行中の命令の直後に置かれている命令である。普通は
今実行中の命令に対する空間的次命令は時間的命令でも
ある。この規則の例外は実際に分岐を行なう分岐命令
(たとえば無条件分岐命令や、分岐条件が成立した条件
付き分岐命令)の所で発生する。この場合、時間的次命
令は、一般にその分岐命令の空間的次命令ではない目標
アドレスにある命令になる。
すべき次の命令に関して明確な2つの概念が存在する。
第1の概念は時間的次命令である。これは命令パイプラ
イン中で、今実行されている命令のすぐ後を流れている
命令である。この命令は今実行中の命令後に実行され、
動作の結果は取り消されないかぎり記憶される。第2の
概念は空間的次命令である。これはプログラムの中で今
実行中の命令の直後に置かれている命令である。普通は
今実行中の命令に対する空間的次命令は時間的命令でも
ある。この規則の例外は実際に分岐を行なう分岐命令
(たとえば無条件分岐命令や、分岐条件が成立した条件
付き分岐命令)の所で発生する。この場合、時間的次命
令は、一般にその分岐命令の空間的次命令ではない目標
アドレスにある命令になる。
遅延スロット命令とは遅延分岐命令の時間的次命令で
ある。一般に、遅延スロットル命令は分岐命令の空間的
次命令となる。この規則の例外は分岐命令の次の分岐命
令の場合である。この場合には、第2の分岐命令の遅延
スロット命令は第2の分岐命令の空間的次命令ではなく
第1の分岐命令の目標アドレスとなる。
ある。一般に、遅延スロットル命令は分岐命令の空間的
次命令となる。この規則の例外は分岐命令の次の分岐命
令の場合である。この場合には、第2の分岐命令の遅延
スロット命令は第2の分岐命令の空間的次命令ではなく
第1の分岐命令の目標アドレスとなる。
本発明の好ましい実施例における無条件分岐は取り消
しおよび遅延スロット命令の概念を明確に示している。
取り消しビットがオフの場合には、無条件分岐命令の遅
延スロット命令は常に実行される。これは遅延分岐命令
を常に使用することに相当している。取り消しビットが
オンの場合には無条件分岐命令の遅延スロット命令は常
に取り消される。これは遅延スロット命令を決して実行
しないことに相当する。
しおよび遅延スロット命令の概念を明確に示している。
取り消しビットがオフの場合には、無条件分岐命令の遅
延スロット命令は常に実行される。これは遅延分岐命令
を常に使用することに相当している。取り消しビットが
オンの場合には無条件分岐命令の遅延スロット命令は常
に取り消される。これは遅延スロット命令を決して実行
しないことに相当する。
第1図は本発明の好ましい実施例による条件付き分岐
命令の動作をなす。第1図において、コンピュータで条
件付き分岐命令102を含む命令列100から成るプログラム
101が実行されるとする。分岐命令102の空間的次命令は
命令103である。条件付き分岐命令102が負の分岐ディス
プレースメントを有するとしたとき、命令104が目標ア
ドレスにあるとする。また条件付き分岐命令102が正の
分岐ディスプレースメントを有するとしたとき、命令10
5が目標アドレスにあるとする。プログラムの実行をグ
ラフ110,111,112,113,および114により示す。通常の実
行中、プログラムはある命令を実行し、次いでその命令
の空間的次命令を実行する。
命令の動作をなす。第1図において、コンピュータで条
件付き分岐命令102を含む命令列100から成るプログラム
101が実行されるとする。分岐命令102の空間的次命令は
命令103である。条件付き分岐命令102が負の分岐ディス
プレースメントを有するとしたとき、命令104が目標ア
ドレスにあるとする。また条件付き分岐命令102が正の
分岐ディスプレースメントを有するとしたとき、命令10
5が目標アドレスにあるとする。プログラムの実行をグ
ラフ110,111,112,113,および114により示す。通常の実
行中、プログラムはある命令を実行し、次いでその命令
の空間的次命令を実行する。
グラフ110,111,および113は取り消しビットがオフの
状態での分岐命令の動作を示す。これは決して取り消し
を行なわない。すなわち常に実行するという場合に相当
する。分岐命令に続く遅延スロットル命令は分岐が行わ
れるか否かに関係なく、およびそのディスプレースメン
トが正か負かに関係なく常に実行される。分岐命令が成
立しなかったときは、実行グラフ110に示すように空間
的次命令103から継続する。分岐条件が成立したとき
は、先ず遅延スロット命令が実行される。次いでディス
プレースメントが負の場合には目標アドレスにある命令
がグラフ11に示すように実行される。ディスプレースメ
ントが正の場合には目標アドレスにある命令がグラフ11
3に示したように実行される。
状態での分岐命令の動作を示す。これは決して取り消し
を行なわない。すなわち常に実行するという場合に相当
する。分岐命令に続く遅延スロットル命令は分岐が行わ
れるか否かに関係なく、およびそのディスプレースメン
トが正か負かに関係なく常に実行される。分岐命令が成
立しなかったときは、実行グラフ110に示すように空間
的次命令103から継続する。分岐条件が成立したとき
は、先ず遅延スロット命令が実行される。次いでディス
プレースメントが負の場合には目標アドレスにある命令
がグラフ11に示すように実行される。ディスプレースメ
ントが正の場合には目標アドレスにある命令がグラフ11
3に示したように実行される。
グラフ110,111,112,および114は取り消しビットをオ
ンとした分岐命令の動作を示している。これは以下に説
明する「取り消しを行なったり行なわなかったりする」
場合に相当する。取り消しビットがオンの場合、遅延ス
ロット命令は分岐の方向および分岐を行なうか行わない
かを決める条件が真であるか偽りであるかに基いて取り
消されたり取り消されなかったりする。グラフ110と114
は、分岐をトリガする条件が偽で分岐が行なわれない場
合の分岐命令の動作を示す。分岐ディスプレースメント
が正であれば、遅延スロット命令は、グラフ110に示さ
れるように実行される。分岐ディスプレースメントが負
であれば、遅延スロット命令は、グラフ114に示される
ように取り消される。グラフ112および114中の点線は、
遅延スロット命令はフェッチされはするのだが、あたか
も、命令パイプライン中には全く存在していないかのよ
うに取り消されることを示している。
ンとした分岐命令の動作を示している。これは以下に説
明する「取り消しを行なったり行なわなかったりする」
場合に相当する。取り消しビットがオンの場合、遅延ス
ロット命令は分岐の方向および分岐を行なうか行わない
かを決める条件が真であるか偽りであるかに基いて取り
消されたり取り消されなかったりする。グラフ110と114
は、分岐をトリガする条件が偽で分岐が行なわれない場
合の分岐命令の動作を示す。分岐ディスプレースメント
が正であれば、遅延スロット命令は、グラフ110に示さ
れるように実行される。分岐ディスプレースメントが負
であれば、遅延スロット命令は、グラフ114に示される
ように取り消される。グラフ112および114中の点線は、
遅延スロット命令はフェッチされはするのだが、あたか
も、命令パイプライン中には全く存在していないかのよ
うに取り消されることを示している。
グラフ111と112は分岐をトリガする条件が真で分岐を
行なう場合の、取り消しビットがオンになっている分岐
命令の動作を示す。分岐ディスプレースメントが正の場
合には、遅延スロット命令はグラフ112に示すように取
り消され実行はアドレスから続けられる。分岐ディスプ
レースメントが負の場合には、グラフ111に示すように
遅延スロット命令が実行されてから目標アドレスの命令
に制御が移る。
行なう場合の、取り消しビットがオンになっている分岐
命令の動作を示す。分岐ディスプレースメントが正の場
合には、遅延スロット命令はグラフ112に示すように取
り消され実行はアドレスから続けられる。分岐ディスプ
レースメントが負の場合には、グラフ111に示すように
遅延スロット命令が実行されてから目標アドレスの命令
に制御が移る。
第3図は分岐動作を示すフローチャートである。グラ
フ111から114まではこのフローチャートを参照すればも
っと明瞭に理解されるであろう。最初のステップでは取
り消しビットがオンか否かを調べることである。取り消
しビットがオフであれば、分岐命令の遅延スロット命令
は常に実行される。この動作は分岐が行われても行われ
なくても起る。取り消しビットがオンであれば、分岐命
令の次の遅延スロット命令が分岐が行われ且つ分岐ディ
スプレースメントが負である場合、あるいは分岐が行わ
れず且つ分岐ディスプレースメントが正である場合の他
は、実行されない。
フ111から114まではこのフローチャートを参照すればも
っと明瞭に理解されるであろう。最初のステップでは取
り消しビットがオンか否かを調べることである。取り消
しビットがオフであれば、分岐命令の遅延スロット命令
は常に実行される。この動作は分岐が行われても行われ
なくても起る。取り消しビットがオンであれば、分岐命
令の次の遅延スロット命令が分岐が行われ且つ分岐ディ
スプレースメントが負である場合、あるいは分岐が行わ
れず且つ分岐ディスプレースメントが正である場合の他
は、実行されない。
本発明の好ましい実施例の動作は非常に単純だが非常
に有効な静的分岐予測を行なっている。この静的分岐予
測では、正および負のディスプレースメントの分岐がど
のように行われるかに基いて、分岐が行われることにな
るか否かを予測する。したがってどの命令をフェッチす
べきかを予測する。その有効性は条件付き分岐命令を用
いて或る高水準のプログラム制御構造を実現するにあた
り一組のソフトウェア規約にしたがうコンピュータ・ソ
フトウェアによって決まる。たとえば、ループ構成は後
方への(つまりディスプレースメントが負の)条件付き
分岐により実現されるので、負のディスプレースメント
の分岐動作は頻繁に起ることになる。事実、N回実行さ
れるループの場合には負のディスプレースメントの分岐
はN回の中N−1回成功することになる。仮定されるソ
フトウェア規約の他の例としてif−then−else構文では
稀にしか行われない部分は、前方への(つまりディプレ
ースメントが正)の分岐により制御を移して実行し、こ
れにより、より頻繁に実行される部分を分岐が起らなか
った場合の実行経路中の分岐命令にすぐ後に置くことが
できるようになる。たとえば、前方への分岐により通常
のプログラムでは稀にしか実行されないエラー処理ルー
チンへ飛ぶようにすることができる。加えて、取り消し
ビットを備えている本発明の好ましい実施例は上述の静
的分岐予測技法と関連して遅延スロット命令の使用を一
般化し最適化している。取り消しビットがオンのときに
は、静的分岐予測技法により頻度が高いと予測されてい
るところの、後方への条件付き分岐が成功した場合また
は前方への条件付き分岐が失敗した場合に遅延スロット
命令が実行される。したがって頻繁な経路内の有用な命
令の幾つかは、たとえば、上記のマネージャ技法で述べ
たようにして、遅延スロット命令として実行することが
できる。取り消しビットがオンである場合、稀であるこ
とが予測されているところの、後方への条件付き分岐の
失敗または、前方への条件付き分岐の成功が起ると、遅
延スロットの命令の実行が取り消される。したがって性
能を低下させる取り消しが起るのはごく稀である。
に有効な静的分岐予測を行なっている。この静的分岐予
測では、正および負のディスプレースメントの分岐がど
のように行われるかに基いて、分岐が行われることにな
るか否かを予測する。したがってどの命令をフェッチす
べきかを予測する。その有効性は条件付き分岐命令を用
いて或る高水準のプログラム制御構造を実現するにあた
り一組のソフトウェア規約にしたがうコンピュータ・ソ
フトウェアによって決まる。たとえば、ループ構成は後
方への(つまりディスプレースメントが負の)条件付き
分岐により実現されるので、負のディスプレースメント
の分岐動作は頻繁に起ることになる。事実、N回実行さ
れるループの場合には負のディスプレースメントの分岐
はN回の中N−1回成功することになる。仮定されるソ
フトウェア規約の他の例としてif−then−else構文では
稀にしか行われない部分は、前方への(つまりディプレ
ースメントが正)の分岐により制御を移して実行し、こ
れにより、より頻繁に実行される部分を分岐が起らなか
った場合の実行経路中の分岐命令にすぐ後に置くことが
できるようになる。たとえば、前方への分岐により通常
のプログラムでは稀にしか実行されないエラー処理ルー
チンへ飛ぶようにすることができる。加えて、取り消し
ビットを備えている本発明の好ましい実施例は上述の静
的分岐予測技法と関連して遅延スロット命令の使用を一
般化し最適化している。取り消しビットがオンのときに
は、静的分岐予測技法により頻度が高いと予測されてい
るところの、後方への条件付き分岐が成功した場合また
は前方への条件付き分岐が失敗した場合に遅延スロット
命令が実行される。したがって頻繁な経路内の有用な命
令の幾つかは、たとえば、上記のマネージャ技法で述べ
たようにして、遅延スロット命令として実行することが
できる。取り消しビットがオンである場合、稀であるこ
とが予測されているところの、後方への条件付き分岐の
失敗または、前方への条件付き分岐の成功が起ると、遅
延スロットの命令の実行が取り消される。したがって性
能を低下させる取り消しが起るのはごく稀である。
取り消しビットがオフの場合は、遅延スロット命令は
常に実行される。これは分岐成功時の実行経路と分岐失
敗時の実行経路とに共通な命令を遅延スロット命令とす
ることができる場合に相当する。
常に実行される。これは分岐成功時の実行経路と分岐失
敗時の実行経路とに共通な命令を遅延スロット命令とす
ることができる場合に相当する。
第4図は本発明の好ましい実施例を適用できる装置の
機能的ブロック図である。この装置は命令メモリ301,オ
プションの仮想アドレス変換ユニット302,命令ユニット
303,実行ユニット304,オプションの浮動小点ユニット30
5,およびオプションのレジスタ・フアイル306の6つの
機能要素を備えている。これらの機能要素は結果バス31
0,第1オペランド・バス311,次命令バス312,第2オペラ
ンド・バス313,およびアドレス・バス314の5本のバス
を介して互いに接続されている。実行ユニット304と命
令ユニット303とだけが本発明の好ましい実施例の動作
を行うのに関係している。実行ユニットは分岐するか分
岐しないかの判断を行うための条件を発生しおよびまた
は記憶する。命令ユニットはメモリからフエッチすべき
次の命令のアドレスを発生して分岐を行い、アドレスを
プログラム・カウンタに記憶させる手段となる。本発明
の好まし実施例では、メモリ・ユニットは実行ユニット
が使用する論理回路と同程度の速さの高速キャシュであ
る。
機能的ブロック図である。この装置は命令メモリ301,オ
プションの仮想アドレス変換ユニット302,命令ユニット
303,実行ユニット304,オプションの浮動小点ユニット30
5,およびオプションのレジスタ・フアイル306の6つの
機能要素を備えている。これらの機能要素は結果バス31
0,第1オペランド・バス311,次命令バス312,第2オペラ
ンド・バス313,およびアドレス・バス314の5本のバス
を介して互いに接続されている。実行ユニット304と命
令ユニット303とだけが本発明の好ましい実施例の動作
を行うのに関係している。実行ユニットは分岐するか分
岐しないかの判断を行うための条件を発生しおよびまた
は記憶する。命令ユニットはメモリからフエッチすべき
次の命令のアドレスを発生して分岐を行い、アドレスを
プログラム・カウンタに記憶させる手段となる。本発明
の好まし実施例では、メモリ・ユニットは実行ユニット
が使用する論理回路と同程度の速さの高速キャシュであ
る。
第5図は第4図の装置のタイム・チャートである。タ
イミング図は命令401,402,403,および404の実行に関係
する4つの段階を示している。右方向に進行する時間を
表す時間軸460はステップに分割されている。各命令に
ついての4つの時間ステップは、命令アドレス発生ステ
ップ410,命令フェッチ・ステップ411,実行ステップ412,
および書き込みステップ413である。命令の実行は所望
の任意の深さにパイプライン化することができる。本発
明の好ましい実施例は4段階のパイプラインを備えてい
る。第5図に示すように、4つの命令はどの時間ステッ
プにおいても実行されている。時刻450で命令401の書き
込みステップは命令402の実行ステップ,命令403の命令
フェッチ・ステップおよび命令404の命令アドレス発生
ステップとオーバーラップしている。このことは分岐命
令について考えれば、分岐命令が実行ステップにある間
に次の命令がフェッチされてしまっていることになると
いうことを意味する。命令アドレス発生ステップの間
に、次の命令アドレスが実行すべき次の命令のアドレス
を含んでいるプログラム・カウンタから計算され、命令
ユニット303に置かれる。命令フェッチ・ステップの
間、次の命令が命令メモリ301からフェッチされる。こ
の動作は、命令アドレス発生ステップで計算されたアド
レスの内容をアドレス・バス314に与え、そのアドレス
の内容を次命令バス312に移しここで命令ユニットによ
りデコードされることにより行われる。分岐命令は他の
動作、たとえば、これもこの時刻に実行ユニット304で
デコードされ実行される比較動作と組み合わせることも
できる。
イミング図は命令401,402,403,および404の実行に関係
する4つの段階を示している。右方向に進行する時間を
表す時間軸460はステップに分割されている。各命令に
ついての4つの時間ステップは、命令アドレス発生ステ
ップ410,命令フェッチ・ステップ411,実行ステップ412,
および書き込みステップ413である。命令の実行は所望
の任意の深さにパイプライン化することができる。本発
明の好ましい実施例は4段階のパイプラインを備えてい
る。第5図に示すように、4つの命令はどの時間ステッ
プにおいても実行されている。時刻450で命令401の書き
込みステップは命令402の実行ステップ,命令403の命令
フェッチ・ステップおよび命令404の命令アドレス発生
ステップとオーバーラップしている。このことは分岐命
令について考えれば、分岐命令が実行ステップにある間
に次の命令がフェッチされてしまっていることになると
いうことを意味する。命令アドレス発生ステップの間
に、次の命令アドレスが実行すべき次の命令のアドレス
を含んでいるプログラム・カウンタから計算され、命令
ユニット303に置かれる。命令フェッチ・ステップの
間、次の命令が命令メモリ301からフェッチされる。こ
の動作は、命令アドレス発生ステップで計算されたアド
レスの内容をアドレス・バス314に与え、そのアドレス
の内容を次命令バス312に移しここで命令ユニットによ
りデコードされることにより行われる。分岐命令は他の
動作、たとえば、これもこの時刻に実行ユニット304で
デコードされ実行される比較動作と組み合わせることも
できる。
実行ステップ412で、分岐命令が実行される。実行ス
テップ412の間、分岐命令の目標アドレスおよびこの分
岐命令の空間的次命令のアドレスの両方が発生する。こ
の分岐命令が他の動作と組み合わされていれば、その動
作はこのときに実行される。実行ステップの終りに、2
つのアドレスの一方がプログラム・カウンタに移され
る。どのアドレスがプログラム・カウンタに移されるか
は実行ユニット304に記憶されている条件で決まる。書
き込みステップ413の間では、組み合わされた動作によ
る結果を記憶する必要がないかぎり書込み等の動作は起
らない。命令実行による結果や割込受付等の副作用のメ
モリやレジスタへの書込みを皆、ステップ412および413
より早くない時期に行なうことにより、常にパイプライ
ン内にある命令を取り消すという概念を簡単に実現する
ことができる。
テップ412の間、分岐命令の目標アドレスおよびこの分
岐命令の空間的次命令のアドレスの両方が発生する。こ
の分岐命令が他の動作と組み合わされていれば、その動
作はこのときに実行される。実行ステップの終りに、2
つのアドレスの一方がプログラム・カウンタに移され
る。どのアドレスがプログラム・カウンタに移されるか
は実行ユニット304に記憶されている条件で決まる。書
き込みステップ413の間では、組み合わされた動作によ
る結果を記憶する必要がないかぎり書込み等の動作は起
らない。命令実行による結果や割込受付等の副作用のメ
モリやレジスタへの書込みを皆、ステップ412および413
より早くない時期に行なうことにより、常にパイプライ
ン内にある命令を取り消すという概念を簡単に実現する
ことができる。
以上説明したように本発明によればハードウェアを複
雑化せずに、分岐命令による実行効率の低下を防止でき
る。
雑化せずに、分岐命令による実行効率の低下を防止でき
る。
第1図は本発明の一実施例に基いて実現された条件付き
分岐命令の動作を説明するための図,第2図は本発明の
一実施例に基いて実現された比較分岐命令のフォーマッ
トを示す図,第3図は本発明の一実施例に基く分岐動作
を示すフローチャート,第4図は本発明の一実施例に基
く装置の機能的ブロック図,第5図は第4図に示す装置
のタイム・チャートである。 101:プログラム, 102:条件付き分岐命令, 103,104,105:命令, 501:比較分岐命令, 506:ディスプレースメント・フィールド, 507:取り消しビット, 508:ディスプレースメント・フィールド符号ビット。
分岐命令の動作を説明するための図,第2図は本発明の
一実施例に基いて実現された比較分岐命令のフォーマッ
トを示す図,第3図は本発明の一実施例に基く分岐動作
を示すフローチャート,第4図は本発明の一実施例に基
く装置の機能的ブロック図,第5図は第4図に示す装置
のタイム・チャートである。 101:プログラム, 102:条件付き分岐命令, 103,104,105:命令, 501:比較分岐命令, 506:ディスプレースメント・フィールド, 507:取り消しビット, 508:ディスプレースメント・フィールド符号ビット。
Claims (3)
- 【請求項1】パイプライン方式のコンピュータの条件付
き分岐命令の直後の遅延スロット中の命令を実質的に実
行するか抑止するかを定める分岐方法において、 前記分岐の方向がアドレスの増加方向でありかつ分岐条
件が成立しない場合と前記分岐の方向がアドレスの減少
方向でありかつ分岐条件が成立した場合には前記遅延ス
ロット中の命令を実行し、 前記分岐の方向がアドレスの増加方向でありかつ分岐条
件が成立した場合と前記分岐の方向がアドレスの減少方
向でありかつ分岐条件が成立しない場合には前記遅延ス
ロット中の命令の実行を抑止する ことを特徴とする分岐方法。 - 【請求項2】条件付き分岐命令中に、遅延スロット中の
命令を常に実行することを指示する指示子を設けたこと
を特徴とする特許請求の範囲第1項項記載の分岐方法。 - 【請求項3】前記遅延スロット中の命令の実行の抑止
は、当該命令の実行による結果の書込みを抑止すること
により行うことを特徴とする特許請求の範囲第1項また
は第2項記載の分岐方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US06/750,625 US4755966A (en) | 1985-06-28 | 1985-06-28 | Bidirectional branch prediction and optimization |
US750625 | 1985-06-28 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPS623340A JPS623340A (ja) | 1987-01-09 |
JP2518616B2 true JP2518616B2 (ja) | 1996-07-24 |
Family
ID=25018608
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP14771686A Expired - Lifetime JP2518616B2 (ja) | 1985-06-28 | 1986-06-24 | 分岐方法 |
Country Status (8)
Country | Link |
---|---|
US (2) | US4755966A (ja) |
EP (2) | EP0423906B1 (ja) |
JP (1) | JP2518616B2 (ja) |
KR (1) | KR940005817B1 (ja) |
CN (1) | CN1010618B (ja) |
AU (2) | AU589977B2 (ja) |
CA (1) | CA1270573A1 (ja) |
DE (2) | DE3680722D1 (ja) |
Families Citing this family (62)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5440704A (en) * | 1986-08-26 | 1995-08-08 | Mitsubishi Denki Kabushiki Kaisha | Data processor having branch predicting function |
US5341482A (en) * | 1987-03-20 | 1994-08-23 | Digital Equipment Corporation | Method for synchronization of arithmetic exceptions in central processing units having pipelined execution units simultaneously executing instructions |
US5247627A (en) * | 1987-06-05 | 1993-09-21 | Mitsubishi Denki Kabushiki Kaisha | Digital signal processor with conditional branch decision unit and storage of conditional branch decision results |
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 |
JPS6488844A (en) * | 1987-09-30 | 1989-04-03 | Takeshi Sakamura | Data processor |
US5155818A (en) * | 1988-09-28 | 1992-10-13 | Data General Corporation | Unconditional wide branch instruction acceleration |
EP0365187A3 (en) * | 1988-10-18 | 1992-04-29 | Apollo Computer Inc. | Apparatus for selective execution of instructions following a branch instruction |
EP0378415A3 (en) * | 1989-01-13 | 1991-09-25 | International Business Machines Corporation | Multiple instruction dispatch mechanism |
US5093908A (en) * | 1989-04-17 | 1992-03-03 | International Business Machines Corporation | Method and apparatus for executing instructions in a single sequential instruction stream in a main processor and a coprocessor |
US5136697A (en) * | 1989-06-06 | 1992-08-04 | Advanced Micro Devices, Inc. | System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache |
EP0442116A3 (en) * | 1990-02-13 | 1993-03-03 | Hewlett-Packard Company | Pipeline method and apparatus |
US5303377A (en) * | 1990-03-27 | 1994-04-12 | North American Philips Corporation | Method for compiling computer instructions for increasing instruction cache efficiency |
EP0481031A4 (en) * | 1990-05-04 | 1993-01-27 | International Business Machines Corporation | System for compounding instructions for handling instruction and data stream for processor with different attributes |
EP0825529A3 (en) * | 1990-05-04 | 1998-04-29 | International Business Machines Corporation | System for preparing instructions for instruction parallel processor and system with mechanism for branching in the middle of a compound instruction |
US5303356A (en) * | 1990-05-04 | 1994-04-12 | International Business Machines Corporation | System for issuing instructions for parallel execution subsequent to branch into a group of member instructions with compoundability in dictation tag |
JP2845578B2 (ja) * | 1990-06-19 | 1999-01-13 | 甲府日本電気 株式会社 | 命令制御方式 |
EP0463973A3 (en) * | 1990-06-29 | 1993-12-01 | Digital Equipment Corp | Branch prediction in high performance processor |
US5283873A (en) * | 1990-06-29 | 1994-02-01 | Digital Equipment Corporation | Next line prediction apparatus for a pipelined computed system |
JP2834292B2 (ja) * | 1990-08-15 | 1998-12-09 | 株式会社日立製作所 | データ・プロセッサ |
JP2508907B2 (ja) * | 1990-09-18 | 1996-06-19 | 日本電気株式会社 | 遅延分岐命令の制御方式 |
JP2534392B2 (ja) * | 1990-09-21 | 1996-09-11 | 三田工業株式会社 | 画像形成装置のための自己診断および自己修復システム |
US5303355A (en) * | 1991-03-27 | 1994-04-12 | Motorola, Inc. | Pipelined data processor which conditionally executes a predetermined looping instruction in hardware |
US5450585A (en) * | 1991-05-15 | 1995-09-12 | International Business Machines Corporation | Compiler with delayed conditional branching |
JP2875909B2 (ja) * | 1991-07-12 | 1999-03-31 | 三菱電機株式会社 | 並列演算処理装置 |
EP0551090B1 (en) * | 1992-01-06 | 1999-08-04 | Hitachi, Ltd. | Computer having a parallel operating capability |
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 |
JPH06259262A (ja) * | 1993-03-08 | 1994-09-16 | Fujitsu Ltd | 分岐確率を設定するコンパイラの処理方法および処理装置 |
US5426600A (en) * | 1993-09-27 | 1995-06-20 | Hitachi America, Ltd. | Double precision division circuit and method for digital signal processor |
JP3452655B2 (ja) * | 1993-09-27 | 2003-09-29 | 株式会社日立製作所 | ディジタル信号処理プロセッサおよびそれを用いて命令を実行する方法 |
US5815695A (en) * | 1993-10-28 | 1998-09-29 | Apple Computer, Inc. | Method and apparatus for using condition codes to nullify instructions based on results of previously-executed instructions on a computer processor |
TW261676B (ja) * | 1993-11-02 | 1995-11-01 | Motorola Inc | |
US5539888A (en) * | 1993-12-23 | 1996-07-23 | Unisys Corporation | System and method for processing external conditional branch instructions |
US5799180A (en) * | 1995-10-31 | 1998-08-25 | Texas Instruments Incorporated | Microprocessor circuits, systems, and methods passing intermediate instructions between a short forward conditional branch instruction and target instruction through pipeline, then suppressing results if branch taken |
US5905881A (en) * | 1995-11-30 | 1999-05-18 | Unisys Corporation | Delayed state writes for an instruction processor |
US5774709A (en) * | 1995-12-06 | 1998-06-30 | Lsi Logic Corporation | Enhanced branch delay slot handling with single exception program counter |
US5796997A (en) * | 1996-05-15 | 1998-08-18 | Hewlett-Packard Company | Fast nullify system and method for transforming a nullify function into a select function |
US5799167A (en) * | 1996-05-15 | 1998-08-25 | Hewlett-Packard Company | Instruction nullification system and method for a processor that executes instructions out of order |
US5867699A (en) * | 1996-07-25 | 1999-02-02 | Unisys Corporation | Instruction flow control for an instruction processor |
US5974538A (en) * | 1997-02-21 | 1999-10-26 | Wilmot, Ii; Richard Byron | Method and apparatus for annotating operands in a computer system with source instruction identifiers |
US6401196B1 (en) * | 1998-06-19 | 2002-06-04 | Motorola, Inc. | Data processor system having branch control and method thereof |
US6192515B1 (en) * | 1998-07-17 | 2001-02-20 | Intel Corporation | Method for software pipelining nested loops |
US6862563B1 (en) | 1998-10-14 | 2005-03-01 | Arc International | Method and apparatus for managing the configuration and functionality of a semiconductor design |
US20060168431A1 (en) * | 1998-10-14 | 2006-07-27 | Peter Warnes | Method and apparatus for jump delay slot control in a pipelined processor |
JP3470948B2 (ja) * | 1999-01-28 | 2003-11-25 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 動的コンパイル時期決定方法、バイトコード実行モード選択方法、及びコンピュータ |
US6571385B1 (en) * | 1999-03-22 | 2003-05-27 | Intel Corporation | Early exit transformations for software pipelining |
US7421572B1 (en) | 1999-09-01 | 2008-09-02 | Intel Corporation | Branch instruction for processor with branching dependent on a specified bit in a register |
US7546444B1 (en) | 1999-09-01 | 2009-06-09 | Intel Corporation | Register set used in multithreaded parallel processor architecture |
US6662360B1 (en) * | 1999-09-27 | 2003-12-09 | International Business Machines Corporation | Method and system for software control of hardware branch prediction mechanism in a data processor |
US6446197B1 (en) * | 1999-10-01 | 2002-09-03 | Hitachi, Ltd. | Two modes for executing branch instructions of different lengths and use of branch control instruction and register set loaded with target instructions |
WO2001069411A2 (en) | 2000-03-10 | 2001-09-20 | Arc International Plc | Memory interface and method of interfacing between functional entities |
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 |
DE10101949C1 (de) * | 2001-01-17 | 2002-08-08 | Infineon Technologies Ag | Datenverarbeitungsverfahren |
JP4141112B2 (ja) * | 2001-04-12 | 2008-08-27 | 株式会社日立製作所 | プロセッサおよびプロセッサシステム |
US6785804B2 (en) * | 2001-05-17 | 2004-08-31 | Broadcom Corporation | Use of tags to cancel a conditional branch delay slot instruction |
US7437724B2 (en) | 2002-04-03 | 2008-10-14 | Intel Corporation | Registers for data transfers |
US7668622B2 (en) * | 2004-03-30 | 2010-02-23 | Honeywell International Inc. | Efficient blending based on blending component availablity for a partial blend duration |
JP2006011723A (ja) * | 2004-06-24 | 2006-01-12 | Matsushita Electric Ind Co Ltd | 分岐制御方法、および情報処理装置 |
US8127113B1 (en) | 2006-12-01 | 2012-02-28 | Synopsys, Inc. | Generating hardware accelerators and processor offloads |
US8683455B1 (en) | 2011-01-12 | 2014-03-25 | Google Inc. | Method and system for optimizing an executable program by selectively merging identical program entities |
US8689200B1 (en) * | 2011-01-12 | 2014-04-01 | Google Inc. | Method and system for optimizing an executable program by generating special operations for identical program entities |
US20170277539A1 (en) * | 2016-03-24 | 2017-09-28 | Imagination Technologies Limited | Exception handling in processor using branch delay slot instruction set architecture |
US10970073B2 (en) | 2018-10-02 | 2021-04-06 | International Business Machines Corporation | Branch optimization during loading |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
BE789583A (fr) * | 1971-10-01 | 1973-02-01 | Sanders Associates Inc | Appareil de controle de programme pour machine de traitement del'information |
GB1448866A (en) * | 1973-04-13 | 1976-09-08 | Int Computers Ltd | Microprogrammed data processing systems |
JPS52120735A (en) * | 1976-04-05 | 1977-10-11 | Agency Of Ind Science & Technol | Microporogram control unit |
US4378589A (en) * | 1976-12-27 | 1983-03-29 | International Business Machines Corporation | Undirectional looped bus microcomputer architecture |
US4210960A (en) * | 1977-09-02 | 1980-07-01 | Sperry Corporation | Digital computer with overlapped operation utilizing conditional control to minimize time losses |
US4325120A (en) * | 1978-12-21 | 1982-04-13 | Intel Corporation | Data processing system |
SE456051B (sv) * | 1980-02-11 | 1988-08-29 | Western Electric Co | Digital processoranordning anordnad for pipeline-databehandlingsoperationer |
US4539635A (en) * | 1980-02-11 | 1985-09-03 | At&T Bell Laboratories | Pipelined digital processor arranged for conditional operation |
US4390946A (en) * | 1980-10-20 | 1983-06-28 | Control Data Corporation | Lookahead addressing in a pipeline computer control store with separate memory segments for single and multiple microcode instruction sequences |
US4514804A (en) * | 1981-11-25 | 1985-04-30 | Nippon Electric Co., Ltd. | Information handling apparatus having a high speed instruction-executing function |
WO1985000453A1 (en) * | 1983-07-11 | 1985-01-31 | Prime Computer, Inc. | Data processing system |
US4742454A (en) * | 1983-08-30 | 1988-05-03 | Amdahl Corporation | Apparatus for buffer control bypass |
JPH0754461B2 (ja) * | 1985-02-08 | 1995-06-07 | 株式会社日立製作所 | 情報処理装置 |
CA1254661A (en) * | 1985-06-28 | 1989-05-23 | Allen J. Baum | Method and means for instruction combination for code compression |
JPS6393038A (ja) * | 1986-10-07 | 1988-04-23 | Mitsubishi Electric Corp | 計算機 |
-
1985
- 1985-06-28 US US06/750,625 patent/US4755966A/en not_active Expired - Lifetime
-
1986
- 1986-06-02 CN CN86103708A patent/CN1010618B/zh not_active Expired
- 1986-06-12 EP EP19900203019 patent/EP0423906B1/en not_active Expired - Lifetime
- 1986-06-12 DE DE8686304500T patent/DE3680722D1/de not_active Expired - Lifetime
- 1986-06-12 EP EP19860304500 patent/EP0207665B1/en not_active Expired - Lifetime
- 1986-06-12 DE DE3650413T patent/DE3650413T2/de not_active Expired - Lifetime
- 1986-06-19 CA CA 511954 patent/CA1270573A1/en active Granted
- 1986-06-24 JP JP14771686A patent/JP2518616B2/ja not_active Expired - Lifetime
- 1986-06-24 AU AU59171/86A patent/AU589977B2/en not_active Expired
- 1986-06-27 KR KR1019860005172A patent/KR940005817B1/ko not_active IP Right Cessation
-
1988
- 1988-03-21 US US07/170,520 patent/US5051896A/en not_active Expired - Lifetime
-
1990
- 1990-01-19 AU AU48670/90A patent/AU627828B2/en not_active Expired
Also Published As
Publication number | Publication date |
---|---|
AU627828B2 (en) | 1992-09-03 |
DE3650413D1 (de) | 1995-11-09 |
CA1272296C (ja) | 1990-07-31 |
DE3680722D1 (de) | 1991-09-12 |
CN86103708A (zh) | 1986-12-24 |
EP0423906A2 (en) | 1991-04-24 |
EP0207665A1 (en) | 1987-01-07 |
KR870000643A (ko) | 1987-02-19 |
AU4867090A (en) | 1990-05-10 |
KR940005817B1 (ko) | 1994-06-23 |
EP0423906B1 (en) | 1995-10-04 |
DE3650413T2 (de) | 1996-03-07 |
US4755966A (en) | 1988-07-05 |
US5051896A (en) | 1991-09-24 |
CA1270573A1 (en) | 1990-06-19 |
EP0207665B1 (en) | 1991-08-07 |
AU589977B2 (en) | 1989-10-26 |
EP0423906A3 (en) | 1991-08-28 |
CN1010618B (zh) | 1990-11-28 |
JPS623340A (ja) | 1987-01-09 |
AU5917186A (en) | 1987-01-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2518616B2 (ja) | 分岐方法 | |
US5421020A (en) | Counter register implementation for speculative execution of branch on count instructions | |
JP3120152B2 (ja) | コンピューターシステム | |
JP3093639B2 (ja) | プロセッサ内の資源割当て追跡方法及びそのシステム | |
JP2796797B2 (ja) | ディジタル命令プロセッサ制御装置によってインターラプトルーチンを処理する方法 | |
JPH1069386A (ja) | 推測的な実行を支援する論理装置 | |
US6687812B1 (en) | Parallel processing apparatus | |
WO1993022722A1 (en) | A system and method for retiring instructions in a superscalar microprocessor | |
JP2001516918A (ja) | データプロセッサ | |
JPH07248897A (ja) | コンピュータ・システムにおける例外からの回復方法、及びそのための装置 | |
KR20040016829A (ko) | 파이프라인식 프로세서에서의 예외 취급 방법, 장치 및시스템 | |
US5574872A (en) | Method and apparatus for controlling the saving of pipelines in pipelined processors during trap handling | |
JPH06332697A (ja) | データ処理システム | |
US5974522A (en) | Machine for processing interrupted out-of-order instructions | |
US6622240B1 (en) | Method and apparatus for pre-branch instruction | |
JP3207124B2 (ja) | カウント/リンク・レジスタ変更命令の投機実行をサポートする方法及び装置 | |
US5943494A (en) | Method and system for processing multiple branch instructions that write to count and link registers | |
US6983359B2 (en) | Processor and method for pre-fetching out-of-order instructions | |
JPH06266556A (ja) | データ処理装置 | |
EP1039376B1 (en) | Sub-instruction emulation in a VLIW processor | |
WO2006006613A1 (en) | Methods and apparatus for updating of a branch history table | |
US6718460B1 (en) | Mechanism for error handling in a computer system | |
EP0211487A1 (en) | Conditional operations in computers | |
EP1235139A2 (en) | System and method for supporting precise exceptions in a data processor having a clustered architecture | |
JP3668643B2 (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 |