WO2020023263A1 - Branch target buffer with early return prediction - Google Patents
Branch target buffer with early return prediction Download PDFInfo
- Publication number
- WO2020023263A1 WO2020023263A1 PCT/US2019/042176 US2019042176W WO2020023263A1 WO 2020023263 A1 WO2020023263 A1 WO 2020023263A1 US 2019042176 W US2019042176 W US 2019042176W WO 2020023263 A1 WO2020023263 A1 WO 2020023263A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- return
- branch
- instruction
- btb
- entry
- 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.)
- Ceased
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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
Definitions
- a processor can employ one or more predictive processing techniques.
- One type of predictive processing technique is referred to as branch prediction, whereby the processor predicts the outcome of a branch instruction so that the processor can begin speculatively executing
- BTB branch target buffer
- the BTB stores address information for predicted branches.
- conventional BTB structures do not support efficient execution of different types of program branches.
- FIG. 1 is a block diagram of a processor that employs a branch target buffer (BTB) that includes return prediction information to predict whether an instruction block targeted by a branch instruction includes a return instruction in accordance with some embodiments.
- BTB branch target buffer
- FIG. 2 is a diagram of an example of the processor of FIG. 1 initiating access to stack of return addresses in response to the BTB indicating that an instruction block targeted by a branch instruction includes a return instruction in accordance with some embodiments.
- FIG. 3 is a flow diagram of a method of a processor initiating access to stack of return addresses in response to a BTB indicating that an instruction block targeted by a branch instruction includes a return instruction in accordance with some
- FIGs. 1-3 illustrate techniques for reducing delays in identifying a return address for a return instruction at a processor.
- the processor includes a branch target buffer (BTB) having a plurality of entries whereby each entry corresponds to an associated instruction pointer value that is predicted to be a branch instruction.
- Each BTB entry stores a predicted branch target address for the branch instruction, and further stores information indicating whether the next branch in the block of instructions associated with the predicted branch target address is predicted to be a return instruction.
- the processor initiates an access to a return stack that stores the return address for the predicted return instruction. By initiating access to the return stack responsive to the return prediction stored at the BTB, the processor reduces the delay in identifying the return address, thereby improving processing efficiency.
- a conventional processor does not store predicted return information.
- a conventional processor does not initiate access to the return stack until a fetch stage of the processor identifies that the current instruction pointer value corresponds to a return instruction. Because retrieving the return address from the return stack requires multiple clock cycles, operations at the processor can be delayed.
- the processor initiates access to the return stack early, so that when the instruction pointer value reaches the return instruction, the return address has been retrieved from the stack and is available for use by the processor.
- storing predicted return information supports faster access to return addresses and thus improves processing efficiency.
- FIG. 1 illustrates a processor 100 that employs a branch target buffer (BTB) that includes return prediction information to predict whether an instruction block targeted by a branch instruction includes a return instruction in accordance with some embodiments.
- the processor executes sets of instructions (e.g., computer programs) to carry out specified tasks on behalf of an electronic device.
- the processor 100 is incorporated in one of a variety of electronic devices, such as a desktop or laptop computer, server, game console, smartphone, tablet, and the like.
- the processor 100 includes an instruction pipeline having an instruction fetch stage 102 and additional pipeline stages 104.
- the additional pipeline stages 104 include stages to decode fetched instructions into sets of operations, execution stages to execute the decoded operations, and a retire stage to retire executed instructions.
- the processor 100 includes additional modules to support execution of instructions, including one or more memory controllers, input/output controllers, memory structures (e.g., one or more caches) and the like.
- the processor 100 includes additional instruction pipelines.
- the processor 100 includes multiple processor cores, with each processor core having at least one instruction pipeline to execute sets of instructions.
- the processor 100 includes additional processing units specifically designed to execute operations associated with special tasks, such as one or more graphics processing units (GPUs) to execute operations associated with drawing, display, and other graphics operations.
- GPUs graphics processing units
- the instruction fetch stage 102 is generally configured to retrieve (fetch) instructions from an instruction cache 103 based on an instruction pointer 101 .
- the instructions pointer 101 is an address value indicating the current instruction to be fetched and can be modified by executing operations to modify the program flow of the instructions being executed.
- branch instructions modify the instruction pointer 101 based, for example, on evaluation of data specified by the branch instruction or an associated instruction.
- the processor 100 includes a return stack 1 15 and branch target buffer (BTB) 1 10.
- the return stack 1 15 is a stack memory structure that stores return addresses for return instructions executing at the processor 100.
- the fetch stage 102 in response to identifying a branch instruction that is of type call, the fetch stage 102 generates a specified instruction pointer value as the return address.
- the instruction fetch stage 102 generates the return address by adding a specified value to the instruction pointer 101 , wherein the specified value corresponds to a size (e.g., a width) of the instructions executed at the instruction pipeline.
- the instruction fetch stage pushes the return address on the return stack 1 15.
- the fetch stage 102 identifies the return address by retrieving (popping) the return address from the top of the return stack 1 15, as described further herein, and storing the return address as the value of the instruction pointer 101.
- the BTB 1 10 includes a plurality of entries (e.g., entry 1 1 1 ) with each entry corresponding to a different instruction pointer value that is associated with a branch instruction.
- the instruction fetch stage 102 provides the instruction pointer 101 to the BTB 1 10.
- the BTB 1 10 retrieves a branch target address (BTA) from a BTA field (e.g., BTA field 1 12 of entry 1 1 1 ) of the identified entry and provides the BTA to the instruction fetch stage 102.
- BTA branch target address
- the BTB 1 10 thus provides an efficient way for the processor 100 to quickly identify branch target addresses.
- the processor can modify the entries of the BTB 1 10, including allocation of new entries and modification of BTAs, both non-speculatively and speculatively.
- Non-speculative updates are executed by the pipeline stages 104. For example, in response to identifying an instruction as a branch instruction, a decode stage provides an instruction pointer value for the branch instruction to the BTB 1 10. In response, the BTB 1 10 ensures that an entry is allocated for the received instruction pointer value. In addition, an execution unit provides the calculated BTA for the branch instruction to the BTB 1 10, which stores the BTA at the BTA field of the corresponding entry.
- the processor 100 includes a conditional predictor 108.
- the conditional predictor 108 monitors the history of branch instructions (illustrated as branch history 109) executed at the instruction pipeline of the processor 100, and identifies patterns in branch history 109 according to one or more known branch prediction techniques. Based on the identified patterns and on the actual direction of each branch, the conditional predictor 108 predicts whether each branch instruction is taken or not taken (sometimes referred to as the direction of the branch instruction).
- each entry includes a return prediction field (e.g. return prediction field 1 13) to indicate if the next branch instruction in the block of instructions associated with the corresponding BTA is predicted to be a return instruction.
- a“branch-return” sequence with the branch instruction that begins the sequence referred to as the“source” branch of the branch-return sequence.
- An example of such a sequence is as follows:
- JMP ADDRESS B branch instruction— not a branch return sequence
- the BTB 1 10 In response to identifying a branch-return sequence a threshold number of times, the BTB 1 10 sets the return prediction field to indicate a predicted return. In response to receiving an instruction pointer value from the instruction fetch stage 102, the BTB 1 10 determines if the received instruction pointer value results in a BTB hit, as described above. In response to a BTB hit, the BTB 1 10 provides to the instruction fetch stage 102 the BTA at the BTA field of the entry that caused the BTB hit. In addition, the BTB 1 10 determines if the corresponding return prediction field indicates a predicted return. If so, the BTB 1 10 initiates a pop operation at the return stack 1 15. The return address is therefore available for quick access when the predicted return instruction is reached.
- one or more of the pipeline stages 104 indicates to the BTB 1 10 a mis- predicted return.
- the BTB 1 10 clears the return prediction field for the entry corresponding to the source branch instruction of the branch return sequence. In other embodiments, the BTB 1 10 clears the return prediction field in response to the mis-predicted return occurring a threshold number of times.
- the processor 100 in addition to initiating access to the return stack 1 15, the processor 100 takes additional actions in response to a predicted return. For example, in some embodiments, in response to a predicted return the processor 100 suppresses the subsequent access to the BTB 1 10 that is expected to result in a BTB hit on the predicted return instruction itself. By suppressing this access, the processor 100 conserves power and other system resources.
- FIG. 2 is a diagram of an example 200 of the processor 100 initiating access to the return stack 1 15 in response to the BTB 1 10 indicating that an instruction block targeted by a branch instruction includes a return instruction in accordance with some embodiments.
- the entry 1 1 1 includes the BTA field 1 12 to store a BTA for the branch instruction corresponding to the entry 1 1 1 .
- the return prediction field 1 13 of entry 1 1 1 is set to value (indicated as ⁇ ” in the depicted example) that indicates the branch instruction is predicted to be the branch source of a branch-return sequence.
- the return prediction field 1 13 is in a state indicating that the next branch instruction in the block of instructions associated with the branch instruction corresponding to entry 1 1 1 is predicted to be a return instruction. For ease of description, this state is referred to herein as the return prediction field indicating a predicted return.
- the instruction fetch stage 102 provides the instruction pointer 101 to the BTB 1 10.
- the provision of the instruction pointer 101 results in a BTB hit at the entry 1 1 1 . That is, the BTB 1 10 identifies the entry 1 1 1 as being associated with the memory address corresponding to the instruction pointer 101.
- the BTB 1 10 provides the BTA stored at the BTA field 1 12 to the instruction fetch stage 102.
- the BTB 1 10 initiates an access to the return stack 1 15 to retrieve (pop) the address at the top of the stack, for provision to the instruction fetch stage 102.
- FIG. 3 is a flow diagram of a method 300 of a processor initiating access to stack of return addresses in response to a BTB indicating that an instruction block targeted by a branch instruction includes a return instruction in accordance with some embodiments.
- the BTB receives an instruction pointer value from a fetch stage of the processor.
- the BTB identifies an entry corresponding to the received instruction pointer.
- the BTB identifies whether a return prediction field of the identified entry indicates a predicted return. If not, the method flow moves to block 310 and the BTB provides a BTA at the identified BTB entry to the fetch stage.
- the method flow moves to block 308 and the BTB initiates retrieval of the return address from the top of the return stack.
- the method flow proceeds to block 310 and the BTB provides a BTA at the identified BTB entry to the fetch stage.
- a method includes: identifying, based on a first entry of a branch target buffer (BTB) of a processor, a prediction of a first branch return instruction; and in response to identifying the prediction of the first branch return instruction, initiating access to a stack of branch return addresses of the processor.
- the first entry includes: a first return field indicating the prediction of the first branch return instruction; and a first branch field indicating a first predicted branch address.
- the prediction of the first branch return instruction includes a prediction that the first predicted branch address corresponds to a return instruction.
- the method includes setting the first entry to indicate no return prediction in response to identifying that the first branch return instruction was mispredicted.
- the method includes: in response to determining that the first entry indicates a prediction of a return instruction, suppressing a subsequent access to the BTB. In yet another aspect, the method includes: identifying, based on a second entry of the BTB, a prediction of a second branch return instruction; and in response to identifying the prediction of the second branch return instruction, initiating access to the stack of branch return addresses.
- a method includes: accessing a first entry of a branch target buffer (BTB) based on a first program counter value; branching to a first instruction address based on a first branch address field of the first entry of the BTB; and in response to a first return field of the first entry of the BTB indicating that the first instruction address corresponds to a return instruction, initiating access to a stack of branch return addresses.
- the method includes: in response to determining that the first instruction address corresponds to the return instruction, storing an indication of a return at the first return field.
- initiating access to the stack of branch return addresses includes returning an instruction address from the stack of branch return addresses concurrent with branching to the first instruction address.
- the method includes in response to the first return field indicating that the first instruction address corresponds to the return instruction, suppressing a subsequent access to the BTB.
- suppressing the subsequent access includes suppressing an access to the BTB that is expected to result in a BTB hit on a predicted return instruction.
- the method includes: accessing a second entry of the BTB based on a second program counter value; branching to a second instruction address based on a second branch address field of the first entry of the BTB; and in response to a second return field of the second entry of the BTB indicating that the second instruction address corresponds to a return instruction, initiating access to the stack of branch return addresses.
- the method includes: setting the first entry to indicate no return prediction in response to identifying that the return was mispredicted.
- a processor includes: a branch target buffer (BTB) comprising a first entry identifying a prediction of a first branch return instruction; a stack of branch return addresses; and a processor core configured to, in response to the first entry of the BTB indicating the prediction of the first branch return instruction, initiating access to the stack of branch return addresses.
- the first entry of the BTB includes: a first return field indicating the prediction of the first branch return instruction; and a first branch field indicating a first predicted branch address.
- the prediction of the first branch return instruction includes a prediction that the first predicted branch address corresponds to a return instruction.
- the processor core is configured to: set the first entry to indicate no return prediction in response to identifying that the first branch return instruction was mispredicted. In another aspect, the processor core is configured to: in response to determining that the first entry indicates a return instruction, suppress a subsequent access to the BTB. In still another aspect, the processor core is configured to: in response to determining that the first entry indicates a return instruction, suppress a subsequent access to the BTB that is expected to access the first branch return instruction. In yet another aspect, the BTB includes a second entry indicating a prediction of a second branch return instruction; and the processor core is configured to, in response to identifying the prediction of the second branch return instruction, initiate access to the stack of branch return addresses.
- a computer readable storage medium may include any non-transitory storage medium, or combination of non-transitory storage media, accessible by a computer system during use to provide instructions and/or data to the computer system.
- Such storage media can include, but is not limited to, optical media (e.g., compact disc (CD), digital versatile disc (DVD), Blu-Ray disc), magnetic media (e.g., floppy disc , magnetic tape, or magnetic hard drive), volatile memory (e.g., random access memory (RAM) or cache), non-volatile memory (e.g., read-only memory (ROM) or Flash memory), or microelectromechanical systems (MEMS)-based storage media.
- optical media e.g., compact disc (CD), digital versatile disc (DVD), Blu-Ray disc
- magnetic media e.g., floppy disc , magnetic tape, or magnetic hard drive
- volatile memory e.g., random access memory (RAM) or cache
- non-volatile memory e.g., read-only memory (ROM)
- the computer readable storage medium may be embedded in the computing system (e.g., system RAM or ROM), fixedly attached to the computing system (e.g., a magnetic hard drive), removably attached to the computing system (e.g., an optical disc or Universal Serial Bus (USB)-based Flash memory), or coupled to the computer system via a wired or wireless network (e.g., network accessible storage (NAS)).
- a wired or wireless network e.g., network accessible storage (NAS)
- NAS network accessible storage
- certain aspects of the techniques described above may implemented by one or more processors of a processing system executing software.
- the software includes one or more sets of executable instructions stored or otherwise tangibly embodied on a non-transitory computer readable storage medium.
- the software can include the instructions and certain data that, when executed by the one or more processors, manipulate the one or more processors to perform one or more aspects of the techniques described above.
- the non-transitory computer readable storage medium can include, for example, a magnetic or optical disk storage device, solid state storage devices such as Flash memory, a cache, random access memory (RAM) or other non-volatile memory device or devices, and the like.
- the executable instructions stored on the non-transitory computer readable storage medium may be in source code, assembly language code, object code, or other instruction format that is interpreted or otherwise executable by one or more processors.
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)
Priority Applications (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| EP19841112.6A EP3827338A4 (en) | 2018-07-24 | 2019-07-17 | BRANCH TARGET BUFFER WITH EARLY RETURN PREDICTION |
| KR1020217004753A KR102571623B1 (ko) | 2018-07-24 | 2019-07-17 | 초기 리턴 예측을 갖는 분기 타겟 버퍼 |
| JP2021503748A JP7269318B2 (ja) | 2018-07-24 | 2019-07-17 | 早期リターン予測を有する分岐ターゲットバッファ |
| CN201980049605.0A CN112470122B (zh) | 2018-07-24 | 2019-07-17 | 具有提前返回预测的分支目标缓冲器 |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US16/043,293 | 2018-07-24 | ||
| US16/043,293 US11055098B2 (en) | 2018-07-24 | 2018-07-24 | Branch target buffer with early return prediction |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2020023263A1 true WO2020023263A1 (en) | 2020-01-30 |
Family
ID=69179546
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/US2019/042176 Ceased WO2020023263A1 (en) | 2018-07-24 | 2019-07-17 | Branch target buffer with early return prediction |
Country Status (6)
| Country | Link |
|---|---|
| US (1) | US11055098B2 (enExample) |
| EP (1) | EP3827338A4 (enExample) |
| JP (1) | JP7269318B2 (enExample) |
| KR (1) | KR102571623B1 (enExample) |
| CN (1) | CN112470122B (enExample) |
| WO (1) | WO2020023263A1 (enExample) |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11663126B1 (en) * | 2022-02-23 | 2023-05-30 | International Business Machines Corporation | Return address table branch predictor |
| CN116737240B (zh) * | 2022-03-02 | 2024-08-06 | 腾讯科技(深圳)有限公司 | 分支预测方法、装置、处理器、介质及设备 |
Citations (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20030120906A1 (en) * | 2001-12-21 | 2003-06-26 | Jourdan Stephan J. | Return address stack |
| US20040003213A1 (en) * | 2002-06-28 | 2004-01-01 | Bockhaus John W. | Method for reducing the latency of a branch target calculation by linking the branch target address cache with the call-return stack |
| US20050076193A1 (en) | 2003-09-08 | 2005-04-07 | Ip-First, Llc. | Apparatus and method for selectively overriding return stack prediction in response to detection of non-standard return sequence |
| US6973563B1 (en) * | 2002-01-04 | 2005-12-06 | Advanced Micro Devices, Inc. | Microprocessor including return prediction unit configured to determine whether a stored return address corresponds to more than one call instruction |
| US20120297167A1 (en) * | 2011-05-20 | 2012-11-22 | Shah Manish K | Efficient call return stack technique |
| US20140143494A1 (en) | 2012-11-19 | 2014-05-22 | Florida State University Research Foundation, Inc. | Systems and methods for improving processor efficiency through caching |
| US20180060075A1 (en) * | 2016-09-01 | 2018-03-01 | Oracle International Corporation | Method for reducing fetch cycles for return-type instructions |
Family Cites Families (15)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5604877A (en) * | 1994-01-04 | 1997-02-18 | Intel Corporation | Method and apparatus for resolving return from subroutine instructions in a computer processor |
| US5964868A (en) * | 1996-05-15 | 1999-10-12 | Intel Corporation | Method and apparatus for implementing a speculative return stack buffer |
| US5850543A (en) * | 1996-10-30 | 1998-12-15 | Texas Instruments Incorporated | Microprocessor with speculative instruction pipelining storing a speculative register value within branch target buffer for use in speculatively executing instructions after a return |
| US6957327B1 (en) * | 1998-12-31 | 2005-10-18 | Stmicroelectronics, Inc. | Block-based branch target buffer |
| US6609194B1 (en) * | 1999-11-12 | 2003-08-19 | Ip-First, Llc | Apparatus for performing branch target address calculation based on branch type |
| US7200740B2 (en) * | 2001-05-04 | 2007-04-03 | Ip-First, Llc | Apparatus and method for speculatively performing a return instruction in a microprocessor |
| US8341383B2 (en) * | 2007-11-02 | 2012-12-25 | Qualcomm Incorporated | Method and a system for accelerating procedure return sequences |
| US7882338B2 (en) * | 2008-02-20 | 2011-02-01 | International Business Machines Corporation | Method, system and computer program product for an implicit predicted return from a predicted subroutine |
| US7913068B2 (en) * | 2008-02-21 | 2011-03-22 | International Business Machines Corporation | System and method for providing asynchronous dynamic millicode entry prediction |
| US20120079255A1 (en) | 2010-09-25 | 2012-03-29 | Combs Jonathan D | Indirect branch prediction based on branch target buffer hysteresis |
| WO2013101152A1 (en) * | 2011-12-30 | 2013-07-04 | Intel Corporation | Embedded branch prediction unit |
| US20140250289A1 (en) * | 2013-03-01 | 2014-09-04 | Mips Technologies, Inc. | Branch Target Buffer With Efficient Return Prediction Capability |
| US20190235873A1 (en) * | 2018-01-30 | 2019-08-01 | Samsung Electronics Co., Ltd. | System and method of reducing computer processor power consumption using micro-btb verified edge feature |
| GB201802815D0 (en) * | 2018-02-21 | 2018-04-04 | Univ Edinburgh | Branch target buffer arrangement for instruction prefetching |
| GB2577051B (en) * | 2018-09-11 | 2021-03-03 | Advanced Risc Mach Ltd | Branch prediction using branch target buffer |
-
2018
- 2018-07-24 US US16/043,293 patent/US11055098B2/en active Active
-
2019
- 2019-07-17 WO PCT/US2019/042176 patent/WO2020023263A1/en not_active Ceased
- 2019-07-17 JP JP2021503748A patent/JP7269318B2/ja active Active
- 2019-07-17 EP EP19841112.6A patent/EP3827338A4/en active Pending
- 2019-07-17 CN CN201980049605.0A patent/CN112470122B/zh active Active
- 2019-07-17 KR KR1020217004753A patent/KR102571623B1/ko active Active
Patent Citations (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20030120906A1 (en) * | 2001-12-21 | 2003-06-26 | Jourdan Stephan J. | Return address stack |
| US6973563B1 (en) * | 2002-01-04 | 2005-12-06 | Advanced Micro Devices, Inc. | Microprocessor including return prediction unit configured to determine whether a stored return address corresponds to more than one call instruction |
| US20040003213A1 (en) * | 2002-06-28 | 2004-01-01 | Bockhaus John W. | Method for reducing the latency of a branch target calculation by linking the branch target address cache with the call-return stack |
| US20050076193A1 (en) | 2003-09-08 | 2005-04-07 | Ip-First, Llc. | Apparatus and method for selectively overriding return stack prediction in response to detection of non-standard return sequence |
| US20120297167A1 (en) * | 2011-05-20 | 2012-11-22 | Shah Manish K | Efficient call return stack technique |
| US20140143494A1 (en) | 2012-11-19 | 2014-05-22 | Florida State University Research Foundation, Inc. | Systems and methods for improving processor efficiency through caching |
| US20180060075A1 (en) * | 2016-09-01 | 2018-03-01 | Oracle International Corporation | Method for reducing fetch cycles for return-type instructions |
Also Published As
| Publication number | Publication date |
|---|---|
| US11055098B2 (en) | 2021-07-06 |
| CN112470122B (zh) | 2022-05-10 |
| JP7269318B2 (ja) | 2023-05-08 |
| JP2021532471A (ja) | 2021-11-25 |
| KR20210025677A (ko) | 2021-03-09 |
| KR102571623B1 (ko) | 2023-08-29 |
| EP3827338A4 (en) | 2022-04-27 |
| US20200034151A1 (en) | 2020-01-30 |
| EP3827338A1 (en) | 2021-06-02 |
| CN112470122A (zh) | 2021-03-09 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP7160956B2 (ja) | 分岐命令のタイプに基づく先行分岐予測の選択的実行 | |
| EP3850480B1 (en) | Controlling accesses to a branch prediction unit for sequences of fetch groups | |
| JP7513527B2 (ja) | 予測ミス回復の待ち時間を短縮するための偶発的な分岐予測の格納 | |
| US20120079255A1 (en) | Indirect branch prediction based on branch target buffer hysteresis | |
| US10353710B2 (en) | Techniques for predicting a target address of an indirect branch instruction | |
| JP2022509171A (ja) | ループ終了予測器 | |
| JP7793552B2 (ja) | 命令アドレス変換及び命令プリフェッチエンジン | |
| US11392383B2 (en) | Apparatus and method for prefetching data items | |
| US11016771B2 (en) | Processor and instruction operation method | |
| EP4208783A1 (en) | Alternate path for branch prediction redirect | |
| US11055098B2 (en) | Branch target buffer with early return prediction | |
| US11579886B2 (en) | System and method for multi-level classification of branches | |
| US11687342B2 (en) | Way predictor and enable logic for instruction tightly-coupled memory and instruction cache | |
| US11204771B2 (en) | Methods and apparatus for handling processor load instructions |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 19841112 Country of ref document: EP Kind code of ref document: A1 |
|
| ENP | Entry into the national phase |
Ref document number: 2021503748 Country of ref document: JP Kind code of ref document: A |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |
|
| ENP | Entry into the national phase |
Ref document number: 20217004753 Country of ref document: KR Kind code of ref document: A |
|
| ENP | Entry into the national phase |
Ref document number: 2019841112 Country of ref document: EP Effective date: 20210224 |
|
| WWG | Wipo information: grant in national office |
Ref document number: 202117002098 Country of ref document: IN |