JP3802038B2 - 情報処理装置 - Google Patents
情報処理装置 Download PDFInfo
- Publication number
- JP3802038B2 JP3802038B2 JP2004567534A JP2004567534A JP3802038B2 JP 3802038 B2 JP3802038 B2 JP 3802038B2 JP 2004567534 A JP2004567534 A JP 2004567534A JP 2004567534 A JP2004567534 A JP 2004567534A JP 3802038 B2 JP3802038 B2 JP 3802038B2
- Authority
- JP
- Japan
- Prior art keywords
- branch
- history information
- instruction
- information
- global history
- 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 - Fee Related
Links
- 230000010365 information processing Effects 0.000 title description 34
- 238000000034 method Methods 0.000 claims description 30
- 238000010586 diagram Methods 0.000 description 15
- 230000008859 change Effects 0.000 description 9
- 238000007667 floating Methods 0.000 description 8
- 239000000872 buffer Substances 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 230000003111 delayed effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 230000001351 cycling effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
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, look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- 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, look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3863—Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
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)
Description
この方式では、BHT(Branch History Table)と呼ばれる分岐履歴に基づいた分岐予測情報を記録した記憶領域を参照して分岐の強度を判断し、分岐予測を行なう。この時BHTを検索するタグとしては、命令フェッチ時のアドレス(以下FPCという)、及びグローバルヒストリレジスタ(以下BHR(Branch History Register)という)内の値(以下BHR情報という)の組み合わせを使用する方式が一般的である。
同図において、BHT1はフェッチされたアドレスやBHR情報に基づく不図示のタグと、そのタグに対応するアドレスの分岐情報において分岐が行われたかどうかに基づいた2bitの分岐予測情報を記録するテーブルである。またBHR2は、直近に実行された複数(同図の場合5つ)の分岐命令において、どのような分岐予測が行われたかを示す履歴を記録する複数ビット(同図の場合5ビット)構成のレジスタである。
上記公報には、分岐命令より前の命令を実行するパイプラインと分岐命令後の命令を先行実行するパイプラインとを2つの実行パイプラインを持つ構成が開示されている。そして分岐予測を外した場合は、パイプラインを切り替えることによって状態を元に戻すことができる。
分岐ヒストリ情報記憶手段は、フェッチした命令に対する分岐ヒストリ情報を記憶する。
また分岐ヒストリ情報を、前記複数サイクル分のBHR情報に基づいた情報、例えば前記フェッチした命令の分岐予測に用いられたBHR情報及び他のBHR情報との差分情報を含む構成とすることにより、また簡易な構成や制御によって正確な分岐予測制御を実現することが出来る。
同図において、本実施例における情報処理装置は、BHR11、BHT12、brhis(branch history)13、1次命令キャッシュ14、分岐予測制御部15、命令デコード部17、分岐命令専用リザベーションステーション18、BHR再構成部19、整数命令専用リザベーションステーション20、浮動小数点演算専用リザベーションステーション21、LOAD/STORE命令専用リザベーションステーション22、整数演算器23、浮動小数点演算器24及び1次データキャッシュ25を備えている。
本実施例の情報処理装置では、図3(a)に示すように、各パイプライン毎にそのパイプラインの命令がフェッチされた時のBHR情報を示す分岐ヒストリ情報が、分岐予測制御部15から、命令Fetch制御部16、命令デコード部17、分岐命令専用リザベーションステーション18と転送されてゆく。分岐命令専用リザベーションステーション18には、複数の命令の分岐ヒストリ情報が保持されており、分岐命令専用リザベーションステーション18で分岐予測ミスと判断されると、その分岐命令の分岐ヒストリ情報が分岐ミスの通知と共にBHR再構成部19に送られる。そしてBHR再構成部19では、この分岐ヒストリ情報に基づいてnサイクル分のBHR情報を復元してBHR11に戻し、再フェッチの時には、この復元されたBHR情報に基づいて分岐予測が行われる。尚このnの値は、パイプラインの構成や、命令フェッチに要するステージ数等に基づいて決まる。
本実施例における情報処理装置は、命令フェッチ部分において以下のような3つのステージを持つパイプライン構造を備えるものとする。
Tステージで、brhis13、BHT12の読み出しを行なう。
Uステージで、brhis13のTag Matchを行ないTag Match情報に基づき、BHT12による分岐予測を行なう。
(1)条件分岐命令でTakenと予測→1shift
(2)条件分岐命令でNot-Takenと予測→0shift
(3)分岐命令がない(brhis13にヒットしない)→そのまま
(4)非条件分岐命令でTakenと予測し、前のslotに条件分岐命令がない場合→そのまま(slotについては後述する)
(5)非条件分岐命令でTakenと予測し、前のslotに条件分岐がある場合→0shift
各パイプライン間のBHR情報の依存関係が複雑になるため、BHR11は、3サイクル分のBHR情報(BHR0、BHR1、BHR2)を記憶し、フェッチ時に使用するBHR情報をBHR0―>BHR1―>BHR2―>BHR0と巡回させて更新し、使用する。また使用するBHR情報をポインタで示し、フェッチする毎にこのポインタをインクリメントさせる。
BHR0_RESTORE[1:0]: BHR2[9:0]→BHR0[9:0]の差分情報
BHR1_RESTORE[1:0]: BHR0[9:0]→BHR1[9:0]の差分情報
BHR2_RESTORE[1:0]: BHR1[9:0]→BHR2[9:0]の差分情報
各差分情報は2ビットの情報で、以下のような意味を持つ。
‘11’: 1shift
‘01’: 0shift
‘x0’: 変更なし(xは任意)
例えばBHR0_RESTOREが‘11’の時は、BHR0は、BHR2を1shiftすることによって求まる。
上記した本実施例のパイプラインの構成の場合、BHR情報を使ってBHT12を参照してから分岐予測結果が確定するまで2サイクルかかる為に、分岐予測の結果が確定する2サイクル前のBHR情報を使ってBHT12の検索を行なうこととなる。そして、分岐予測の結果がTakenだった場合、次の分岐先アドレスのフェッチを開始する時に2サイクルのバブルが発生する。またNot-Taken予測時には、フェッチ時に参照に用いたBHR情報のみが更新され、分岐時、及び再フェッチ時には全てのBHR情報が同時に更新される。
フェッチ時に用いられたBHR情報は、差分情報等再フェッチ時に必要となる他の情報と共に、命令Fetch制御部16から命令デコード部17を経て、分岐命令専用リザベーションステーション18へ送られる。
図5において、命令I1はNot-Takenと予測されていたが、コンディションコードレジスタの状態から実際はTakenであったとする。
Takenと予測して実際にはNot-Takenだった場合は、キャリーが発生する場合と発生しない場合とで再フェッチを開始する位置が異なる。
また同図(b)では、命令I8が分岐予測がTakenと予測して実際にはNot-Takenだった命令で、この場合はキャリーが発生し、命令I8に続く命令I9〜I16が再フェッチされる。尚遅延分岐命令の場合には、その遅延の大きさ分前の命令、同図(b)の場合命令I7やI6が、分岐予測がTakenと予測して実際にはNot-Takenだった命令の時にキャリーが発生する。
同図は、分岐命令I1でTakenと予測して実際にはNot-Takenだった場合を例として示している。
命令I1の分岐条件が確定し、コンディションコードレジスタの状態から分岐予測をミスしたのが分かると、分岐命令専用リザベーションステーション18は、命令Fetch制御部16及びBHR再構成部19に分岐予測ミスを通知し、命令2の部分から再フェッチを行なわせる。
同図は、BHR11及び分岐予測制御部15と命令Fetch制御部16の関連部分を示しており、BHR情報記憶レジスタ31−1〜31−3、演算器32−1〜32−3及び差分情報記憶レジスタ33−1〜33−3が図2のBHR11に、命令Fetch制御部36が命令Fetch制御部16のBHRとの関連部分、他の部分が分岐予測制御部15のBHRとの関連部分、及びBHT38がBHT12に対応する。
BHR再構成部19は、分岐ミス種別判定回路41とBHR復元マルチプレクサ42から構成される。
分岐ミス種別判定回路41に入力される分岐命令種別情報(b)aには、p_tiar_match、p_pred_taken、p_taken、p_always、p_has_not_taken及びp_iar_carryがある。
(1) p_taken_miss &~p_always
(2) p_taken_miss &p_always& p_has_not_taken
(3) p_taken_miss &p_always& ~p_has_not_taken
(4) p_taken_miss &~p_ iar_carry
(5) p_taken_miss & p_iar_carry
BHR復元マルチプレクサ42は、その命令の分岐予測に用いたBHR情報を示す10ビットのP_REIFDCH_BHR、2ビットの差分情報P_REIFCH_BHR_RESTORE1、P_REIFCH_BHR_RESTORE2及びP_REIFCH_BHR_RESTORE3を用い、分岐ミス種別判定回路41からの種別に判定結果に基づいて、BHR情報を復元する。
再フェッチ時には、分岐ヒストリ情報を用いてBHR再構成部19が、BHR0、BHR1、BHR2を復元する。以下に予測がNot Taken、実際がTakenの時と予測がTakenの時と、実際がNot Takenの時とに場合分けして説明する。
(1)Not Takenと予測し実際はTakenだった場合、及びTaken予測で実際もTakenだったが分岐先アドレスが誤っていた場合
この場合、予測ミスした分岐命令の分岐先から再フェッチを開始する。
(1-1)予測ミスした分岐命令が条件分岐命令の場合(図11の種別(1)に該当)
BHTを参照するのに用いたBHR情報P_REIFDCH_BHR[9:0]に差分情報P_REIFCH_BHR_RESTORE1[1:0]、P_REIFCH_BHR_RESTORE2[1:0]を順に適用し、さらに1shiftを行って生成したBHRをBHR0、BHR1、BHR2とする。また差分情報BHR0_RESTORE、BHR1_RESTORE、BHR2_RESTOREへは‘00’を書き込む。
(1-2)予測ミスした分岐命令が非条件分岐命令の場合(図11の種別(2)、(3)に該当)
P_REIFDCH_BHR[9:0]にP_REIFCH_BHR_RESTORE1[1:0]、P_REIFCH_BHR_RESTORE2[1:0] を順に適用する。そしてp_has_not_takenが真のとき(slot内にその分岐命令より前にNot-Takenだった分岐命令がある場合)0shiftした後そのまま生成したBHRをBHR0、BHR1、BHR2とし、has_not_takenが真で無い場合はそのまま生成したBHRをBHR0、BHR1、BHR2とする。また差分情報BHR0_RESTORE、BHR1_RESTORE、BHR2_RESTOREへは‘00’を書き込む。
(2)Takenと予測し実際はNot Takenだった場合
この場合、予測ミスした分岐命令の次の命令から再フェッチ開始する。
(2-1)予測ミスした分岐命令がフェッチ単位の最後の命令ではなく、キャリーが発生しない場合(図11の種別(4)に該当)
P_REIFCH_BHR[9:0]をBHRX(その分岐命令が用いていたBHR(BHR0/1/2))へ、P_REIFCH_BHR[9:0]にP_REIFCH_BHR_RESTORE1[1:0]を適用した値をBHR(X+1)(X=2のときはX+1=0)へ、そのBHR(X+1)にP_REIFCH_BHR_RESTORE2[1:0]を適用した値をBHR(X+2)(X=1のときX+2=0、X=2のときX+2=1)へそれぞれ書き込む。また差分情報BHR0_RESTORE、BHR1_RESTORE、BHR2_RESTOREへは‘00’を書き込む。
(2-2)予測ミスした分岐命令アドレスがフェッチ単位の最後であり、キャリーが発生する場合(図11の種別(5)に該当)
P_REIFCH_BHR[9:0]にP_REIFCH_BHR_RESTORE1[1:0]を適用した値をBHRX(その分岐命令が用いていたBHR(BHR0/1/2))へ、P_REIFCH_BHR[9:0]にP_REIFCH_BHR_RESTORE2[1:0]を適用した値をBHR(X+1)(X=2のときはX+1=0)へ、そのBHR(X+1)にP_REIFCH_BHR_RESTORE3[1:0]を適用した値をBHR2へそれぞれ書き込む。また差分情報BHR0_RESTORE、BHR1_RESTORE、BHR2_RESTOREへは‘00’を書き込む。
図12は分岐予測が正しかった場合を示しており、(1)で再フェッチにより、フェッチを開始し分岐予測の結果、UステージでNot-Takenと予測したとする。この予測結果に基づいて最新のBHR情報であるBHR2を0shiftしてBHR0を更新し、また差分情報BHR0_RESTOREを‘10’に書き換える。そして、(1)で用いたBHR情報であるBHR0と差分情報BHR1_RESTORE及びBHR2_RESTOREは、ibr_bhr情報として命令Fetch制御部16から一次命令キャッシュ14から命令コードが届くのと同じタイミングで命令デコード部17へ送られる。
図13は分岐予測ミスをした場合のBHR情報の更新動作例を示している。
Claims (12)
- 複数のパイプラインステージにより分岐命令の分岐予測制御を行う分岐予測装置において、
前記複数のパイプラインステージに対応して、フェッチした命令に対する分岐ヒストリ情報を記憶する分岐命令リザベーションステーション手段と、
分岐命令の分岐結果であるグローバルヒストリ情報を保持するグローバルヒストリ記憶手段と、
前記グローバルヒストリ記憶手段に保持されたグローバルヒストリ情報を復元するグローバルヒストリ情報再構成手段とを備え、
前記グローバルヒストリ情報再構成手段は、
前記フェッチした命令が分岐命令である場合に、分岐命令に対する分岐予測をミスしたときには、
前記分岐命令リザベーションステーション手段に記憶された分岐ヒストリ情報に含まれる前記フェッチした命令の分岐予測に用いられ、前記複数のパイプラインステージのうち、前記グローバルヒストリ情報に対応する一のパイプラインステージにおける第1のグローバルヒストリ情報と、
前記第1のグローバルヒストリ情報と他のパイプラインステージにおける第2のグローバルヒストリ情報との差分情報とを用いて、前記グローバルヒストリ記憶手段に保持されたグローバルヒストリ情報を復元することを特徴とする分岐予測装置。 - 分岐命令に対して分岐が成立すると予測した場合において、実際には分岐が不成立だったとき、
前記グローバルヒストリ再構成手段は、前記分岐ヒストリ情報が有する前記第1のグローバルヒストリ情報と前記差分情報とを用いて、前記グローバルヒストリ記憶手段に保持されたグローバルヒストリ情報を復元することを特徴とする請求項1記載の分岐予測装置。 - 分岐命令に対して前記分岐命令より以前に分岐が成立しないと予測した命令がある場合において、
前記グローバルヒストリ再構成手段は、前記分岐ヒストリ情報が有する前記第1のグローバルヒストリ情報と前記差分情報と、
さらに前記グローバルヒストリ情報を1ビット上位側にシフトするとともに最下位に1を補充することにより求めたグローバルヒストリ情報とを用いて、前記グローバルヒストリ情報を復元することを特徴とする請求項1記載の分岐予測装置。 - 分岐命令に対して前記分岐命令より以前に分岐が成立しないと予測した命令がない場合において、
前記グローバルヒストリ再構成手段は、前記分岐ヒストリ情報が有する前記第1のグローバルヒストリ情報と前記差分情報と、
さらに前記グローバルヒストリ情報を1ビット上位側にシフトするとともに最下位に0を補充することにより求めたグローバルヒストリ情報とを用いて、前記グローバルヒストリ情報を復元することを特徴とする請求項1記載の分岐予測装置。 - 前記分岐予測装置は、前記差分情報を記憶する差分情報記憶手段をさらに備え、前記グローバルヒストリ情報記憶手段が保持するグローバルヒストリ情報の更新とともに前記差分情報が更新されることを特徴とする請求項1記載の分岐予測装置。
- 前記グローバルヒストリ再構成手段は、
分岐命令リザベーションステーション手段に記憶される分岐ヒストリ情報を用いて、分岐予測ミスの種類の判別を行う分岐ミス種別判定回路を有し、
前記分岐ミス種別判定回路の出力に基づいて前記グローバルヒストリ情報を復元することを特徴とする請求項1記載の分岐予測装置。 - 複数のパイプラインステージにより分岐命令の分岐予測制御を行う分岐予測方法において、
前記複数のパイプラインステージに対応して、フェッチした命令に対する分岐ヒストリ情報を記憶する分岐命令リザベーションステーション装置と、
分岐命令の分岐結果であるグローバルヒストリ情報を保持するグローバルヒストリ記憶装置と、
前記グローバルヒストリ記憶装置に保持されたグローバルヒストリ情報を復元するグローバルヒストリ情報再構成装置とを備え、
前記フェッチした命令が分岐命令である場合に、分岐命令に対する分岐予測をミスしたことを判断する分岐ミス判断ステップと、
前記分岐命令リザベーションステーション装置に記憶された分岐ヒストリ情報に含まれる前記フェッチした命令の分岐予測に用いられ、前記複数のパイプラインステージのうち、前記グローバルヒストリ情報に対応する一のパイプラインステージにおける第1のグローバルヒストリ情報と、
前記第1のグローバルヒストリ情報と他のパイプラインステージにおける第2のグローバルヒストリ情報との差分情報とを用いて、前記グローバルヒストリ記憶装置に保持されたグローバルヒストリ情報を復元するグローバルヒストリ情報再構成ステップとを有することを特徴とする分岐予測方法。 - 分岐命令に対して分岐が成立すると予測した場合において、実際には分岐が不成立だったとき、
前記グローバルヒストリ再構成ステップは、前記分岐ヒストリ情報が有する前記第1のグローバルヒストリ情報と前記差分情報とを用いて、前記グローバルヒストリ記憶装置に保持されたグローバルヒストリ情報を復元することを特徴とする請求項7記載の分岐予測方法。 - 分岐命令に対して前記分岐命令より以前に分岐が成立しないと予測した命令がある場合において、
前記グローバルヒストリ再構成ステップは、前記分岐ヒストリ情報が有する前記第1のグローバルヒストリ情報と前記差分情報と、
さらに前記グローバルヒストリ情報を1ビット上位側にシフトするとともに最下位に1を補充することにより求めたグローバルヒストリ情報とを用いて、前記グローバルヒストリ情報を復元することを特徴とする請求項7記載の分岐予測方法。 - 分岐命令に対して前記分岐命令より以前に分岐が成立しないと予測した命令がない場合において、
前記グローバルヒストリ再構成ステップは、前記分岐ヒストリ情報が有する前記第1のグローバルヒストリ情報と前記差分情報と、
さらに前記グローバルヒストリ情報を1ビット上位側にシフトするとともに最下位に0を補充することにより求めたグローバルヒストリ情報とを用いて、前記グローバルヒストリ情報を復元することを特徴とする請求項7記載の分岐予測方法。 - 前記分岐予測方法は、前記差分情報を記憶する差分情報記憶装置をさらに備え、前記グローバルヒストリ情報記憶装置が保持するグローバルヒストリ情報の更新とともに前記差分情報が更新される差分情報更新ステップを有することを特徴とする請求項7記載の分岐予測方法。
- 前記グローバルヒストリ再構成ステップは、
分岐命令リザベーションステーション装置に記憶される分岐ヒストリ情報を用いて、分岐予測ミスの種類の判別を行う分岐ミス種別判定ステップを有し、
前記分岐ミス種別判定ステップの判断結果に基づいて前記グローバルヒストリ情報を復元することを特徴とする請求項7記載の分岐予測方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2003/000901 WO2004068337A1 (ja) | 2003-01-30 | 2003-01-30 | 情報処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2004068337A1 JPWO2004068337A1 (ja) | 2006-05-25 |
JP3802038B2 true JP3802038B2 (ja) | 2006-07-26 |
Family
ID=32800820
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004567534A Expired - Fee Related JP3802038B2 (ja) | 2003-01-30 | 2003-01-30 | 情報処理装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7647488B2 (ja) |
JP (1) | JP3802038B2 (ja) |
WO (1) | WO2004068337A1 (ja) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5145809B2 (ja) | 2007-07-31 | 2013-02-20 | 日本電気株式会社 | 分岐予測装置、ハイブリッド分岐予測装置、プロセッサ、分岐予測方法、及び分岐予測制御プログラム |
US7707398B2 (en) * | 2007-11-13 | 2010-04-27 | Applied Micro Circuits Corporation | System and method for speculative global history prediction updating |
WO2012127666A1 (ja) * | 2011-03-23 | 2012-09-27 | 富士通株式会社 | 演算処理装置、情報処理装置及び演算処理方法 |
US9032191B2 (en) | 2012-01-23 | 2015-05-12 | International Business Machines Corporation | Virtualization support for branch prediction logic enable / disable at hypervisor and guest operating system levels |
US8935694B2 (en) | 2012-01-23 | 2015-01-13 | International Business Machines Corporation | System and method for selectively saving and restoring state of branch prediction logic through separate hypervisor-mode and guest-mode and/or user-mode instructions |
US9535701B2 (en) | 2014-01-29 | 2017-01-03 | Telefonaktiebolaget Lm Ericsson (Publ) | Efficient use of branch delay slots and branch prediction in pipelined computer architectures |
US9430245B2 (en) * | 2014-03-28 | 2016-08-30 | Telefonaktiebolaget Lm Ericsson (Publ) | Efficient branch predictor history recovery in pipelined computer architectures employing branch prediction and branch delay slots of variable size |
US9639370B1 (en) * | 2015-12-15 | 2017-05-02 | International Business Machines Corporation | Software instructed dynamic branch history pattern adjustment |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06301534A (ja) | 1993-04-19 | 1994-10-28 | Oki Electric Ind Co Ltd | 情報処理装置 |
US5651124A (en) * | 1995-02-14 | 1997-07-22 | Hal Computer Systems, Inc. | Processor structure and method for aggressively scheduling long latency instructions including load/store instructions while maintaining precise state |
US5887152A (en) * | 1995-04-12 | 1999-03-23 | Advanced Micro Devices, Inc. | Load/store unit with multiple oldest outstanding instruction pointers for completing store and load/store miss instructions |
US5915110A (en) * | 1996-07-26 | 1999-06-22 | Advanced Micro Devices, Inc. | Branch misprediction recovery in a reorder buffer having a future file |
US6256729B1 (en) * | 1998-01-09 | 2001-07-03 | Sun Microsystems, Inc. | Method and apparatus for resolving multiple branches |
US6546481B1 (en) * | 1999-11-05 | 2003-04-08 | Ip - First Llc | Split history tables for branch prediction |
US6560696B1 (en) * | 1999-12-29 | 2003-05-06 | Intel Corporation | Return register stack target predictor |
JP3502592B2 (ja) * | 2000-03-02 | 2004-03-02 | 株式会社東芝 | 分岐予測装置 |
US6519730B1 (en) * | 2000-03-16 | 2003-02-11 | Fujitsu Limited | Computer and error recovery method for the same |
US6948054B2 (en) * | 2000-11-29 | 2005-09-20 | Lsi Logic Corporation | Simple branch prediction and misprediction recovery method |
US8285976B2 (en) * | 2000-12-28 | 2012-10-09 | Micron Technology, Inc. | Method and apparatus for predicting branches using a meta predictor |
JP4027620B2 (ja) | 2001-06-20 | 2007-12-26 | 富士通株式会社 | 分岐予測装置、プロセッサ、及び分岐予測方法 |
US6898699B2 (en) * | 2001-12-21 | 2005-05-24 | Intel Corporation | Return address stack including speculative return address buffer with back pointers |
-
2003
- 2003-01-30 JP JP2004567534A patent/JP3802038B2/ja not_active Expired - Fee Related
- 2003-01-30 WO PCT/JP2003/000901 patent/WO2004068337A1/ja active Application Filing
-
2005
- 2005-03-04 US US11/071,306 patent/US7647488B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20050149710A1 (en) | 2005-07-07 |
JPWO2004068337A1 (ja) | 2006-05-25 |
WO2004068337A1 (ja) | 2004-08-12 |
US7647488B2 (en) | 2010-01-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3565504B2 (ja) | プロセッサにおける分岐予測方法及びプロセッサ | |
US7478228B2 (en) | Apparatus for generating return address predictions for implicit and explicit subroutine calls | |
JPH1124929A (ja) | 演算処理装置およびその方法 | |
JPH0863356A (ja) | 分岐予測装置 | |
JP5209633B2 (ja) | ワーキング・グローバル・ヒストリ・レジスタを備えるシステム及び方法 | |
US10664280B2 (en) | Fetch ahead branch target buffer | |
JP5231403B2 (ja) | スライドウィンドウブロックベースの分岐ターゲットアドレスキャッシュ | |
JP2011517493A (ja) | 実行された命令の結果を選択的にコミットするためのシステムおよび方法 | |
JP2001243069A (ja) | 分岐予測装置及び分岐予測方法 | |
US7647488B2 (en) | Information processing device with branch history restoration | |
KR100986375B1 (ko) | 피연산자의 빠른 조건부 선택 | |
JP2006517322A (ja) | パイプライン化ディジタルプロセッサにおけるハザード検出および管理のための方法および装置 | |
US7454602B2 (en) | Pipeline having bifurcated global branch history buffer for indexing branch history table per instruction fetch group | |
JP3725547B2 (ja) | 限定ラン分岐予測 | |
JP3817436B2 (ja) | プロセッサおよびリネーミング装置 | |
JP3839755B2 (ja) | 命令制御方法及びプロセッサ | |
US9489204B2 (en) | Method and apparatus for precalculating a direct branch partial target address during a misprediction correction process | |
JP2006053830A (ja) | 分岐予測装置および分岐予測方法 | |
EP1204023A2 (en) | Register file circuitry | |
JP2009069960A (ja) | 分岐予測装置、分岐予測方法、及びマイクロプロセッサ | |
JP4728877B2 (ja) | マイクロプロセッサおよびパイプライン制御方法 | |
JPH06131180A (ja) | 命令処理方式および命令処理装置 | |
JP3558481B2 (ja) | データ処理装置 | |
CN115562730A (zh) | 分支预测器、相关设备以及分支预测方法 | |
JP3971780B2 (ja) | 命令制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060403 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060425 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060426 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090512 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100512 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100512 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110512 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120512 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130512 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130512 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |