JPWO2004068337A1 - 情報処理装置 - Google Patents
情報処理装置 Download PDFInfo
- Publication number
- JPWO2004068337A1 JPWO2004068337A1 JP2004567534A JP2004567534A JPWO2004068337A1 JP WO2004068337 A1 JPWO2004068337 A1 JP WO2004068337A1 JP 2004567534 A JP2004567534 A JP 2004567534A JP 2004567534 A JP2004567534 A JP 2004567534A JP WO2004068337 A1 JPWO2004068337 A1 JP WO2004068337A1
- Authority
- JP
- Japan
- Prior art keywords
- information
- bhr
- branch
- instruction
- prediction
- 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
Links
- 230000010365 information processing Effects 0.000 title claims abstract description 55
- 238000000034 method Methods 0.000 claims description 23
- 238000010586 diagram Methods 0.000 description 26
- 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
- 238000011084 recovery Methods 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
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003442 weekly effect Effects 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 or 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 or 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 or 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)
Abstract
Description
パイプライン処理を行なう場合、いくつもの命令を流れ作業的に同時に実行するので、分岐命令でメモリ内の別の部分に分岐してしまうと、処理を開始している後続の命令を全て破棄しなくてはならず、処理効率が低下する。これを防ぐための手法として、情報処理装置では分岐予測が行われる。分岐予測では、分岐命令が分岐するかどうかを予測し、分岐しそうな場合は分岐先の命令をパイプラインに流しこむ。
この分岐予測の手法の一つとして、分岐の履歴を記録しておき、この履歴に基づいて分岐するかどうかを予測する方式がある。
この方式では、BHT(Branch History Table)と呼ばれる分岐履歴に基づいた分岐予測情報を記録した記憶領域を参照して分岐の強度を判断し、分岐予測を行なう。この時BHTを検索するタグとしては、命令フェッチ時のアドレス(以下FPCという)、及びグローバルヒストリレジスタ(以下BHR(Branch History Register)という)内の値(以下BHR情報という)の組み合わせを使用する方式が一般的である。
図1は、分岐履歴を用いた方法による分岐予測の説明図である。
同図において、BHT1はフェッチされたアドレス屋BHR情報に基づく不図示のタグと、そのタグに対応するアドレスの分岐情報において分岐が行われたかどうかに基づいた2bitの分岐予測情報を記録するテーブルである。またBHR2は、直近に実行された複数(同図の場合5つ)の分岐命令において、どのような分岐予測が行われたかを示す履歴を記録する複数ビット(同図の場合5ビット)構成のレジスタである。
分岐予測を行なう際、情報処理装置内では、フェッチされたプログラムカウンタ値(FPC)とその時のBHR2内のBHR情報からタグを生成し、このタグを用いてBHT1を検索してBHT1から読み出した分岐予測情報から分岐予測を行なう。
BHT1には、分岐予測情報としてStrongly Not−Taken、Weakly Not−Taken、Strongly Taken及びWeakly Takenの4つのいずれかが記憶されている。そして、BHT1から読み出された分岐予測情報が、Strongly Not−TakenまたはWeakly Not−Takenの時はNot−Takenと予測され、Strongly Taken又はWeakly Takenの時はTakenと予測される。尚このBHT1内の分岐予測情報は、実際に分岐が行われたかどうかの結果に基づいて順次更新されてゆく。尚以下の説明では、分岐命令において、分岐を行なう若しくは行なうと予測する場合はTaken、分岐を行なわない若しくは行なわないと予測する場合はNot−Takenという。
また分岐予測の結果が求まると、BHR2では1ビット左シフトされ、予測の結果が最下位のビットにセットされる。例えば分岐(Taken)と予測した場合には1が、非分岐(Not−Taken)を予測した場合には0がセットされる。尚以下の説明でBHRの最下位ビットに1がセットされてシフトされる場合を1shift、0がセットされてシフトされる場合を0shiftという。
分岐命令において分岐が行われるかどうかを命令フェッチ時に予測しながら処理を先に進める分岐予測の手法をパイプラインに適用した場合、分岐予測をミスした時には、パイプラインの各スロットに現在の処理に関与しないステージが生じるいわゆるパイプラインバブルが生じ、性能が大幅に低下する。
分岐予測では、予測ミスによる性能に対するペナルティが大きいため、性能向上のためには、予測精度を高めることが重要となる。また予測制度を高める為には、分岐予測を外した場合に分岐予測前の状態を如何に再現するかも重要になる。
分岐予測に対する技術としては、様々な提案が成されているが、例えば特開平6−301534号公報(情報処理装置)に開示された手法がある。
上記公報には、分岐命令より前の命令を実行するパイプラインと分岐命令後の命令を先行実行するパイプラインとを2つの実行パイプラインを持つ構成が開示されている。そして分岐予測を外した場合は、パイプラインを切り替えることによって状態を元に戻すことができる。
また分岐履歴を用いたものに対するものとして、特開2001−243069号公報(分岐予測装置及び分岐予測方法)には、分岐予測情報の状態遷移が実際の分岐動作とはずれるのに対処する為、分岐予測の状態遷移をパイプライン上の同一分岐命令の分岐予測状態にバイパスする手法が開示されている。
分岐履歴を用いた方法では、従来、パイプラインの浅い構造の情報処理装置においては、BHT1を検索して分岐予測を行ってから、次のフェッチを行なうまでが1サイクル内で行われるため、FPC、BHR情報の更新制御が容易であった。しかし近年、動作クロックの高周波化によって性能を向上させることが一般的になっており、そのためにパイプラインを深くする制御構造が用いられるようになっている。そのため、このような情報処理装置では、命令フェッチ時の分岐予測が、数サイクルに渡って行われるようになる。
またパイプラインが深い場合、命令フェッチアドレス(FPC)とBHR1内の値によって、BHT2を検索して分岐予測を行なう構成の情報処理装置では、命令フェッチを開始してからある一定のサイクル後に分岐予測を行なう制御構造となる場合がある。そして、分岐予測をミスすると、ミスした分岐命令の直後に戻って再フェッチする必要があるが、その為に分岐命令用のリザベーションステーションに分岐命令に関する情報を格納しておき、分岐ミスが確定するとリザベーションステーションに格納された情報を用いて、その分岐命令をフェッチしたときの状態に戻してフェッチをやり直す。
この時BHR情報についても、各パイプラインで更新制御を行ない分岐命令をフェッチした時点での値に戻すことになるが、パイプラインが深く、フェッチが数サイクルにわたる場合、BHR情報についてはフェッチした時点のパイプラインの状態をすべて復元することはできず、例えばBHR情報の復元処理として、分岐予測ミスが発生した時のBHR情報をそのまま用いてBHR情報を復元する等の処理が行われる。
しかしこの場合には、分岐命令をフェッチした時点のBHR情報が正確に復元されるわけではないので、分岐予測の精度が低下してしまうという問題がある。
分岐ヒストリ情報記憶手段は、フェッチした命令に対する分岐ヒストリ情報を記憶する。
BHR再構成手段と前記命令が分岐命令で、該分岐命令に対する分岐予測をミスしたとき、前記分岐ヒストリ情報記憶手段に記憶された分岐ヒストリ情報を用いて、分岐予測に用いられるBHR情報を復元する。
これにより分岐予測ミスが生じても正確にBHR情報を復元することが出来る。よって予測精度を向上することができる。
また分岐ヒストリ情報を、前記複数サイクル分のBHR情報に基づいた情報、例えば前記フェッチした命令の分岐予測に用いられたBHR情報及び他のBHR情報との差分情報を含む構成とすることにより、また簡易な構成や制御によって正確な分岐予測制御を実現することが出来る。
図2は、本実施例における情報処理装置の分岐予測に関する部分の構成を示すブロック図である。
図3は、本実施例の情報処理装置における、予測ミス時のBHR情報の復元の原理を示す説明図である。
図4は、分岐予測が全て正しかった場合の本実施例における情報処理装置でのBHR情報の変化例を示す図である。
図5は、Not−Takenと予測した分岐命令が実際にはTakenだった場合の本実施例における情報処理装置でのBHR情報の変化例を示す図である。
図6(a)はキャリーが発生しない場合、図6(b)はキャリーが発生する場合を示したslot及びキャリーの説明図である。
図7は、Takenと予測して実際にはNot−Takenだった場合で、キャリーが発生しない場合のBHR情報の変化例を示す図である。
図8は、Takenと予測して実際にはNot−Takenだった場合で、キャリーが発生する場合のBHR情報の変化例を示す図である。
図9は、BHR及びそのの周辺部分の構成例を示すブロック図である。
図10は、BHR再構成部の概略構成を示す図である。
図11は、BHR再構成部の構成をより詳細に示す図である。
図12は、分岐予測が正しかった場合の本実施例における情報処理装置でのBHR情報の更新動作例を示す図である。
図13は、分岐予測ミスをした場合の本実施例における情報処理装置でのBHR情報の更新動作例を示す図である。
同図において、本実施例における情報処理装置は、BHR11、BHT12、brhis(branch history)13、1次命令キャッシュ14、分岐予測制御部15、命令デコード部17、分岐命令専用リザベーションステーション18、BHR再構成部19、整数命令専用リザベーションステーション20、浮動小数点演算専用リザベーションステーション21、LOAD/STORE命令専用リザベーションステーション22、整数演算器23、浮動小数点演算器24及び1次データキャッシュ25を備えている。
BHR11は、グローバルヒストリレジスタで、直近に実行された複数の分岐命令(本実施例の場合、分岐命令10個分)において、Takenだった場合は‘1’、Not−Takenだった場合は‘0’として記録された分岐履歴を保持する10ビットのレジスタである。また本実施例における情報処理装置では、このBHR11が複数のBHR情報を記憶する構成を持つ。
BHT12は、フェッチされたアドレス等から生成される不図示のタグと、そのタグに対応するアドレスにおいて実際に分岐が行われたかどうかに基づく2ビットの分岐予測情報を記録するテーブルである。本実施例では、BHT12は、2ビット×16kアドレスの構成をもつものとする。brhis13は、過去に実行された分岐命令についての情報を持つテーブルで、参照されたアドレスの命令コードが分岐命令かどうか、分岐命令の場合そのターゲットアドレスやどんな属性の分岐命令か等の情報が記録されている。brhis13は、アドレスから生成されたTagを記憶しており、フェッチアドレスから生成されるTagがbrhis13内のTagとを比較し(Tag Match)、ヒットしてbrhis13から情報が読み出されると、分岐予測制御部15はフェッチされた命令コードが分岐命令だと判断する。1次命令キャッシュ14は、1次の命令キャッシュメモリで命令デコード部17はこの1次命令キャッシュ14からデコードする命令コードを読み出す。
分岐予測制御部15は、分岐予測処理を司るもので、FPCによるbrhis13とのTag Matchの結果からFPCによって参照される命令が分岐命令かどうかを調べ、また同時にFPCとその時のBHR11内のBHR情報によってBHT12から読み出された分岐予測情報に基づいて分岐命令がTakenかNot−Takenかの分岐予測を行なう。またその分岐予測の結果に基づいて、BHR11内のBHR情報を更新する。
命令Fetch制御部16は、分岐予測制御部15による分岐予測結果等に基づいてフェッチアドレスを生成するもので、このフェッチアドレスを用いて、BHT12、brhis13及び一次命令キャッシュ14が参照される。命令デコード部17は、フェッチされた命令コードを一次命令キャッシュ14から読み出してデコードし、その結果に基づいてフェッチされた命令を整数命令専用リザベーションステーション20、浮動小数点演算専用リザベーションステーション21及びLOAD/STORE命令専用リザベーションステーション22のいずれかに振り分ける。分岐命令専用リザベーションステーション18は、条件分岐命令の分岐条件となる各種状態を示すコンディションコードレジスタを監視して、分岐予測制御部15によって行われた分岐予測の結果がミスしたかどうかを判断し、ミスした場合には復元パス26を介して予測ミスの通知と共にBHR情報を復元するための分岐ヒストリ情報を命令Fetch制御部16及びBHR再構成部19に送る。
BHR再構成部19は、分岐命令専用リザベーションステーション18から予測ミスの通知を受けると分岐ヒストリ情報に基づいて、BHR情報を予測をミスした分岐命令がフェッチされた時の状態に戻す。このBHR再構成部19の動作についての詳細は後述する。
整数命令専用リザベーションステーション20及び浮動小数点演算専用リザベーションステーション21は、それぞれ整数演算命令及び浮動小数点演算命令用のリザベーションステーションで、命令デコード部17によって振り分けられた命令を蓄え、順番の組換え等を行った後整数演算器23若しくは浮動小数点演算器24に送出する。またLOAD/STORE命令専用リザベーションステーション22は、メモリへのLOAD/STORE命令用のリザベーションステーションで、命令デコード部17によって流し込まれた命令に基づいて1次データキャッシュ25にアクセスする。
整数演算器23は、整数演算命令を処理する演算器、浮動小数点演算器24は、浮動小数点演算命令を実行処理する演算器である。1次データキャッシュ25は、1次のデータキャッシュメモリで、LOAD/STORE命令専用リザベーションステーション22は、LOAD/STORE命令に対してこの1次データキャッシュ25に対してアクセスする。
命令Fetch制御部16によって示されたフェッチ時のアドレス(FPC)に基づいて、一次命令キャッシュ14から読み出された命令コードは命令デコード部17によってデコードされる。また分岐予測制御部15ではその時のBHR11内のBHR情報とFPCを用いてBHT12及びbrhis13を参照し、分岐予測を行う。そして分岐予測に用いたBHR情報は、パイプラインのステージの進行と共に、その差分情報等と共に分岐ヒストリ情報として命令デコード部17、分岐命令専用リザベーションステーション18と転送されてゆく。そして分岐命令専用リザベーションステーション18において、分岐予測ミスと判断され、再フェッチを行なう際には、分岐命令専用リザベーションステーション18は対応する分岐ヒストリ情報をBHR再構成部19に送り、BHR再構成部19はこの分岐ヒストリ情報に基づいて、この分岐命令に対して正確に予測が行われた状態にBHR情報を復元する。
図3は、本実施例の情報処理装置における、予測ミス時のBHR情報の復元の原理を示す説明図である。
本実施例の情報処理装置では、図3(a)に示すように、各パイプライン毎にそのパイプラインの命令がフェッチされた時のBHR情報を示す分岐ヒストリ情報が、分岐予測制御部15から、命令Fetch制御部16、命令デコード部17、分岐命令専用リザベーションステーション18と転送されてゆく。分岐命令専用リザベーションステーション18には、複数の命令の分岐ヒストリ情報が保持されており、分岐命令専用リザベーションステーション18で分岐予測ミスと判断されると、その分岐命令の分岐ヒストリ情報が分岐ミスの通知と共にBHR再構成部19に送られる。そしてBHR再構成部19では、この分岐ヒストリ情報に基づいてnサイクル分のBHR情報を復元してBHR11に戻し、再フェッチの時には、この復元されたBHR情報に基づいて分岐予測が行われる。尚このnの値は、パイプラインの構成や、命令フェッチに要するステージ数等に基づいて決まる。
分岐ヒストリ情報としては、様々なものが考えられるが、例えば命令コードをフェッチしてからnサイクル分全てのBHR情報を分岐ヒストリ情報として持つ構成が考えられる。或いは、図3(b)のようにフェッチした時のBHR情報及びこのBHR情報とその後のnサイクル分のBHR情報との差分情報を分岐ヒストリ情報として持つ構成が考えられる。
図3(b)に示した差分情報を持つ構成の場合、ハードウエア資源を節約できるので、以下の例ではこの構成を用いた例を示す。
本実施例における情報処理装置は、命令フェッチ部分において以下のような3つのステージを持つパイプライン構造を備えるものとする。
Aステージで、BHT12、brhis13、一次命令キャッシュ14を検索する。
Tステージで、brhis13、BHT12の読み出しを行なう。
Uステージで、brhis13のTag Matchを行ないTag Match情報に基づき、BHT12による分岐予測を行なう。
このように、本実施例でのパイプラインでは、AステージでBHT情報を用いてBHT12を参照し、3サイクル後のUステージで分岐予測の結果が確定する。よってBHR11は、3サイクル分のBHR情報(BHR0、BHR1、BHR2)及びその差分情報を記憶する構成を持つ。
またBHR情報の更新条件としては様々なものが考えられるが、今回の例では次のような条件で更新されるものとする。
(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情報をポインタで示し、フェッチする毎にこのポインタをインクリメントさせる。
また、BHR11は3つのBHR情報に対して以下のような互いの差分情報BHR0_RESTORE、BHR1_RESTORE及びBHR2_RESTOREを持ち、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情報の更新動作を説明する。
上記した本実施例のパイプラインの構成の場合、BHR情報を使ってBHT12を参照してから分岐予測結果が確定するまで2サイクルかかる為に、分岐予測の結果が確定する2サイクル前のBHR情報を使ってBHT12の検索を行なうこととなる。そして、分岐予測の結果がTakenだった場合、次の分岐先アドレスのフェッチを開始する時に2サイクルのバブルが発生する。またNot−Taken予測時には、フェッチ時に参照に用いたBHR情報のみが更新され、分岐時、及び再フェッチ時には全てのBHR情報が同時に更新される。
図4は、本実施例における情報処理装置でのBHR情報の変化例を示す図である。同図は、分岐予測が全て正しかった場合を例として示している。尚同図において命令I1、I2、I3は分岐命令で、それぞれの分岐予測結果がNot−Taken、Not−Taken、Takenであったものとする。また命令I1より前にフェッチされた不図示の3命令は分岐命令でなく、これらの命令によってはBHR情報は更新されなかったものとする。
図4において、まず周期1で分岐命令I1がフェッチされ、この分岐命令I1がBHR0の値0001によるBHT12の参照結果から、周期3でNot−Takenと予測されたとする。この間、周期2で分岐命令I2、周期3で分岐命令I3がフェッチされ、またBHR1の値0001とBHR2の値0001を用いてBHT12が参照される。
分岐予測の結果がNot−Takenの時には、再フェッチの必要はないので命令I1及びI2の予測結果が確定してもそのまま継続される。しかし、Taken予測の時は、分岐先の命令をフェッチしなければならないので、再フェッチが行われ以降の命令が無効となり、パイプラインバブルが生じる。同図の場合、命令I3に対する分岐予測結果が、周期4でTakenと確定し、続く命令I4、I5部分がパイプラインバブルとなる。
そして、分岐命令I3の分岐先から命令I6、I7、I8が順にフェッチされるが、この時命令I6、I7、I8に対するBHR情報は、命令I3に対するBHR情報(BHR1:0001)を元にして、命令I3の予測結果(Taken)からこれを1shiftして求める。
このように本実例における情報処理装置では、BHR情報を用いるサイクルと分岐予測結果が確定するサイクルが異なっており、分岐予測の結果がTakenとなってもBHR情報を正確に復元することが出来る。
次に、分岐予測をミスした場合の動作について説明する。
フェッチ時に用いられたBHR情報は、差分情報等再フェッチ時に必要となる他の情報と共に、命令Fetch制御部16から命令デコード部17を経て、分岐命令専用リザベーションステーション18へ送られる。
分岐命令が参照するコンディションコードレジスタの状態が確定することによって、分岐命令で実際に分岐が行われるかどうかが決まる。分岐命令専用リザベーションステーション18は、コンディションコードレジスタの状態から分岐予測による分岐方向と実際の分岐方向が一致したかどうかの判断を行ない、一致しなかった場合は、再フェッチ要求と共に、再フェッチ開始アドレス、分岐ヒストリ情報等を命令Fetch制御部16へ送る。このうち分岐ヒストリ情報は、フェッチ時のBHR情報を復元するのに使用される。
図5は、Not−Takenと予測した分岐命令が実際にはTakenだった場合の本実施例における情報処理装置でのBHR情報の変化例を示す図である。
図5において、命令I1はNot−Takenと予測されていたが、コンディションコードレジスタの状態から実際はTakenであったとする。
周期1のAステージでフェッチされた命令I1は、周期3のUステージまでに分岐予測が行われる。本例では、Not−Takenと予測しているので、命令I2、I3は破棄されずそのまま処理されてゆく。
命令I1の分岐条件が確定し、コンディションコードレジスタの状態から分岐予測をミスしたのが分かると、分岐命令専用リザベーションステーション18は、命令Fetch制御部16及びBHR再構成部19に分岐予測ミスを通知し、BHR再構成部19では、分岐ヒストリ情報から命令I1がTakenと予測したようなBHR情報を復元して、分岐先の命令I4、I5、I6のフェッチに用いるBHR情報を生成する。
命令I4のBHR情報は、命令I1で用いられたBHR情報(BHR0:0001)と差分情報から命令I2で用いられたBHR情報(BHR1:0010)を復元し、この命令I2で用いられたBHR情報と差分情報から命令I3で用いられたBHR情報(BHR2:0010)を復元する。そしてこの命令I3で用いられたBHR情報に対して、命令I1でTakenと予測されたかのように1shiftを行ない、命令I4、I5、I6に用いるBHR情報を生成する。図5では、命令I1で用いられたBHR情報(BHR0:0001)に対して差分情報P_REIFCH_BHR_RESTORE1=BHR1_RESTORE=01を適用してBHR1:0010を復元し、これに差分情報(P_REIFCH_BHR_RESTORE2=BHR2_RESTORE=00を適用してBHR2:0010を復元する。そしてこのBHR2:0010に対して、1shiftして、命令I4、I5、I6に用いるBHR情報BHR0:0101、BHR1:0101、BHR2:0101が生成される。尚P_REIFCH_BHR_RESTORE1及びP_REIFCH_BHR_RESTORE2については後述する。
次にTakenと予測した分岐命令が実際にはNot−Takenだった場合におけるBHR情報の復元について説明する。
Takenと予測して実際にはNot−Takenだった場合は、キャリーが発生する場合と発生しない場合とで再フェッチを開始する位置が異なる。
本実施例の情報処理装置では、命令コードを特定の数づつ同時にフェッチする。予測の対象となった分岐命令がこのフェッチ単位の最後の命令(対象となっている分岐命令が遅延分岐命令の場合には、遅延分前にずれた命令)であるとき、キャリーが発生し、再フェッチを開始する位置がずれる。従って、BHR情報の復元処理もキャリーが発生する場合としない場合とで、場合分けする必要がある。
図6は、slot及びキャリーの説明図である。本実施例の情報処理装置は、slot単位で命令コードを同時にフェッチする。図6の例では1slot=8としており、同図(a)は、キャリーが発生しない場合、同図(b)はキャリーが発生する場合を示している。
図6(a)では、命令I5が分岐予測がTakenと予測して実際にはNot−Takenだった命令で、この場合にはキャリーは発生せず、命令I1〜I8が再フェッチされる。
また同図(b)では、命令I8が分岐予測がTakenと予測して実際にはNot−Takenだった命令で、この場合はキャリーが発生し、命令I8に続く命令I9〜I16が再フェッチされる。尚遅延分岐命令の場合には、その遅延の大きさ分前の命令、同図(b)の場合命令I7やI6が、分岐予測がTakenと予測して実際にはNot−Takenだった命令の時にキャリーが発生する。
図7は、Takenと予測して実際にはNot−Takenだった場合で、キャリーが発生しない場合のBHR情報の変化例を示す図である。
同図は、分岐命令I1でTakenと予測して実際にはNot−Takenだった場合を例として示している。
命令I1の分岐条件が確定し、コンディションコードレジスタの状態から分岐予測をミスし、実際はNot−Takenだったのが分かると、分岐命令専用リザベーションステーション18は、命令Fetch制御部16及びBHR再構成部19に分岐予測ミスを通知し、命令I1の部分から再フェッチを行なわせる。
キャリーが発生しない場合、同図の網かけ部分に示したように命令I1で用いられたBHR情報から復元するので、分岐命令専用リザベーションステーション18が予測ミスと判断するとBHR再構成部19では、分岐ヒストリ情報内の命令I1で用いられたBHR情報BHR0:0001に差分情報P_REIFCH_BHR_RESTORE1=‘01’を用いて命令I2で用いられたBHR情報BHR1:0010を復元し、これに差分情報P_REIFCH_BHR_RESTORE2=‘00’を適用して命令I3で用いられたBHR情報BHR1:0010を復元する。そして命令I1の位置から再フェッチが行われまた命令I1はTaken予測なので、命令I3で用いられたBHR情報BHR1:0010に対して1shiftしてBHR情報0101を求め、これを命令I4、I5、I6で用いられるBHR情報BHR0、BHR1及びBHR2にする。
図8は、Takenと予測して実際にはNot−Takenだった場合で、キャリーが発生する場合のBHR情報の変化例を示す図である。
命令I1の分岐条件が確定し、コンディションコードレジスタの状態から分岐予測をミスしたのが分かると、分岐命令専用リザベーションステーション18は、命令Fetch制御部16及びBHR再構成部19に分岐予測ミスを通知し、命令2の部分から再フェッチを行なわせる。
キャリーが発生する場合、同図で網かけで示した命令I2、I3、I4で用いられたBHR情報を復元する。分岐命令専用リザベーションステーション18が予測ミスの通知を受けると、BHR再構成部19では、分岐ヒストリ情報内の命令I1で用いられたBHR情報BHR0:0001と差分情報P_REIFCH_BHR_RESTORE1=‘10’を用いて命令I2で用いられたBHR情報BHR1:0010を復元し、これに差分情報P_REIFCH_BHR_RESTORE2=‘00’を適用して命令I3で用いられたBHR情報BHR1:0010を復元する。
そして命令I3で用いられたBHR情報BHR1:0010に対してTaken予測なので1shiftしてBHR情報0101を求め、これを命令I4、I5、I6で用いるBHR情報とする。ただし、命令I4のBHR情報は、命令I1がNot−Takenだったので命令I3で用いられたBHR情報BHR1:0010に差分情報P_REIFCH_BHR_RESTORE1=‘01’(固定値)を適用してBHR0:0100となる。
図9は、BHR11及びそのの周辺部分の構成例を示すブロック図である。
同図は、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情報記憶レジスタ31−1〜31−3は、BHR0、BHR1及びBHR2の3つのBHR情報を記憶する。また差分情報記憶レジスタ33−1〜33−3は、上記した差分情報BHR0_RESTORE、BHR1_RESTORE及びBHR2_RESTOREを記憶する2ビットのレジスタで、これらの値はBHR情報記憶レジスタ31内のBHR情報の値を用いて演算器32によって求められる。BHR情報記憶レジスタ31−1〜31−3内のBHR情報は、命令フェッチ時にBHR0、BHR1、BHR2、BHR0、・・・と順番に用いられる。
カウンタ34は、BHR0、BHR1及びBHR2の中で、どれが最新の値か、すなわち、現在BHR情報記憶レジスタ31−1〜31−3のうちどのレジスタに最新のBHR情報が格納されているかを示すカウンタで、BHR情報が更新される度にBHR0−>BHR1−>BHR2−>BHR0と変化する。カウンタ35は、次にBHR0、BHR1及びBHR2のどれを用いてフェッチするかを示すカウンタで、フェッチが行われる度にBHR0−>BHR1−>BHR2−>BHR0と変化する。
BHR更新回路37は、BHR情報が更新される際、最新のBHR情報から更新されたBHR情報を生成し、これを対応するBHR情報記憶レジスタ31に送る。またセレクタ39はBHR情報記憶レジスタ31−1〜31−3のうちカウンタ34が示す最新のBHR情報を記憶しているものを選択し、保持内容をBHR更新回路37に出力する。
セレクタ40は、BHR情報記憶レジスタ31−1〜31−3のうちカウンタ35が示すフェッチに用いるBHR情報を記憶しているものを選択する。このBHR情報が用いられてBHT38は参照される。
命令Fetch制御部36内のIBR BHR361は、命令Fetch制御部36から、命令デコード部17を介して分岐命令専用リザベーションステーション18に送られるibr_bhr情報を格納するバッファで、BHT38の参照に用いたBHR情報及び他のBHR情報との差分情報を保持する。
ibr_bhr情報は、分岐命令をフェッチした際、BHT12の参照に用いられたBHR情報を示すP_REFIDCH_BHR及びそのBHR情報と他の2つのBHR情報との差分情報P_REIFCH_BHR_RESTORE1、P_REIFCH_BHR_RESTORE2及びP_REIFCH_BHR_RESTORE3から構成されている。P_REFIDCH_BHRと差分情報の関係は、P_REIFCH_BHR_RESTORE1がP_REFIDCH_BHRと次のBHR情報との差分を示し、P_REIFCH_BHR_RESTORE1が次のBHR情報とその次のBHR情報との差分情報を示す。例えばP_REFIDCH_BHRがBHR1対するものであった時、P_REIFCH_BHR_RESTORE1にはBHR1とBHR2との差分を示すBHR2_RESTOREがなり、P_REIFCH_BHR_RESTORE2にはBHR2とBHR0との差分を示すBHR0_RESTOREがなる。尚P_REIFCH_BHR_RESTORE3は、キャリーが発生した場合にのみ用いられるもので、固定値(‘01’)となっている。
バッファ363−1〜363−3は、カウンタ34の値をバッファリングするもので、AステージでBHT38の参照に用いられたBHR情報が格納されているBHR情報記憶レジスタ31を示すカウンタ値は、バッファ363−1〜363−3によって、T、U、Mステージまで保持され、Mステージの時セレクタ362にBHR情報記憶レジスタ31内のBHR0〜BHR2とその差分情報の選択を指示する。
命令がフェッチされ、BHT38の参照に用いられたBHR情報は、その命令がMステージに達するとセレクタ362によって差分情報と共に選択され、IBR BHR361に格納される。IBR BHR361内のibr_bhr情報は、命令デコード部17を介して分岐命令専用リザベーションステーション18に送られる。分岐命令専用リザベーションステーション18で、その命令が分岐予測ミスと判断されるとibr_bhr情報を含む分岐ヒストリ情報が分岐予測ミスの通知と共にBHR再構成部19に送られ、BHR再構成部19では、分岐ヒストリ情報を元にBHR情報を復元する。
図10は、BHR再構成部19の概略構成を示す図である。
BHR再構成部19は、分岐ミス種別判定回路41とBHR復元マルチプレクサ42から構成される。
分岐ミス種別判定回路41は、分岐ヒストリ情報と共に送られてくる分岐命令の種類(条件分岐/非条件分岐等)や予測ミスの種類(分岐方向の予測ミス/分岐アドレスのミス等)を示す分岐命令種別情報から分岐ミスの種別を判別し、BHR復元マルチプレクサ42に通知する。BHR復元マルチプレクサ42は、分岐ミス種別判定回路41から通知された種別に応じて分岐ヒストリ情報内のBHR情報や差分情報からBHR情報を復元する。
図11は、BHR再構成部19の構成をより詳細に示す図である。
分岐ミス種別判定回路41に入力される分岐命令種別情報(b)aには、p_tiar_match、p_pred_taken、p_taken、p_always、p_has_not_taken及びp_iar_carryがある。
p_tiar_matchは、分岐先であるターゲットアドレスが予測どおりだったかどうかを示す情報である。p_pred_takenは、分岐命令に対する分岐予測がTakenだったかどうかを示す情報である。p_takenは、分岐命令が実際にはTakenだったかどうかを示す情報である。p_alwaysは、その分岐命令が無条件分岐命令かどうかを示す情報である。p_has_not_takenは、その分岐命令と同じslot内のその分岐命令より前にNot−Takenだった分岐命令があるかどうかを示す情報である。p_iar_carryは、再フェッチの際キャリーが発生するかどうかを示す1ビットの情報である。
分岐ミス種別判定回路41は、これらの情報から分岐ミスの種別を、(1)条件分岐でTaken予測で実際はNot−Taken、(2)非条件分岐で同一slot内でその命令より前にNot−Takenと予測した命令がある、(3)非条件分岐で同一slot内でその命令より前にNot−Takenと予測した命令がない、(4)条件分岐でNot−Taken予測で実際はTakenの場合でキャリーが発生する、(5)条件分岐でNot−Taken予測で実際はTakenの場合でキャリーが発生しない、の5つに判別する。
上記種別かどうかの判定は、以下の論理式によって行われる。尚下記式で‘&’はAND、‘|’はOR、‘〜’は否定を意味し、またp_taken_missは(〜p_tiar_match&p_pred_taken&p_taken)|(〜p_pred_taken&p_taken)、p_taken_missはp_pred_taken&〜p_takenを表す。
(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_REFIDCH_BHR、2ビットの差分情報P_REIFCH_BHR_RESTORE1、P_REIFCH_BHR_RESTORE2及びP_REIFCH_BHR_RESTORE3を用い、分岐ミス種別判定回路41からの種別に判定結果に基づいて、BHR情報を復元する。
分岐ミス種別判定回路41から分岐ミスが種別(1)と通知された時は、BHR復元マルチプレクサ42は、P_REFIDCH_BHR(b)をシフタ421によってP_REIFCH_BHR_RESTORE1(c)に基づいてシフトし、これをシフタ422によってP_REIFCH_BHR_RESTORE2(d)に基づいてシフトした値を、シフタ424で1shiftした値をセレクタ426で選択し、バッファ51、52、53を介して復元されたBHR情報P_REFIDCH_BHR0(A)、P_REFIDCH_BHR1(B)及びP_REFIDCH_BHR2(C)を出力する。分岐ミス種別判定回路41から分岐ミスが種別(2)と通知された時は、シフタ422の出力をシフタ425で0shiftした値をセレクタ426で選択し、バッファ51、52、53を介して復元されたBHR情報P_REFIDCH_BHR0(A)、P_REFIDCH_BHR1(B)及びP_REFIDCH_BHR2(C)を出力する。また分岐ミスが種別(3)と通知された時は、シフタ422の出力をセレクタ426で選択して復元されたBHR情報P_REFIDCH_BHR0(A)、P_REFIDCH_BHR1(B)及びP_REFIDCH_BHR2(C)を出力する。
分岐ミス種別判定回路41から分岐ミスが種別(4)と通知された時は、セレクタ427でP_REFIDCH_BHR(b)を選択して復元されたBHR情報(BHR0)P_REFIDCH_BHR0(d)として出力し、セレクタ428でシフタ421の出力を選択して復元されたBHR情報(BHR1)P_REFIDCH_BHR0(e)として出力し、セレクタ429でシフタ422の出力を選択して復元されたBHR情報(BHR2)P_REFIDCH_BHR2(f)として出力する。また分岐ミスが種別(5)と通知された時は、セレクタ427でシフタ421の出力を選択してP_REFIDCH_BHR0(d)として出力し、セレクタ428でシフタ422の出力を選択してP_REFIDCH_BHR0(e)として出力し、セレクタ429でシフタ423の出力を選択してP_REFIDCH_BHR2(f)として出力する。
次に分岐ミスによる再フェッチ時の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_REFIDCH_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_REFIDCH_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及び図13は、本実施例における情報処理装置でのBHR情報の更新動作例を示す図である。
図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へ送られる。
またこの間(2)で(1)の次のアドレスをフェッチし、この命令はTakenと予測したとする。Taken予測の場合には、(2)で用いたBHR情報であるBHR1を元に3つ全部のBHR情報を書き換える。また(2)で用いたBHR情報であるBHR1と差分情報BHR2_RESTORE及びBHR0_RESTOREが、ibr_bhr情報として命令Fetch制御部16から命令デコード部17へ送られる。
(2)でTakenと予測するまでの間、(3)、(4)がフェッチされるが、これらは(2)がTaken予測となった時点で破棄され、BHR情報の更新やibr_bhr情報の登録は行われない。
(2)の分岐予測の結果に基づいて分岐先の命令(5)がフェッチされる。この(5)のフェッチには、(2)で用いられたBHR2を1shiftしたものが用いられる。
図13は分岐予測ミスをした場合のBHR情報の更新動作例を示している。
図13では、(1)、(2)では分岐予測の結果が判明するまでは、図12の時と同様に処理が行われる。コンディションコードレジスタの状態から(2)のTaken予測が外れたことが判明すると、実際の分岐先の(3)’から再フェッチを行なう。
この時BHR情報は、(2)で命令デコード部17に送られたibr_bhr情報内のP_REIFCH_BHRからBHR0を復元し、これにP_REIFCH_BHR_RESTORE1(BHR1_RESTORE)を適用してBHR1を復元し、更にこれにP_REIFCH_BHR_RESTORE2(BHR0_RESTORE)を適用してBHR2を復元する。尚キャリーが発生する場合には、P_REIFCH_BHRにP_REIFCH_BHR_RESTORE1(BHR1_RESTORE)を適用してBHR0を復元し、これにP_REIFCH_BHR_RESTORE2(BHR0_RESTORE)を適用してBHR1を復元し、更にこれにP_REIFCH_BHR_RESTORE3(固定値)を適用してBHR2を復元する。
このように、本実施例の情報処理装置では、分岐予測ミスが生じても正確にBHR情報を復元することが出来る。その為、精度の高い分岐予測を実現でいる。また複雑な回路構成や制御を用いなくてもBHR情報の復元を実現することが出来る。
尚本実施例の情報処理装置では、図1に示したようにBHR情報は、情報処理装置内で分岐予測を行い、この分岐予測結果に対する分岐履歴に基づいたものを用いているが、本発明はこのようなBHR情報のみに適用されるものではなく、他の形式のもの、例えばBHR情報が、コンパイル時に分岐予測を行って命令コードにその結果を埋め込む方式において、この埋め込まれた予測内容に対するカウントを行ったものに対しても適用することが出来る。
また制御や構成の簡易さを保ちながら正確な分岐予測制御を実現することが出来る。
Claims (18)
- 分岐予測制御に複数サイクル要する情報処理装置において、
フェッチした命令に対する分岐ヒストリ情報を記憶する分岐ヒストリ情報記憶手段と、
前記命令が分岐命令で、該分岐命令に対する分岐予測をミスしたとき、前記分岐ヒストリ情報記憶手段に記憶された分岐ヒストリ情報を用いて、分岐予測に用いられるBHR情報を復元するBHR再構成手段と、
を備えることを特徴とする情報処理装置。 - 前記分岐ヒストリ情報は、前記複数サイクル分のBHR情報に基づいた情報を含むことを特徴とする請求項1に記載の情報処理装置。
- 前記分岐ヒストリ情報は、前記フェッチした命令の分岐予測に用いられたBHR情報及び他のBHR情報との差分情報を含むことを特徴とする請求項2に記載の情報処理装置。
- 前記分岐予測制御に3サイクル要し、分岐ヒストリ情報は、フェッチした命令の分岐予測に用いられた第1のBHR情報、該第1のBHR情報の次に用いられた第2のBHR情報と該第1のBHR情報の差分を示す第1の差分情報、前記第2のBHR情報の次に用いられた第3のBHR情報と前記第2のBHR情報の差分を示す第2の差分情報を含むことを特徴とする請求項4に記載の情報処理装置
- 条件分岐に対してTakenと予測し実際はNot−Takenだった時、前記BHR再構成手段は、前記分岐ヒストリ情報内の前記第1のBHR情報に前記第1の差分情報及び第2の差分情報を適用して求めてBHR情報を復元後の前記第1のBHR情報、前記第2のBHR情報及び前記第3のBHR情報とすることを特徴とする請求項4に記載の情報処理装置。
- 非条件分岐に対して同一slot内でその命令より前にNot−Takenと予測した命令がある時、前記BHR再構成手段は、前記分岐ヒストリ情報内の前記第1のBHR情報に前記第1の差分情報及び第2の差分情報を適用し、更に1shiftして求めたBHR情報を復元後の前記第1のBHR情報、前記第2のBHR情報及び前記第3のBHR情報とすることを特徴とする請求項4に記載の情報処理装置。
- 非条件分岐に対して同一slot内でその命令より前にNot−Takenと予測した命令がない時、前記BHR再構成手段は、前記分岐ヒストリ情報内の前記第1のBHR情報に前記第1の差分情報及び第2の差分情報を適用し、更に0shiftして求めたBHR情報を復元後の前記第1のBHR情報、前記第2のBHR情報及び前記第3のBHR情報とすることを特徴とする請求項4に記載の情報処理装置。
- 条件分岐に対してNot−Takenと予測し実際はTakenの場合でキャリーが発生する時、前記BHR再構成手段は、前記分岐ヒストリ情報内の第1のBHR情報を復元後の第1のBHR情報、前記分岐ヒストリ情報内の第1のBHR情報に対して前記第1の差分情報を適用して求めたBHR情報を復元後の第2のBHR情報、前記分岐ヒストリ情報内の第1のBHR情報に対して前記第1の差分情報及び第2の差分情報を適用して求めたBHR情報を復元後の第3のBHR情報とすることを特徴とする請求項4に記載の情報処理装置。
- 条件分岐に対してNot−Takenと予測し実際はTakenの場合でキャリーが発生しない時、前記BHR再構成手段は、前記分岐ヒストリ情報内の第1のBHR情報に対して前記第1の差分情報を適用して求めたBHR情報を復元後の第1のBHR情報、前記分岐ヒストリ情報内の第1のBHR情報に対して前記第1の差分情報及び第2の差分情報を適用して求めたBHR情報を復元後の第2のBHR情報、前記分岐ヒストリ情報内の第1のBHR情報に対して前記第1の差分情報、第2の差分情報及び固有値の第3の差分情報を適用して求めたBHR情報を復元後の第3のBHR情報とすることを特徴とする請求項4に記載の情報処理装置。
- 前記BHR情報を前記複数サイクル分記憶するBHR情報記憶手段を更に備え、前記BHR情報を更新する際、前記BHR情報記憶手段内の複数のBHR情報を順番に更新することを特徴とする請求項1に記載の情報処理装置。
- 前記BHR情報記憶手段内の複数のBHR情報の差分情報を記憶する差分情報記憶手段を更に備え、前記差分情報は前記BHR情報記憶手段内のBHR情報が更新される際に共に更新されることを特徴とする請求項10に記載の情報処理装置。
- 前記BHR再構成手段は、前記分岐ヒストリ情報から分岐予測ミスの種別を判別し、該種別に基づいて前記BHR情報を復元することを特徴とする請求項1に記載の情報処理装置。
- 前記BHR再構成手段は、前記分岐ヒストリ情報から前記分岐予測ミスが、条件分岐に対してTakenと予測で実際はNot−Taken、非条件分岐に対して同一slot内でその命令より前にNot−Takenと予測した命令がある、非条件分岐に対して同一slot内でその命令より前にNot−Takenと予測した命令がない、条件分岐に対してNot−Takenと予測し実際はTakenの場合でキャリーが発生する、及び条件分岐に対してNot−Takenと予測し実際はTakenの場合でキャリーが発生しない、の5つの種別に対応するかどうかを判別することを特徴とする請求項12記載の情報処理装置。
- フェッチした分岐命令の分岐予測を行う為の分岐予測情報をフェッチアドレスに対応させて記憶するテーブルを更に備え、前記BHR情報は、前記テーブルを参照する際に用いられることを特徴とする請求項1に記載の情報処理装置。
- 前記分岐予測制御に3サイクル要し、前記BHR情報を3つ記憶するBHR情報記憶手段を更に備えることを特徴とする請求項1に記載の情報処理装置。
- 分岐予測制御に複数サイクル要する情報処理装置で用いられる分岐予測制御装置であって、
フェッチした命令に対する分岐ヒストリ情報を記憶する分岐ヒストリ情報記憶手段と、
前記命令が分岐命令で、該分岐命令に対する分岐予測をミスしたとき、前記分岐ヒストリ情報記憶手段に記憶された分岐ヒストリ情報を用いて、分岐予測に用いられるBHR情報を復元するBHR再構成手段と、
を備えることを特徴とする分岐予測制御装置。 - 分岐予測制御に複数サイクル要する情報処理装置で用いられ、分岐予測ミスの際、分岐予測に用いられるBHR情報を復元するBHR再構成装置であって、
分岐予測ミスの通知と共に分岐予測ミスした命令に対する分岐ヒストリ情報を受け取る手段と、
前記命令が分岐命令で、該分岐命令に対する分岐予測をミスしたとき、前記分岐ヒストリ情報記憶手段に記憶された分岐ヒストリ情報を用いて、分岐予測に用いられるBHR情報を復元する手段と、
を備えることを特徴とするBHR再構成装置。 - 分岐予測制御に複数サイクル要する情報処理装置で用いられ、分岐予測ミスの際、分岐予測に用いられるBHR情報を復元するBHR情報復元方法であって、
フェッチした命令に対する分岐ヒストリ情報を記憶し、
前記命令が分岐命令で、該分岐命令に対する分岐予測をミスしたとき、記憶した分岐ヒストリ情報を用いて、分岐予測に用いられるBHR情報を復元することを特徴とする分岐予測制御装置。
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 true JPWO2004068337A1 (ja) | 2006-05-25 |
JP3802038B2 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 (9)
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 |
US20220129763A1 (en) * | 2020-10-23 | 2022-04-28 | Intel Corporation | High confidence multiple branch offset predictor |
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 | 情報処理装置 |
US5673426A (en) * | 1995-02-14 | 1997-09-30 | Hal Computer Systems, Inc. | Processor structure and method for tracking floating-point exceptions |
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 |
---|---|
WO2004068337A1 (ja) | 2004-08-12 |
JP3802038B2 (ja) | 2006-07-26 |
US20050149710A1 (en) | 2005-07-07 |
US7647488B2 (en) | 2010-01-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5209633B2 (ja) | ワーキング・グローバル・ヒストリ・レジスタを備えるシステム及び方法 | |
JPH1124929A (ja) | 演算処理装置およびその方法 | |
US10664280B2 (en) | Fetch ahead branch target buffer | |
JPH0863356A (ja) | 分岐予測装置 | |
JP2011517493A (ja) | 実行された命令の結果を選択的にコミットするためのシステムおよび方法 | |
US6981131B2 (en) | Early condition code evaluation at pipeline stages generating pass signals for controlling coprocessor pipeline executing same conditional instruction | |
JP5231403B2 (ja) | スライドウィンドウブロックベースの分岐ターゲットアドレスキャッシュ | |
US7647488B2 (en) | Information processing device with branch history restoration | |
JP2001243069A (ja) | 分岐予測装置及び分岐予測方法 | |
EP1974254B1 (en) | Early conditional selection of an operand | |
US7454602B2 (en) | Pipeline having bifurcated global branch history buffer for indexing branch history table per instruction fetch group | |
US20040158694A1 (en) | Method and apparatus for hazard detection and management in a pipelined digital processor | |
EP0423726B1 (en) | Branch control circuit | |
JP3725547B2 (ja) | 限定ラン分岐予測 | |
JP3817436B2 (ja) | プロセッサおよびリネーミング装置 | |
US9489204B2 (en) | Method and apparatus for precalculating a direct branch partial target address during a misprediction correction process | |
JPH06131180A (ja) | 命令処理方式および命令処理装置 | |
JP3558481B2 (ja) | データ処理装置 | |
CN115562730A (zh) | 分支预测器、相关设备以及分支预测方法 | |
JPH06301538A (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 |