JPWO2005103886A1 - 分岐予測装置、その方法、及びプロセサ - Google Patents
分岐予測装置、その方法、及びプロセサ Download PDFInfo
- Publication number
- JPWO2005103886A1 JPWO2005103886A1 JP2006512575A JP2006512575A JPWO2005103886A1 JP WO2005103886 A1 JPWO2005103886 A1 JP WO2005103886A1 JP 2006512575 A JP2006512575 A JP 2006512575A JP 2006512575 A JP2006512575 A JP 2006512575A JP WO2005103886 A1 JPWO2005103886 A1 JP WO2005103886A1
- Authority
- JP
- Japan
- Prior art keywords
- branch
- bit width
- instruction
- prediction
- register
- 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
- 238000000034 method Methods 0.000 title claims description 23
- 238000001514 detection method Methods 0.000 claims description 13
- 238000010586 diagram Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 5
- 230000007423 decrease Effects 0.000 description 4
- 238000011156 evaluation Methods 0.000 description 3
- 238000012790 confirmation Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000004088 simulation 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/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/3848—Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques
-
- 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
-
- 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
-
- 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
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
図1Aは、2レベル型の従来の分岐予測装置で行われる分岐予測を説明する図である。
その状態としての値は、実際の分岐結果に応じて更新するようになっている。その更新は、図1Bに示すように、分岐が成立した場合には「11」を上限に値をインクリメントし、分岐が成立しなかった場合には「00」を下限に値をデクリメントすることで行っている。そのような更新を行うことにより、実行するプログラムに応じて分岐ヒストリテーブル704を最適化し、予測精度を常に高く維持させるようにしている。
その図2に示すように、2レベル型の分岐予測装置では、分岐ヒストリレジスタ702のビット幅(数)が大きいほどSPECベンチマークでのミス率は低下し、TPC−Cベンチマークでのミス率は高くなる。それにより、その分岐予測装置を搭載したプロセサでは、分岐ヒストリレジスタ702のビット幅(数)が大きいほどSPECベンチマークでの性能が向上し、TPC−Cベンチマークでの性能が低下するという両立困難な問題点があった。
本発明の分岐予測装置は、最近の分岐命令の分岐結果を複数、履歴として格納する分岐ヒストリレジスタと、該分岐ヒストリレジスタに格納された分岐結果を用いて計算されるインデックス毎に分岐命令が分岐すると予測する確度を示す予測情報を格納した分岐ヒストリテーブルと、を用いて分岐予測を行うことを前提とし、異なるアドレスの分岐命令の出現頻度を検出する頻度検出手段と、頻度検出手段が検出した出現頻度に基づいて、分岐ヒストリレジスタのなかで有効とするビット幅を動的に変更するビット幅変更手段と、を具備する。
図3は、本実施の形態による分岐予測装置の構成を説明する図であり、図4は、その分岐予測装置を搭載したプロセサの構成を説明する図である。
RSB4には、分岐命令が発行される。そのRSB4は、分岐確定、分岐予測情報の更新、分岐予測失敗時の再命令フェッチなどの処理を行う。分岐確定は、命令に割り当てられた命令識別子を手がかりにして演算動作を監視することで行う。
分岐命令キャッシュ13は、分岐命令アドレス別に、命令の種類を示すタグ情報や分岐先アドレスを格納するものである。それらの情報は、プログラムカウンタ12から出力された値(アドレス)によって読み出される。命令フェッチ制御回路11は、分岐命令キャッシュ13から読み出された情報を入力し、次にプリフェッチする命令の種類等を認識する。分岐先アドレスの有無から、キャッシュミスが発生したか否か判定する。プログラムカウンタ12から出力された値によって命令キャッシュ2から読み出された命令は、IBF101を介してIWR部201の発行制御回路3に送られる。キャッシュミスの発生は、RSB4に直接、或いは間接的に通知する。分岐予測ミスが判明した時のRSB4による再命令フェッチは、RSB4がプログラムカウンタ12等の内容を直接、更新するか、或いは命令フェッチ制御回路11を制御して行わせる。
比較器18aは、所定値(ここでは65536)と加算器18bの出力値を比較し、それらが一致する場合に出力信号をHにするものである。その加算器18bは、RSB4が出力する分岐命令の完了通知により、レジスタ18dの値とそのRSB4が出力する値(ここでは1)を加算し、その加算結果を出力する。その加算結果は、比較器18aの他に、論理積演算回路18cに出力される。その論理積演算回路18cは、その加算結果と、比較器18aの出力信号を反転した信号との論理積をビット単位でとる。レジスタ18dには、その結果が格納される。論理積演算回路18cに比較器18aの出力信号が反転されて入力されることから、その出力信号がHとなるとレジスタ18dに格納される値は0となる。このようなことから、分岐命令数カウンタ部18は、比較器18aが出力信号をHに変化させてから次にHに変化させるまでの間、RSB4が分岐命令の完了通加を出力した回数をカウントする。 分岐命令キャッシュミス数カウンタ部19は、所定値の分岐命令を実行する間に、分岐命令キャッシュ13で発生したキャッシュミス数をカウントするためのものである。
分岐予測ミス率の観点では、SPECベンチマークには最近の分岐命令の分岐/非分岐の履歴に強く依存するという特徴があることから、分岐命令が実際に分岐するか否かの予測は複雑なものとなる。そのため、分岐予測ミス率は、SPECベンチマークの種類によって大きく異なり、分岐予測ミス率が低いものから高いものまである。
図6に示すように、SPECベンチマークとTPC−Cベンチマークとでは、分岐命令キャッシュミス率に明確な差が存在している。このため、分岐命令キャッシュミスに着目することにより、分岐命令の出現頻度に応じたビット幅の動的な変更を正確に行うことができる。それにより、プログラムとしてSPECベンチマーク、及びTPC−Cベンチマークを考慮する場合には、その両方で最大限の性能を発揮させることができる。
先ず、ステップS6では、比較器18aが加算器18bの加算結果を所定値である65536と比較する。それにより、それらが一致すると比較した場合、判定はYESとなってステップS7に移行し、そうでない場合には、判定はNOとなり、ここで一連の動作は終了する。
Claims (6)
- 最近の分岐命令の分岐結果を複数、履歴として格納する分岐ヒストリレジスタと、該分岐ヒストリレジスタに格納された分岐結果を用いて計算されるインデックス毎に分岐命令が分岐すると予測する確度を示す予測情報を格納した分岐ヒストリテーブルと、を用いて分岐予測を行う分岐予測装置において、
異なるアドレスの分岐命令の出現頻度を検出する頻度検出手段と、
前記頻度検出手段が検出した出現頻度に基づいて、前記分岐ヒストリレジスタのなかで有効とするビット幅を動的に変更するビット幅変更手段と、
を具備することを特徴とする分岐予測装置。 - 請求項1記載の分岐予測装置であって、
前記ビット幅変更手段は、前記頻度検出手段が検出する出現頻度が所定値を越えた場合に前記ビット幅を必要に応じてより小さくし、該出現頻度が該所定値以下の場合に必要に応じて該ビット幅をより大きくする。 - 請求項1記載の分岐予測装置であって、
前記ビット幅変更手段は、前記頻度検出手段が検出した複数の出現頻度を基に、前記ビット幅を動的に変更する。 - 請求項1記載の分岐予測装置であって、
前記頻度検出手段は、前記出現頻度として、分岐命令の有無を示すタグ情報を格納したキャッシュにおけるキャッシュミス率を検出する。 - 最近の分岐命令の分岐結果を複数、履歴として格納する分岐ヒストリレジスタと、該分岐ヒストリレジスタに格納された分岐結果を用いて計算されるインデックス毎に分岐命令が分岐すると予測する確度を示す予測情報を格納した分岐ヒストリテーブルと、を用いて分岐予測を行う分岐予測方法において、
異なるアドレスの分岐命令の出現頻度を検出し、
該検出した出現頻度に基づいて、前記分岐ヒストリレジスタのなかで有効とするビット幅を動的に変更する、
ことを特徴とする分岐予測方法。 - 最近の分岐命令の分岐結果を複数、履歴として格納する分岐ヒストリレジスタと、該分岐ヒストリレジスタに格納された分岐結果を用いて計算されるインデックス毎に分岐命令が分岐すると予測する確度を示す予測情報を格納した分岐ヒストリテーブルと、を用いて分岐予測を行うプロセサにおいて、
異なるアドレスの分岐命令の出現頻度を検出する頻度検出手段と、
前記頻度検出手段が検出した出現頻度に基づいて、前記分岐ヒストリレジスタのなかで有効とするビット幅を動的に変更するビット幅変更手段と、
を具備することを特徴とするプロセサ。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004125465 | 2004-04-21 | ||
JP2004125465 | 2004-04-21 | ||
PCT/JP2005/007557 WO2005103886A1 (ja) | 2004-04-21 | 2005-04-20 | 分岐予測装置、その方法、及びプロセサ |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2005103886A1 true JPWO2005103886A1 (ja) | 2008-03-13 |
JP4213181B2 JP4213181B2 (ja) | 2009-01-21 |
Family
ID=35197153
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006512575A Active JP4213181B2 (ja) | 2004-04-21 | 2005-04-20 | 分岐予測装置、その方法、及びプロセサ |
Country Status (7)
Country | Link |
---|---|
US (1) | US7827393B2 (ja) |
EP (1) | EP1739549B1 (ja) |
JP (1) | JP4213181B2 (ja) |
KR (1) | KR100785723B1 (ja) |
CN (1) | CN100520713C (ja) |
DE (1) | DE602005027338D1 (ja) |
WO (1) | WO2005103886A1 (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7523298B2 (en) * | 2006-05-04 | 2009-04-21 | International Business Machines Corporation | Polymorphic branch predictor and method with selectable mode of prediction |
US8935517B2 (en) * | 2006-06-29 | 2015-01-13 | Qualcomm Incorporated | System and method for selectively managing a branch target address cache of a multiple-stage predictor |
CN101533344B (zh) * | 2008-03-10 | 2011-04-06 | 王得安 | 一种用以储存目标地址的分支目标缓冲器系统及方法 |
CN101763248A (zh) * | 2008-12-25 | 2010-06-30 | 世意法(北京)半导体研发有限责任公司 | 用于多模式分支预测器的系统和方法 |
CN102053818B (zh) * | 2009-11-05 | 2014-07-02 | 无锡江南计算技术研究所 | 分支预测方法及装置 |
US20210149676A1 (en) * | 2019-11-14 | 2021-05-20 | Higon Austin R&D Center Corporation | Branch Prediction Method, Branch Prediction Unit and Processor Core |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4943908A (en) * | 1987-12-02 | 1990-07-24 | International Business Machines Corporation | Multiple branch analyzer for prefetching cache lines |
JPH0628184A (ja) * | 1991-08-26 | 1994-02-04 | Internatl Business Mach Corp <Ibm> | ブランチ予測方法及びブランチプロセッサ |
US5519841A (en) * | 1992-11-12 | 1996-05-21 | Digital Equipment Corporation | Multi instruction register mapper |
US5729726A (en) * | 1995-10-02 | 1998-03-17 | International Business Machines Corporation | Method and system for performance monitoring efficiency of branch unit operation in a processing system |
JP3760041B2 (ja) * | 1996-12-09 | 2006-03-29 | 松下電器産業株式会社 | 分岐予測する情報処理装置 |
JPH10240526A (ja) | 1997-02-27 | 1998-09-11 | Fujitsu Ltd | 分岐予測装置 |
US6427206B1 (en) * | 1999-05-03 | 2002-07-30 | Intel Corporation | Optimized branch predictions for strongly predicted compiler branches |
JP2002163150A (ja) | 2000-11-28 | 2002-06-07 | Toshiba Corp | プロセッサ |
US7134005B2 (en) * | 2001-05-04 | 2006-11-07 | Ip-First, Llc | Microprocessor that detects erroneous speculative prediction of branch instruction opcode byte |
JP4027620B2 (ja) | 2001-06-20 | 2007-12-26 | 富士通株式会社 | 分岐予測装置、プロセッサ、及び分岐予測方法 |
US7461243B2 (en) * | 2005-12-22 | 2008-12-02 | Sun Microsystems, Inc. | Deferred branch history update scheme |
-
2005
- 2005-04-20 EP EP05734503A patent/EP1739549B1/en active Active
- 2005-04-20 KR KR1020067019477A patent/KR100785723B1/ko active IP Right Grant
- 2005-04-20 WO PCT/JP2005/007557 patent/WO2005103886A1/ja not_active Application Discontinuation
- 2005-04-20 CN CNB2005800125237A patent/CN100520713C/zh active Active
- 2005-04-20 JP JP2006512575A patent/JP4213181B2/ja active Active
- 2005-04-20 DE DE602005027338T patent/DE602005027338D1/de active Active
-
2006
- 2006-09-06 US US11/515,971 patent/US7827393B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
EP1739549B1 (en) | 2011-04-06 |
DE602005027338D1 (de) | 2011-05-19 |
EP1739549A4 (en) | 2008-04-30 |
EP1739549A1 (en) | 2007-01-03 |
JP4213181B2 (ja) | 2009-01-21 |
KR100785723B1 (ko) | 2007-12-18 |
KR20070009594A (ko) | 2007-01-18 |
US7827393B2 (en) | 2010-11-02 |
WO2005103886A1 (ja) | 2005-11-03 |
CN1947093A (zh) | 2007-04-11 |
CN100520713C (zh) | 2009-07-29 |
US20070005945A1 (en) | 2007-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4027620B2 (ja) | 分岐予測装置、プロセッサ、及び分岐予測方法 | |
US10209993B2 (en) | Branch predictor that uses multiple byte offsets in hash of instruction block fetch address and branch pattern to generate conditional branch predictor indexes | |
CN100487641C (zh) | 预测提示指令的运行时间更新 | |
JP5579930B2 (ja) | 事前通知技術を用いる、プログラムのシーケンシャルフローを変更するための方法および装置 | |
US8078852B2 (en) | Predictors with adaptive prediction threshold | |
TWI386850B (zh) | 用於主動式分支目標位址快取記憶體管理之方法以及裝置 | |
CN111886580B (zh) | 用于控制分支预测的装置和方法 | |
US7831817B2 (en) | Two-level branch prediction apparatus | |
US10613869B2 (en) | Branch target address provision | |
US7085920B2 (en) | Branch prediction method, arithmetic and logic unit, and information processing apparatus for performing brach prediction at the time of occurrence of a branch instruction | |
CN112543916B (zh) | 多表分支目标缓冲器 | |
US8832418B2 (en) | Efficient branch target address cache entry replacement | |
US10664280B2 (en) | Fetch ahead branch target buffer | |
JP2006520964A (ja) | 分岐ターゲットに基づいて分岐予測をするための方法および装置 | |
EP1853995B1 (en) | Method and apparatus for managing a return stack | |
US7827393B2 (en) | Branch prediction apparatus, its method and processor | |
CN114546485A (zh) | 用于预测子程序返回指令的目标的取指单元 | |
JP3725547B2 (ja) | 限定ラン分岐予測 | |
US10324727B2 (en) | Memory dependence prediction | |
GB2592661A (en) | An apparatus and method for performing branch prediction | |
JP2007293814A (ja) | プロセッサ装置とその処理方法 | |
US20230195467A1 (en) | Control flow prediction | |
JP4002288B2 (ja) | 情報処理装置 | |
CN117130666A (zh) | 配置方法、分支预测器、指令识别器和电子设备 | |
JP2006163548A (ja) | 不安定状態を利用する予測器、プロセッサ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080520 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080722 |
|
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: 20081028 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20081029 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111107 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4213181 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111107 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121107 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121107 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131107 Year of fee payment: 5 |