Browse Prior Art Database

Exploiting Agnostic Branches Disclosure Number: IPCOM000244897D
Publication Date: 2016-Jan-27
Document File: 2 page(s) / 45K

Publishing Venue

The Prior Art Database


Disclosed is an efficient way to improve branch prediction throughput. It accelerates the penalties of taken branches that have as targets the next sequential instruction address (NSIA). This disclosure refers to these types of branches as agnostic branches.

This text was extracted from a PDF file.
This is the abbreviated version, containing approximately 51% of the total text.

Page 01 of 2

Exploiting Agnostic Branches

A non-trivial amount of taken branches have as targets the next sequential instruction address (NSIA). This disclosure refers to these types of branches as agnostic branches .

Branch prediction is a performance-critical component of a pipelined high frequency microprocessor. It is used to predict the direction (Taken vs. NotTaken) and the target address of each branch instruction. This is beneficial because it allows processing to continue along a branch's predicted path rather than having to wait for the outcome of the branch to be determined. A penalty is incurred if a branch is mispredicted.

A Branch Target Buffer (BTB) is a structure that stores branch and target information. It is a cache of branch information and in many ways is analogous to instruction and data caches.

Asynchronous, lookahead branch prediction is done asynchronously from the main processor pipeline, which begins with instruction fetching. Upon being restarted at a specified instruction address at the same timeframe as instruction fetching, branch prediction independently searches the BTB for the first branch at or after the restart address. Upon finding a branch, the branch prediction logic reports it to the instruction fetching logic and to the pipeline logic to allow eventual correlation between branch predictions and instructions being decoded. Independently from the rest of the pipeline, the branch prediction logic re-indexes itself with the predicted target address of a predicted taken branch. For a predicted not-taken branch, it continues searching sequentially. It then looks for the next branch. This process then repeats.

Indexing branch predictors, reading content from said branch predictors, determining

whether a predicted taken branch exists and if so, its target address, re...