JP2000132392A - 分岐予測システムおよび分岐予測方法 - Google Patents
分岐予測システムおよび分岐予測方法Info
- Publication number
- JP2000132392A JP2000132392A JP10303717A JP30371798A JP2000132392A JP 2000132392 A JP2000132392 A JP 2000132392A JP 10303717 A JP10303717 A JP 10303717A JP 30371798 A JP30371798 A JP 30371798A JP 2000132392 A JP2000132392 A JP 2000132392A
- Authority
- JP
- Japan
- Prior art keywords
- branch
- instruction
- taken
- stage
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims description 14
- 230000001934 delay Effects 0.000 abstract description 4
- 230000003252 repetitive effect Effects 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 8
- 239000004606 Fillers/Extenders Substances 0.000 description 5
- 239000012536 storage buffer Substances 0.000 description 3
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/382—Pipelined decoding, e.g. using predecoding
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/323—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/324—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address using program counter relative addressing
-
- 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
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)
Abstract
(57)【要約】
【課題】 繰り返し命令中の条件分岐命令時の1パイプ
ラインサイクルの遅延総数を大幅に削減し、命令を効率
よく実行する。 【解決手段】 デコードステージの前半において命令を
デコードして分岐命令かそうでないかを判断し、分岐命
令である場合は、分岐命令に含まれているオフセットを
参照し、オフセットの最上位ビットにより分岐成立、分
岐不成立を予測し、分岐成立と予測した場合は、プログ
ラムカウンタの値にオフセットを2ビット左シフトさせ
て符号拡張した値を加算して分岐先アドレスを算出し、
分岐不成立と予測した場合は、プログラムカウンタの値
に4を加算し、実行ステージで真の分岐成立、分岐不成
立を判断し、予測した分岐成立、分岐不成立が正しけれ
ば、デコードステージで算出したプログラムカウンタの
値を用いて命令を継続し、正しくなければ、プログラム
カウンタの値を元に戻し、アドレスを計算し直す。
ラインサイクルの遅延総数を大幅に削減し、命令を効率
よく実行する。 【解決手段】 デコードステージの前半において命令を
デコードして分岐命令かそうでないかを判断し、分岐命
令である場合は、分岐命令に含まれているオフセットを
参照し、オフセットの最上位ビットにより分岐成立、分
岐不成立を予測し、分岐成立と予測した場合は、プログ
ラムカウンタの値にオフセットを2ビット左シフトさせ
て符号拡張した値を加算して分岐先アドレスを算出し、
分岐不成立と予測した場合は、プログラムカウンタの値
に4を加算し、実行ステージで真の分岐成立、分岐不成
立を判断し、予測した分岐成立、分岐不成立が正しけれ
ば、デコードステージで算出したプログラムカウンタの
値を用いて命令を継続し、正しくなければ、プログラム
カウンタの値を元に戻し、アドレスを計算し直す。
Description
【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、パイプライン処
理のデコードステージにて分岐を予測する分岐予測シス
テムおよび分岐予測方法に関する。
理のデコードステージにて分岐を予測する分岐予測シス
テムおよび分岐予測方法に関する。
【0002】
【従来の技術】算術用に用いられる繰り返し命令中の条
件分岐命令は、分岐条件の成立・不成立数を比較すると
不成立が圧倒的に多く、同じところに分岐する可能性が
高い。通常、条件成立は1度だけであることが多い。
件分岐命令は、分岐条件の成立・不成立数を比較すると
不成立が圧倒的に多く、同じところに分岐する可能性が
高い。通常、条件成立は1度だけであることが多い。
【0003】従来の5段パイプラインでは、すべての分
岐命令の際、1サイクル分の分岐遅延を生じていた。こ
れは分岐先命令が、分岐命令のEXステージで分岐アド
レスが算出されるのを待ってから実行するため、分岐命
令直後では分岐先が確定されておらず、プログラムカウ
ンタの値が使用できないためである。
岐命令の際、1サイクル分の分岐遅延を生じていた。こ
れは分岐先命令が、分岐命令のEXステージで分岐アド
レスが算出されるのを待ってから実行するため、分岐命
令直後では分岐先が確定されておらず、プログラムカウ
ンタの値が使用できないためである。
【0004】図6により、従来の5段パイプラインの構
成を例にして分岐命令の動作を説明する。分岐命令を従
来の5段パイプラインで実行するときは、ICステージ
で命令をフェッチ後、RFステージで命令をデコード
し、分岐比較対照となるレジスタの値をラッチする。E
Xステージで分岐比較対照となるレジスタの比較を行
い、分岐条件のチェックをする。分岐成立ならプログラ
ムカウンタをPC+ターゲット(Target:16ビ
ットのオフセットを2ビット左にオフセットしてこれを
符号拡張したもの)にセットする。分岐不成立なら、プ
ログラムカウンタをPC+4にセットする。この時のプ
ログラムカウンタの値は、すくには使用できず、1パイ
プラインサイクル後に使用可能となる。
成を例にして分岐命令の動作を説明する。分岐命令を従
来の5段パイプラインで実行するときは、ICステージ
で命令をフェッチ後、RFステージで命令をデコード
し、分岐比較対照となるレジスタの値をラッチする。E
Xステージで分岐比較対照となるレジスタの比較を行
い、分岐条件のチェックをする。分岐成立ならプログラ
ムカウンタをPC+ターゲット(Target:16ビ
ットのオフセットを2ビット左にオフセットしてこれを
符号拡張したもの)にセットする。分岐不成立なら、プ
ログラムカウンタをPC+4にセットする。この時のプ
ログラムカウンタの値は、すくには使用できず、1パイ
プラインサイクル後に使用可能となる。
【0005】また、分岐命令の際の1サイクル分の分岐
遅延を改善するものとして、特開平8−314720号
公報記載の発明があるが、この発明は、実行している命
令の如何を問わずに、先取りした命令のアドレス計算を
行うものであり、命令中の約20%が分岐命令であるこ
とから、アドレス計算が無駄になる可能性が多かった。
遅延を改善するものとして、特開平8−314720号
公報記載の発明があるが、この発明は、実行している命
令の如何を問わずに、先取りした命令のアドレス計算を
行うものであり、命令中の約20%が分岐命令であるこ
とから、アドレス計算が無駄になる可能性が多かった。
【0006】
【発明が解決しようとする課題】上述したように、従来
の5段パイプラインでは、分岐命令で分岐条件が成立し
た際、分岐アドレスを計算するために分岐命令のEXス
テージまで待つ必要があり、連続して命令(分岐先命
令)をフェッチすることができないため、すべての分岐
命令において分岐命令ごとに1パイプラインサイクルの
遅延が生じ、遅延スロット後に分岐命令が実行される。
そのため、1命令分パイプラインが止まり、無駄が生じ
る。
の5段パイプラインでは、分岐命令で分岐条件が成立し
た際、分岐アドレスを計算するために分岐命令のEXス
テージまで待つ必要があり、連続して命令(分岐先命
令)をフェッチすることができないため、すべての分岐
命令において分岐命令ごとに1パイプラインサイクルの
遅延が生じ、遅延スロット後に分岐命令が実行される。
そのため、1命令分パイプラインが止まり、無駄が生じ
る。
【0007】繰り返し命令中の条件分岐命令使用時にお
ける、1パイプラインサイクル分の遅延総数は非常に大
きなものとなり、プロセッサの性能を大きく後退させる
要因となりうる。
ける、1パイプラインサイクル分の遅延総数は非常に大
きなものとなり、プロセッサの性能を大きく後退させる
要因となりうる。
【0008】また、特開平8−314720号公報記載
の発明は、アドレス計算が無駄になる可能性が多く、効
率が悪いという問題があった。
の発明は、アドレス計算が無駄になる可能性が多く、効
率が悪いという問題があった。
【0009】この発明の目的は、全ての分岐命令、特に
繰り返し命令中の条件分岐命令時の1パイプラインサイ
クルの遅延総数を大幅に削減でき、また、命令を効率よ
く実行することができる分岐予測システムおよび分岐予
測方法を提供することにある。
繰り返し命令中の条件分岐命令時の1パイプラインサイ
クルの遅延総数を大幅に削減でき、また、命令を効率よ
く実行することができる分岐予測システムおよび分岐予
測方法を提供することにある。
【0010】
【課題を解決するための手段】この発明の分岐予測シス
テムは、デコードされた命令が分岐命令であるか否かを
判定する分岐命令判定回路と、デコードされた命令が前
記分岐命令判定回路により分岐命令であると判定された
ときに、分岐命令のオフセットの最上位ビットを用いて
分岐が成立か不成立かを予測する分岐成立予測回路と、
前記分岐成立予測回路で分岐成立と予測されたならば、
現在のプログラムカウンタの値と、分岐命令のオフセッ
ト値とを用いて分岐先アドレスを計算し、分岐不成立と
予測されたならば、分岐命令コード長分の値を加算する
アドレス計算回路と、を備えることを特徴とする。
テムは、デコードされた命令が分岐命令であるか否かを
判定する分岐命令判定回路と、デコードされた命令が前
記分岐命令判定回路により分岐命令であると判定された
ときに、分岐命令のオフセットの最上位ビットを用いて
分岐が成立か不成立かを予測する分岐成立予測回路と、
前記分岐成立予測回路で分岐成立と予測されたならば、
現在のプログラムカウンタの値と、分岐命令のオフセッ
ト値とを用いて分岐先アドレスを計算し、分岐不成立と
予測されたならば、分岐命令コード長分の値を加算する
アドレス計算回路と、を備えることを特徴とする。
【0011】また、この発明の分岐予測方法は、パイプ
ラインのフェッチステージで命令をフェッチ後、デコー
ドステージの前半において命令をデコードして分岐命令
かそうでないかを判定し、分岐命令である場合は、分岐
命令に含まれているオフセットを参照し、オフセットの
最上位ビットにより分岐成立か分岐不成立かを予測し、
分岐成立と予測した場合は、現在のプログラムカウンタ
の値と、分岐命令のオフセット値とを用いて分岐先アド
レスを計算し、分岐不成立と予測した場合は、現在のプ
ログラムカウンタの値に分岐命令コード長分の値を加算
し、デコードステージ後の実行ステージで真の分岐成
立、分岐不成立を判定し、デコードステージで予測した
分岐成立、分岐不成立が正しければ、デコードステージ
で算出したプログラムカウンタの値を用いて命令を継続
し、予測が正しくなければ、プログラムカウンタの値を
元に戻しアドレスを計算し直すことを特徴とする。
ラインのフェッチステージで命令をフェッチ後、デコー
ドステージの前半において命令をデコードして分岐命令
かそうでないかを判定し、分岐命令である場合は、分岐
命令に含まれているオフセットを参照し、オフセットの
最上位ビットにより分岐成立か分岐不成立かを予測し、
分岐成立と予測した場合は、現在のプログラムカウンタ
の値と、分岐命令のオフセット値とを用いて分岐先アド
レスを計算し、分岐不成立と予測した場合は、現在のプ
ログラムカウンタの値に分岐命令コード長分の値を加算
し、デコードステージ後の実行ステージで真の分岐成
立、分岐不成立を判定し、デコードステージで予測した
分岐成立、分岐不成立が正しければ、デコードステージ
で算出したプログラムカウンタの値を用いて命令を継続
し、予測が正しくなければ、プログラムカウンタの値を
元に戻しアドレスを計算し直すことを特徴とする。
【0012】この発明においては、デコードステージ
(RFステージ)の前半で命令をデコードすると共に、
分岐アドレスを前もって計算しておくことにより、分岐
先があらかじめ分かるために1パイプラインサイクル分
の分岐遅延を省くことができる。
(RFステージ)の前半で命令をデコードすると共に、
分岐アドレスを前もって計算しておくことにより、分岐
先があらかじめ分かるために1パイプラインサイクル分
の分岐遅延を省くことができる。
【0013】
【発明の実施の形態】次に、この発明の実施の形態につ
いて図面を参照して説明する。
いて図面を参照して説明する。
【0014】図1は、この発明の分岐予測システムの実
施の形態を示す構成図である。図1に示す分岐予測シス
テムは、フェッチした命令を格納する命令格納用バッフ
ァ1と、命令格納用バッファ1に格納された命令が分岐
命令であるか否かを判定する分岐命令判定回路2と、デ
コードされた命令が分岐命令判定回路2により分岐命令
であると判定されたときに、分岐命令のオフセットの最
上位ビット(MSB)を用いて分岐が成立か不成立かを
予測する分岐成立予測回路3と、分岐命令に含まれるオ
フセットを2ビット左にシフトしてこれを符号拡張する
符号拡張回路4と、分岐成立予測回路3で分岐成立と予
測されたならば、現在のプログラムカウンタの値と、符
号拡張回路4で符号拡張された値(ターゲット)とを加
算し、分岐不成立と予測されたならば、分岐命令が必要
とするアドレス分である4を加算するアドレス計算回路
5とにより構成されている。
施の形態を示す構成図である。図1に示す分岐予測シス
テムは、フェッチした命令を格納する命令格納用バッフ
ァ1と、命令格納用バッファ1に格納された命令が分岐
命令であるか否かを判定する分岐命令判定回路2と、デ
コードされた命令が分岐命令判定回路2により分岐命令
であると判定されたときに、分岐命令のオフセットの最
上位ビット(MSB)を用いて分岐が成立か不成立かを
予測する分岐成立予測回路3と、分岐命令に含まれるオ
フセットを2ビット左にシフトしてこれを符号拡張する
符号拡張回路4と、分岐成立予測回路3で分岐成立と予
測されたならば、現在のプログラムカウンタの値と、符
号拡張回路4で符号拡張された値(ターゲット)とを加
算し、分岐不成立と予測されたならば、分岐命令が必要
とするアドレス分である4を加算するアドレス計算回路
5とにより構成されている。
【0015】分岐命令判定回路2と分岐成立予測回路3
と符号拡張回路4は、命令処理を高速に行うため、組合
せ回路で構成されている。
と符号拡張回路4は、命令処理を高速に行うため、組合
せ回路で構成されている。
【0016】パイプライン処理のEXステージにおい
て、実際に分岐が成立するか否かが決定され、分岐成立
予測回路3の予測と一致しない場合は、アドレス計算回
路5の値を破棄し、一致する場合は、命令を継続する。
て、実際に分岐が成立するか否かが決定され、分岐成立
予測回路3の予測と一致しない場合は、アドレス計算回
路5の値を破棄し、一致する場合は、命令を継続する。
【0017】次に、この発明の実施の形態の動作につい
て図1〜図4を参照して説明する。
て図1〜図4を参照して説明する。
【0018】図2は、この分岐予測システムの動作を説
明するフローチャートであり、図3は、クロックとステ
ージの関係を示す図であり、図4は、この発明のパイプ
ライン動作を示す説明図である。図4において、ICは
命令をフェッチするステージであり、ICステージでの
命令のフェッチは、図3に示すICステージのフェーズ
φ2で行われる。RFはデコードステージであり、この
発明では、分岐先アドレスをRFステージのフェーズφ
1で計算する。EXは命令実行ステージ、DCはデータ
フェッチステージ、WBはライトバックステージであ
る。
明するフローチャートであり、図3は、クロックとステ
ージの関係を示す図であり、図4は、この発明のパイプ
ライン動作を示す説明図である。図4において、ICは
命令をフェッチするステージであり、ICステージでの
命令のフェッチは、図3に示すICステージのフェーズ
φ2で行われる。RFはデコードステージであり、この
発明では、分岐先アドレスをRFステージのフェーズφ
1で計算する。EXは命令実行ステージ、DCはデータ
フェッチステージ、WBはライトバックステージであ
る。
【0019】ICステージのフェーズφ2で命令をフェ
ッチ後、図2に示すように、RFステージのフェーズφ
1において命令をデコードし(ステップ100)、分岐
命令判定回路2により分岐命令かそうでないかを判断す
る。
ッチ後、図2に示すように、RFステージのフェーズφ
1において命令をデコードし(ステップ100)、分岐
命令判定回路2により分岐命令かそうでないかを判断す
る。
【0020】分岐命令である場合は、分岐成立予測回路
3により、分岐命令に含まれているオフセットを参照
し、最上位ビット(MSB)が“1”である場合は、条
件分岐成立とみなし、MSBが“0”である場合は、条
件分岐不成立とみなす(ステップ101)。
3により、分岐命令に含まれているオフセットを参照
し、最上位ビット(MSB)が“1”である場合は、条
件分岐成立とみなし、MSBが“0”である場合は、条
件分岐不成立とみなす(ステップ101)。
【0021】条件分岐成立とみなされた場合は、フラグ
をセット(FLAG=1)し、アドレス計算回路5にお
いて、現在のプログラムカウンタの値と符号拡張回路4
によりオフセットを2ビット左シフトさせて符号拡張し
た値(ターゲット)とを加算して分岐先アドレスを算出
する(ステップ102)。
をセット(FLAG=1)し、アドレス計算回路5にお
いて、現在のプログラムカウンタの値と符号拡張回路4
によりオフセットを2ビット左シフトさせて符号拡張し
た値(ターゲット)とを加算して分岐先アドレスを算出
する(ステップ102)。
【0022】条件分岐不成立とみなされた場合は、フラ
グをクリアし(FLAG=0)、アドレス計算回路5に
より現在のプログラムカウンタの値に分岐命令のコード
長である4を加算する(ステップ103)。
グをクリアし(FLAG=0)、アドレス計算回路5に
より現在のプログラムカウンタの値に分岐命令のコード
長である4を加算する(ステップ103)。
【0023】分岐先命令のフェッチが、分岐先命令のI
Cステージのフェーズφ2で行われるので、分岐命令の
RFステージのフェーズφ1までに分岐アドレスが確定
していれば、1パイプラインサイクル遅延なしに分岐命
令の次のパイプラインサイクルで分岐先命令をフェッチ
することができる。
Cステージのフェーズφ2で行われるので、分岐命令の
RFステージのフェーズφ1までに分岐アドレスが確定
していれば、1パイプラインサイクル遅延なしに分岐命
令の次のパイプラインサイクルで分岐先命令をフェッチ
することができる。
【0024】分岐命令がEXステージに入った時点で真
の分岐成立・不成立を判断する(ステップ104)。そ
の結果とFLAGの値で分岐命令のRFステージのフェ
ーズφ1で算出したプログラムカウンタの値が正しいか
の判定を行い(ステップ105,106)、正しければ
そのまま実行し(ステップ107,110)、正しくな
ければ、間違ったプログラムカウンタでフェッチ、デコ
ードされた命令は、この時点で命令破棄し(ステップ1
08,109)、もう一度分岐アドレスを計算し直し
て、もう一度命令フェッチを行う(ステップ111,1
12)。
の分岐成立・不成立を判断する(ステップ104)。そ
の結果とFLAGの値で分岐命令のRFステージのフェ
ーズφ1で算出したプログラムカウンタの値が正しいか
の判定を行い(ステップ105,106)、正しければ
そのまま実行し(ステップ107,110)、正しくな
ければ、間違ったプログラムカウンタでフェッチ、デコ
ードされた命令は、この時点で命令破棄し(ステップ1
08,109)、もう一度分岐アドレスを計算し直し
て、もう一度命令フェッチを行う(ステップ111,1
12)。
【0025】分岐成立・不成立の予測が正しくなく、プ
ログラムカウンタの値が違っていた場合でも、従来の1
パイプラインサイクルの遅延で命令を実行することがで
きる。
ログラムカウンタの値が違っていた場合でも、従来の1
パイプラインサイクルの遅延で命令を実行することがで
きる。
【0026】図5に、この発明の分岐予測システムの具
体的な回路構成の一例を示す。6は分岐命令コードのフ
ォーマットであり、7は、分岐命令であるか否かを判定
するナンド回路であり、8は、符号拡張器であり、9
は、オフセットの最上位ビット(MSB)が“0”か
“1”かを判定するアンド回路であり、10は、ターゲ
ットまたは+4を選択するマルチプレクサであり、11
はプログラムカウンタである。ナンド回路7と符号拡張
器8とアンド回路9は、組合せ回路とすることができ
る。
体的な回路構成の一例を示す。6は分岐命令コードのフ
ォーマットであり、7は、分岐命令であるか否かを判定
するナンド回路であり、8は、符号拡張器であり、9
は、オフセットの最上位ビット(MSB)が“0”か
“1”かを判定するアンド回路であり、10は、ターゲ
ットまたは+4を選択するマルチプレクサであり、11
はプログラムカウンタである。ナンド回路7と符号拡張
器8とアンド回路9は、組合せ回路とすることができ
る。
【0027】ナンド回路7は、分岐命令コードの上位6
ビットから分岐命令であるか否かを判定し、分岐命令で
あれば“1”を出力し、分岐命令でなければ“0”を出
力する。
ビットから分岐命令であるか否かを判定し、分岐命令で
あれば“1”を出力し、分岐命令でなければ“0”を出
力する。
【0028】アンド回路9は、ナンド回路7から出力さ
れる分岐命令であるか否かの判断結果(“0”または
“1”)と、分岐命令コードに含まれる16ビットオフ
セットの最上位ビット(MSB)からの“0”または
“1”を入力し、分岐命令(ナンド回路の判断結果が
“1”の場合)であって、最上位ビットが“1”である
場合に“1”を出力する。
れる分岐命令であるか否かの判断結果(“0”または
“1”)と、分岐命令コードに含まれる16ビットオフ
セットの最上位ビット(MSB)からの“0”または
“1”を入力し、分岐命令(ナンド回路の判断結果が
“1”の場合)であって、最上位ビットが“1”である
場合に“1”を出力する。
【0029】符号拡張器8は、分岐命令コードに含まれ
る16ビットオフセットを2ビット左にシフトしてこれ
を32ビットに符号拡張し、ターゲットとする。
る16ビットオフセットを2ビット左にシフトしてこれ
を32ビットに符号拡張し、ターゲットとする。
【0030】マルチプレクサ10は、アンド回路9から
“1”を入力した場合は、符号拡張器8から出力される
ターゲットを選択し、“0”を入力した場合は、分岐命
令のコード長である+4を選択する。
“1”を入力した場合は、符号拡張器8から出力される
ターゲットを選択し、“0”を入力した場合は、分岐命
令のコード長である+4を選択する。
【0031】プログラムカウンタ11は、マルチプレク
サ10でターゲットが選択された場合は、現在のプログ
ラムカウンタの値とターゲットとを用いて分岐先アドレ
ス計算し、+4が選択された場合は、現在のプログラム
カウンタの値に4を加算する。
サ10でターゲットが選択された場合は、現在のプログ
ラムカウンタの値とターゲットとを用いて分岐先アドレ
ス計算し、+4が選択された場合は、現在のプログラム
カウンタの値に4を加算する。
【0032】なお、以上の実施の形態では、命令が32
ビットの場合を例にして説明したが、この発明は、32
ビットに限るものではなく、命令が64ビット等の場合
にも適用があることはいうまでもない。
ビットの場合を例にして説明したが、この発明は、32
ビットに限るものではなく、命令が64ビット等の場合
にも適用があることはいうまでもない。
【0033】
【発明の効果】以上説明したように、この発明は、分岐
命令使用時に、RFステージの前半において、命令デコ
ードと共に、分岐先アドレスを前もって計算しておくこ
とにより分岐先が確定できるため、1パイプラインサイ
クル分の分岐遅延を省くことができる。このため、全て
の分岐命令、特に繰り返し命令中の条件分岐命令時の1
パイプラインサイクルの遅延総数を大幅に削減でき、命
令を効率よく実行することができる。
命令使用時に、RFステージの前半において、命令デコ
ードと共に、分岐先アドレスを前もって計算しておくこ
とにより分岐先が確定できるため、1パイプラインサイ
クル分の分岐遅延を省くことができる。このため、全て
の分岐命令、特に繰り返し命令中の条件分岐命令時の1
パイプラインサイクルの遅延総数を大幅に削減でき、命
令を効率よく実行することができる。
【0034】さらに、オフセットのMSB、1ビットを
分岐予測ビットとして用いることにより2つ必要な演算
器が1つですみ、面積を効率的に使用することができ
る。
分岐予測ビットとして用いることにより2つ必要な演算
器が1つですみ、面積を効率的に使用することができ
る。
【0035】また、従来行っていた分岐命令使用時の命
令のスケジューリングの手間も省くことができる。
令のスケジューリングの手間も省くことができる。
【図1】この発明の分岐予測システムの実施の形態を示
す構成図である。
す構成図である。
【図2】この発明の分岐予測システムの動作を説明する
フローチャートである。
フローチャートである。
【図3】クロックとステージの関係を示す図である。
【図4】この発明のパイプライン動作を説明する図であ
る。
る。
【図5】この発明の分岐予測システムの一例を示す回路
構成図である。
構成図である。
【図6】従来の5段パイプライン動作を説明する図であ
る。
る。
1 命令格納用バッファ 2 分岐命令判定回路 3 分岐成立予測回路 4 符号拡張回路 5 アドレス計算回路 6 分岐命令コードのフォーマット 7 ナンド回路 8 符号拡張器 9 アンド回路 10 マルチプレクサ 11 プログラムカウンタ
Claims (12)
- 【請求項1】パイプラインのデコードステージの前半に
て、分岐命令を組合せ回路で検出するとともに、分岐予
測を行って分岐先のアドレスを計算し、デコードステー
ジの後半にて分岐先命令のフェッチを行うことを特徴と
する分岐予測システム。 - 【請求項2】デコードステージ後の実行ステージにて分
岐成立を判断し、前記分岐予測が正しければ命令を継続
し、正しくなければ新たにアドレス計算を行うことを特
徴とする請求項1に記載の分岐予測システム。 - 【請求項3】デコードされた命令が分岐命令であるか否
かを判定する分岐命令判定回路と、 デコードされた命令が前記分岐命令判定回路により分岐
命令であると判定されたときに、分岐命令のオフセット
の最上位ビットを用いて分岐が成立か不成立かを予測す
る分岐成立予測回路と、 前記分岐成立予測回路で分岐成立と予測されたならば、
現在のプログラムカウンタの値と、分岐命令のオフセッ
ト値とを用いて分岐先アドレスを計算し、分岐不成立と
予測されたならば、分岐命令コード長分の値を加算する
アドレス計算回路と、を備えることを特徴とする分岐予
測システム。 - 【請求項4】パイプラインのデコードステージの前半に
て、分岐命令を組合せ回路で検出するとともに、分岐先
のアドレスを計算し、デコードステージの後半にて分岐
先命令のフェッチを行うことを特徴とする分岐予測シス
テム。 - 【請求項5】デコードステージ後の実行ステージにて分
岐成立を判断し、分岐が成立すれば命令を継続し、分岐
が成立しなければ新たにアドレス計算を行うことを特徴
とする請求項4に記載の分岐予測システム。 - 【請求項6】デコードされた命令が分岐命令であるか否
かを判定する分岐命令判定回路と、 デコードされた命令が前記分岐命令判定回路により分岐
命令であると判定されたときに、分岐命令のオフセット
の最上位ビットを用いて分岐が成立か不成立かを判定す
る分岐成立予測回路と、 前記分岐成立予測回路で分岐成立と判定されたならば、
現在のプログラムカウンタの値と、分岐命令のオフセッ
ト値とを用いて分岐先アドレスを計算し、分岐不成立と
判定されたならば、分岐命令コード長分の値を加算する
アドレス計算回路と、を備えることを特徴とする分岐予
測システム。 - 【請求項7】パイプラインのデコードステージの前半に
て、分岐命令を組合せ回路で検出するとともに、分岐予
測を行って分岐先のアドレスを計算し、デコードステー
ジの後半にて分岐先命令のフェッチを行うことを特徴と
する分岐予測方法。 - 【請求項8】デコードステージ後の実行ステージにて分
岐成立を判断し、前記分岐予測が正しければ命令を継続
し、正しくなければ新たにアドレス計算を行うことを特
徴とする請求項7に記載の分岐予測方法。 - 【請求項9】パイプラインのフェッチステージで命令を
フェッチ後、デコードステージの前半において命令をデ
コードして分岐命令かそうでないかを判定し、 分岐命令である場合は、分岐命令に含まれているオフセ
ットを参照し、オフセットの最上位ビットにより分岐成
立か分岐不成立かを予測し、 分岐成立と予測した場合は、現在のプログラムカウンタ
の値と、分岐命令のオフセット値とを用いて分岐先アド
レスを計算し、 分岐不成立と予測した場合は、現在のプログラムカウン
タの値に分岐命令コード長分の値を加算し、 デコードステージ後の実行ステージで真の分岐成立、分
岐不成立を判定し、 デコードステージで予測した分岐成立、分岐不成立が正
しければ、デコードステージで算出したプログラムカウ
ンタの値を用いて命令を継続し、 予測が正しくなければ、プログラムカウンタの値を元に
戻しアドレスを計算し直すことを特徴とする分岐予測方
法。 - 【請求項10】パイプラインのデコードステージの前半
にて、分岐命令を組合せ回路で検出するとともに、分岐
先のアドレスを計算し、デコードステージの後半にて分
岐先命令のフェッチを行うことを特徴とする分岐予測方
法。 - 【請求項11】デコードステージ後の実行ステージにて
分岐成立を判断し、分岐が成立すれば命令を継続し、分
岐が成立しなければ新たにアドレス計算を行うことを特
徴とする請求項10に記載の分岐予測方法。 - 【請求項12】パイプラインのフェッチステージで命令
をフェッチ後、デコードステージの前半において命令を
デコードして分岐命令かそうでないかを判定し、 分岐命令である場合は、分岐命令に含まれているオフセ
ットを参照し、オフセットの最上位ビットにより分岐成
立か分岐不成立かを判定し、 分岐成立と判定した場合は、現在のプログラムカウンタ
の値と、分岐命令のオフセット値とを用いて分岐先アド
レスを計算し、 分岐不成立と判定した場合は、現在のプログラムカウン
タの値に分岐命令コード長分の値を加算し、 デコードステージ後の実行ステージで真の分岐成立、分
岐不成立を判定し、 デコードステージで判定した分岐成立、分岐不成立が正
しければ、デコードステージで算出したプログラムカウ
ンタの値を用いて命令を継続し、 デコードステージで判定した分岐成立、分岐不成立が正
しくなければ、プログラムカウンタの値を元に戻しアド
レスを計算し直すことを特徴とする分岐予測方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP10303717A JP2000132392A (ja) | 1998-10-26 | 1998-10-26 | 分岐予測システムおよび分岐予測方法 |
DE19950784A DE19950784B4 (de) | 1998-10-26 | 1999-10-21 | Verzweigungs-Vorhersagesystem für eine Befehlspipeline eines Computers und Verfahren zum Vorababfragen eines Befehlscodes während der Ausführung eines bedingten Sprungbefehls |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP10303717A JP2000132392A (ja) | 1998-10-26 | 1998-10-26 | 分岐予測システムおよび分岐予測方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2000132392A true JP2000132392A (ja) | 2000-05-12 |
Family
ID=17924421
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP10303717A Pending JP2000132392A (ja) | 1998-10-26 | 1998-10-26 | 分岐予測システムおよび分岐予測方法 |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP2000132392A (ja) |
DE (1) | DE19950784B4 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7447881B2 (en) | 2002-06-28 | 2008-11-04 | Fujitsu Limited | Branch prediction apparatus and method |
-
1998
- 1998-10-26 JP JP10303717A patent/JP2000132392A/ja active Pending
-
1999
- 1999-10-21 DE DE19950784A patent/DE19950784B4/de not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7447881B2 (en) | 2002-06-28 | 2008-11-04 | Fujitsu Limited | Branch prediction apparatus and method |
Also Published As
Publication number | Publication date |
---|---|
DE19950784B4 (de) | 2006-02-09 |
DE19950784A1 (de) | 2000-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6338136B1 (en) | Pairing of load-ALU-store with conditional branch | |
JP3397081B2 (ja) | 複数の分岐予測方式のうちの選択された1つを使用して条件分岐命令を推測的に実行するためのプロセッサ、データ処理システム及び方法 | |
JP3599409B2 (ja) | 分岐予測装置 | |
US6526502B1 (en) | Apparatus and method for speculatively updating global branch history with branch prediction prior to resolution of branch outcome | |
US6108773A (en) | Apparatus and method for branch target address calculation during instruction decode | |
US4858104A (en) | Preceding instruction address based branch prediction in a pipelined processor | |
US6367004B1 (en) | Method and apparatus for predicting a predicate based on historical information and the least significant bits of operands to be compared | |
US6832305B2 (en) | Method and apparatus for executing coprocessor instructions | |
US5313644A (en) | System having status update controller for determining which one of parallel operation results of execution units is allowed to set conditions of shared processor status word | |
US5815420A (en) | Microprocessor arithmetic logic unit using multiple number representations | |
US6119221A (en) | Instruction prefetching apparatus and instruction prefetching method for processing in a processor | |
EP1609058A2 (en) | Method and apparatus for hazard detection and management in a pipelined digital processor | |
JP3122420B2 (ja) | プロセッサおよび条件コード・ビット計算方法 | |
JP3802038B2 (ja) | 情報処理装置 | |
JP2000132392A (ja) | 分岐予測システムおよび分岐予測方法 | |
JP4383496B1 (ja) | マイクロコンピュータ及びその命令実行方法 | |
US6182211B1 (en) | Conditional branch control method | |
US20050144427A1 (en) | Processor including branch prediction mechanism for far jump and far call instructions | |
KR100331199B1 (ko) | 병행 생성된 복수의 페치 어드레스 중 하나를 선택하여 메모리요구를 형성하는 명령 페치 방법 및 프로세서 | |
JP2005135090A (ja) | 演算処理装置 | |
JP2924735B2 (ja) | パイプライン演算装置及びデコーダ装置 | |
JP2005149297A (ja) | プロセッサおよびそのアセンブラ | |
JP2001216156A (ja) | インストラクションキャッシュアクセスの装置と方法 | |
JP3419276B2 (ja) | 命令プリフェッチ装置、および命令プリフェッチ方法 | |
JPH04160638A (ja) | 情報処理装置 |