CN1520547A - 预测间接分支目标地址的方法、装置和编译器 - Google Patents
预测间接分支目标地址的方法、装置和编译器 Download PDFInfo
- Publication number
- CN1520547A CN1520547A CNA028128931A CN02812893A CN1520547A CN 1520547 A CN1520547 A CN 1520547A CN A028128931 A CNA028128931 A CN A028128931A CN 02812893 A CN02812893 A CN 02812893A CN 1520547 A CN1520547 A CN 1520547A
- Authority
- CN
- China
- Prior art keywords
- branch
- branch target
- key information
- target
- prompting operation
- 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 abstract description 28
- 230000006870 function Effects 0.000 claims description 31
- 230000008569 process Effects 0.000 claims description 4
- 230000006837 decompression Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 238000011068 loading method Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 229920006395 saturated elastomer Polymers 0.000 description 1
- 238000010187 selection method Methods 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/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
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30054—Unconditional 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/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/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30061—Multi-way branch instructions, e.g. CASE
-
- 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
-
- 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
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)
- Devices For Executing Special Programs (AREA)
Abstract
Description
Claims (15)
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP01202499 | 2001-06-29 | ||
EP01202499.8 | 2001-06-29 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1520547A true CN1520547A (zh) | 2004-08-11 |
CN1265286C CN1265286C (zh) | 2006-07-19 |
Family
ID=8180556
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB028128931A Expired - Fee Related CN1265286C (zh) | 2001-06-29 | 2002-06-20 | 预测间接分支目标地址的方法、装置和编译器 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20040172524A1 (zh) |
EP (1) | EP1405174A1 (zh) |
JP (1) | JP3805339B2 (zh) |
KR (1) | KR20040014988A (zh) |
CN (1) | CN1265286C (zh) |
WO (1) | WO2003003195A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012145997A1 (zh) * | 2011-04-28 | 2012-11-01 | 北京北大众志微系统科技有限责任公司 | 一种实现值关联间接跳转预测的装置 |
WO2012145992A1 (zh) * | 2011-04-28 | 2012-11-01 | 北京北大众志微系统科技有限责任公司 | 一种实现值关联间接跳转预测的方法 |
CN102934075A (zh) * | 2010-06-28 | 2013-02-13 | 高通股份有限公司 | 用于使用预先通知技术改变程序的顺序流程的方法和设备 |
CN103927149A (zh) * | 2013-01-14 | 2014-07-16 | 想象力科技有限公司 | 间接分支预测 |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7302380B2 (en) * | 2002-12-12 | 2007-11-27 | Matsushita Electric, Industrial Co., Ltd. | Simulation apparatus, method and program |
US20050273559A1 (en) * | 2004-05-19 | 2005-12-08 | Aris Aristodemou | Microprocessor architecture including unified cache debug unit |
US7409535B2 (en) * | 2005-04-20 | 2008-08-05 | International Business Machines Corporation | Branch target prediction for multi-target branches by identifying a repeated pattern |
US7747088B2 (en) | 2005-09-28 | 2010-06-29 | Arc International (Uk) Limited | System and methods for performing deblocking in microprocessor-based video codec applications |
US20070088937A1 (en) * | 2005-10-13 | 2007-04-19 | International Business Machines Corporation | Computer-implemented method and processing unit for predicting branch target addresses |
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 |
US20080010635A1 (en) * | 2006-07-07 | 2008-01-10 | O'brien John Kevin | Method, Apparatus, and Program Product for Improving Branch Prediction in a Processor Without Hardware Branch Prediction but Supporting Branch Hint Instruction |
US8909907B2 (en) * | 2008-02-12 | 2014-12-09 | International Business Machines Corporation | Reducing branch prediction latency using a branch target buffer with a most recently used column prediction |
US8312254B2 (en) | 2008-03-24 | 2012-11-13 | Nvidia Corporation | Indirect function call instructions in a synchronous parallel thread processor |
CN102099781A (zh) * | 2009-05-19 | 2011-06-15 | 松下电器产业株式会社 | 分支预测装置、其分支预测方法、编译器、其编译方法及分支预测程序记录介质 |
US20110078425A1 (en) * | 2009-09-25 | 2011-03-31 | Shah Manish K | Branch prediction mechanism for predicting indirect branch targets |
US8612731B2 (en) | 2009-11-06 | 2013-12-17 | International Business Machines Corporation | Branch target buffer for emulation environments |
US9477478B2 (en) * | 2012-05-16 | 2016-10-25 | Qualcomm Incorporated | Multi level indirect predictor using confidence counter and program counter address filter scheme |
US20130346727A1 (en) * | 2012-06-25 | 2013-12-26 | Qualcomm Incorporated | Methods and Apparatus to Extend Software Branch Target Hints |
US20140250289A1 (en) * | 2013-03-01 | 2014-09-04 | Mips Technologies, Inc. | Branch Target Buffer With Efficient Return Prediction Capability |
US9442736B2 (en) | 2013-08-08 | 2016-09-13 | Globalfoundries Inc | Techniques for selecting a predicted indirect branch address from global and local caches |
CN104572024A (zh) * | 2014-12-30 | 2015-04-29 | 杭州中天微系统有限公司 | 一种用于函数返回地址预测的装置及方法 |
US10185731B2 (en) | 2016-03-31 | 2019-01-22 | Arm Limited | Indexing entries of a storage structure shared between multiple threads |
CN105867880B (zh) * | 2016-04-01 | 2018-12-04 | 中国科学院计算技术研究所 | 一种面向间接跳转分支预测的分支目标缓冲器及设计方法 |
US20180004627A1 (en) * | 2016-06-29 | 2018-01-04 | Centipede Semi Ltd. | Sequential monitoring and management of code segments for run-time parallelization |
US10884746B2 (en) | 2017-08-18 | 2021-01-05 | International Business Machines Corporation | Determining and predicting affiliated registers based on dynamic runtime control flow analysis |
US10884747B2 (en) | 2017-08-18 | 2021-01-05 | International Business Machines Corporation | Prediction of an affiliated register |
US10719328B2 (en) | 2017-08-18 | 2020-07-21 | International Business Machines Corporation | Determining and predicting derived values used in register-indirect branching |
US11150904B2 (en) | 2017-08-18 | 2021-10-19 | International Business Machines Corporation | Concurrent prediction of branch addresses and update of register contents |
US10908911B2 (en) | 2017-08-18 | 2021-02-02 | International Business Machines Corporation | Predicting and storing a predicted target address in a plurality of selected locations |
US10884745B2 (en) * | 2017-08-18 | 2021-01-05 | International Business Machines Corporation | Providing a predicted target address to multiple locations based on detecting an affiliated relationship |
US10534609B2 (en) | 2017-08-18 | 2020-01-14 | International Business Machines Corporation | Code-specific affiliated register prediction |
US11150908B2 (en) | 2017-08-18 | 2021-10-19 | International Business Machines Corporation | Dynamic fusion of derived value creation and prediction of derived values in a subroutine branch sequence |
US10819736B2 (en) * | 2017-11-29 | 2020-10-27 | Arm Limited | Encoding of input to branch prediction circuitry |
US11126714B2 (en) | 2017-11-29 | 2021-09-21 | Arm Limited | Encoding of input to storage circuitry |
GB2573119A (en) * | 2018-04-24 | 2019-10-30 | Advanced Risc Mach Ltd | Maintaining state of speculation |
US11301251B2 (en) * | 2020-03-30 | 2022-04-12 | SiFive, Inc. | Fetch stage handling of indirect jumps in a processor pipeline |
US20220197657A1 (en) * | 2020-12-22 | 2022-06-23 | Intel Corporation | Segmented branch target buffer based on branch instruction type |
CN117008979B (zh) * | 2023-10-07 | 2023-12-26 | 北京数渡信息科技有限公司 | 一种分支预测器 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4860199A (en) * | 1987-07-31 | 1989-08-22 | Prime Computer, Inc. | Hashing indexer for branch cache |
CA2045790A1 (en) * | 1990-06-29 | 1991-12-30 | Richard Lee Sites | Branch prediction in high-performance processor |
DE4211222B4 (de) * | 1991-04-05 | 2009-05-28 | Kabushiki Kaisha Toshiba, Kawasaki | Abzweigungs-Vorhersage-Vorrichtung und Abzweigungs-Vorhersage-Verfahren für einen Super-Skalar-Prozessor |
US5790845A (en) * | 1995-02-24 | 1998-08-04 | Hitachi, Ltd. | System with reservation instruction execution to store branch target address for use upon reaching the branch point |
US5857104A (en) * | 1996-11-26 | 1999-01-05 | Hewlett-Packard Company | Synthetic dynamic branch prediction |
JP3570855B2 (ja) * | 1997-05-29 | 2004-09-29 | 株式会社日立製作所 | 分岐予測装置 |
US6035118A (en) * | 1997-06-23 | 2000-03-07 | Sun Microsystems, Inc. | Mechanism to eliminate the performance penalty of computed jump targets in a pipelined processor |
US6185676B1 (en) * | 1997-09-30 | 2001-02-06 | Intel Corporation | Method and apparatus for performing early branch prediction in a microprocessor |
US6178498B1 (en) * | 1997-12-18 | 2001-01-23 | Idea Corporation | Storing predicted branch target address in different storage according to importance hint in branch prediction instruction |
US6314493B1 (en) * | 1998-02-03 | 2001-11-06 | International Business Machines Corporation | Branch history cache |
US7219217B1 (en) * | 1998-10-16 | 2007-05-15 | Intel Corporation | Apparatus and method for branch prediction utilizing a predictor combination in parallel with a global predictor |
US6601161B2 (en) * | 1998-12-30 | 2003-07-29 | Intel Corporation | Method and system for branch target prediction using path information |
US6499101B1 (en) * | 1999-03-18 | 2002-12-24 | I.P. First L.L.C. | Static branch prediction mechanism for conditional branch instructions |
US6324643B1 (en) * | 1999-10-01 | 2001-11-27 | Hitachi, Ltd. | Branch prediction and target instruction control for processor |
-
2002
- 2002-06-20 EP EP02738525A patent/EP1405174A1/en not_active Withdrawn
- 2002-06-20 CN CNB028128931A patent/CN1265286C/zh not_active Expired - Fee Related
- 2002-06-20 WO PCT/IB2002/002473 patent/WO2003003195A1/en not_active Application Discontinuation
- 2002-06-20 JP JP2003509305A patent/JP3805339B2/ja not_active Expired - Fee Related
- 2002-06-20 KR KR10-2003-7002969A patent/KR20040014988A/ko not_active Application Discontinuation
- 2002-06-20 US US10/482,014 patent/US20040172524A1/en not_active Abandoned
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102934075A (zh) * | 2010-06-28 | 2013-02-13 | 高通股份有限公司 | 用于使用预先通知技术改变程序的顺序流程的方法和设备 |
CN102934075B (zh) * | 2010-06-28 | 2015-12-02 | 高通股份有限公司 | 用于使用预先通知技术改变程序的顺序流程的方法和设备 |
WO2012145997A1 (zh) * | 2011-04-28 | 2012-11-01 | 北京北大众志微系统科技有限责任公司 | 一种实现值关联间接跳转预测的装置 |
WO2012145992A1 (zh) * | 2011-04-28 | 2012-11-01 | 北京北大众志微系统科技有限责任公司 | 一种实现值关联间接跳转预测的方法 |
CN103927149A (zh) * | 2013-01-14 | 2014-07-16 | 想象力科技有限公司 | 间接分支预测 |
CN103927149B (zh) * | 2013-01-14 | 2018-10-16 | 美普思技术有限责任公司 | 间接分支预测 |
Also Published As
Publication number | Publication date |
---|---|
US20040172524A1 (en) | 2004-09-02 |
JP2004533695A (ja) | 2004-11-04 |
EP1405174A1 (en) | 2004-04-07 |
CN1265286C (zh) | 2006-07-19 |
KR20040014988A (ko) | 2004-02-18 |
WO2003003195A1 (en) | 2003-01-09 |
JP3805339B2 (ja) | 2006-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1265286C (zh) | 预测间接分支目标地址的方法、装置和编译器 | |
KR100974384B1 (ko) | 분기 명령들을 예측하기 위한 방법 및 장치 | |
EP0957428B1 (en) | Method and apparatus for fetching non-contiguous instructions in a data processing system | |
US7197603B2 (en) | Method and apparatus for high performance branching in pipelined microsystems | |
EP1513062B1 (en) | Apparatus, method and computer data signal for selectively overriding return stack prediction in response to detection of non-standard return sequence | |
US7882338B2 (en) | Method, system and computer program product for an implicit predicted return from a predicted subroutine | |
KR970029034A (ko) | 프로세서내 인스트럭션 실행 방법 및 시스템과 데이타 처리 시스템 | |
US20020199091A1 (en) | Apparatus for branch prediction based on history table | |
EP2084602B1 (en) | A system and method for using a working global history register | |
JP5579694B2 (ja) | 復帰スタックを管理する方法および装置 | |
CN101884025B (zh) | 用于使过程返回序列加速的方法和系统 | |
JP2010501913A (ja) | 可変長命令セット内の分岐命令の最後の粒度(granularity)と関連付けられたキャッシュ分岐情報 | |
CN117971324A (zh) | 一种cpu指令预取方法、装置、设备及存储介质 | |
US6701426B1 (en) | Switching between a plurality of branch prediction processes based on which instruction set is operational wherein branch history data structures are the same for the plurality of instruction sets | |
US20040003213A1 (en) | Method for reducing the latency of a branch target calculation by linking the branch target address cache with the call-return stack | |
US20090070569A1 (en) | Branch prediction device,branch prediction method, and microprocessor | |
JP5696210B2 (ja) | プロセッサ及びその命令処理方法 | |
US20030131345A1 (en) | Employing value prediction with the compiler | |
Koppelman | The benefit of multiple branch prediction on dynamically scheduled systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
ASS | Succession or assignment of patent right |
Owner name: IPG ELECTRONICS 503 CO., LTD. Free format text: FORMER OWNER: ROYAL PHILIPS ELECTRONICS CO., LTD. Effective date: 20090821 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20090821 Address after: British Channel Islands Patentee after: Koninkl Philips Electronics NV Address before: Holland Ian Deho Finn Patentee before: Koninklike Philips Electronics N. V. |
|
ASS | Succession or assignment of patent right |
Owner name: PENDRAGON WIRELESS CO., LTD. Free format text: FORMER OWNER: IPG ELECTRONICS 503 LTD. Effective date: 20130109 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20130109 Address after: Washington State Patentee after: Pendragon wireless limited liability company Address before: British Channel Islands Patentee before: Koninkl Philips Electronics NV |
|
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20060719 Termination date: 20140620 |
|
EXPY | Termination of patent right or utility model |