Skip to content

New generic branch prediction#226

Merged
jj16791 merged 17 commits intodevfrom
branch-prediction
Jun 21, 2022
Merged

New generic branch prediction#226
jj16791 merged 17 commits intodevfrom
branch-prediction

Conversation

@jj16791
Copy link
Copy Markdown
Contributor

@jj16791 jj16791 commented Apr 29, 2022

These developments implement a new GenericPredictor class which contains:

  • Static predictor based on pre-allocated branch type.
  • A Branch Target Buffer (BTB) with a local and global indexing scheme and a 2-bit saturating counter.
  • A Return Address Stack (RAS) is also in use.

Various changes have occurred to the parent branch class including:

  • The passing of a branch type to help prediction (i.e. always taking unconditional branches)
  • The passing of a known target extracting during pre-decoding to help prediction (i.e branch instructions to labels)
  • Callable flush logic for the associated branch prediction schemes with an address as the parameter

@jj16791 jj16791 added the enhancement New feature or request label Apr 29, 2022
@jj16791 jj16791 requested a review from FinnWilkinson April 29, 2022 11:44
@jj16791 jj16791 changed the base branch from main to dev April 29, 2022 11:46
Comment thread src/include/simeng/BTB_BWTPredictor.hh
Comment thread src/include/simeng/GenericPredictor.hh Outdated
Comment thread src/lib/BTB_BWTPredictor.cc
@jj16791 jj16791 force-pushed the branch-prediction branch from c51da61 to 07b785e Compare May 12, 2022 14:07
@jj16791 jj16791 force-pushed the branch-prediction branch from da9bc64 to fac097a Compare June 14, 2022 15:03
@jj16791 jj16791 force-pushed the branch-prediction branch from 8854ac1 to 5157697 Compare June 20, 2022 17:38
Comment thread src/include/simeng/pipeline/FetchUnit.hh
Comment thread src/include/simeng/pipeline/ReorderBuffer.hh
Comment thread src/lib/models/outoforder/Core.cc Outdated
Copy link
Copy Markdown
Contributor

@FinnWilkinson FinnWilkinson left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@jj16791 jj16791 merged commit c340d96 into dev Jun 21, 2022
tomhepworth pushed a commit that referenced this pull request Jun 25, 2022
A new generic branch predictor containing parameterisable BTB and RAS structures, global indexing, and better identification of branch instructions. Additionally, a parameterisable loop buffer has been implemented in the fetch unit and a loop detection scheme in the ROB unit.
jj16791 added a commit that referenced this pull request Jul 28, 2022
A new generic branch predictor containing parameterisable BTB and RAS structures, global indexing, and better identification of branch instructions. Additionally, a parameterisable loop buffer has been implemented in the fetch unit and a loop detection scheme in the ROB unit.
jj16791 added a commit that referenced this pull request Aug 1, 2022
A new generic branch predictor containing parameterisable BTB and RAS structures, global indexing, and better identification of branch instructions. Additionally, a parameterisable loop buffer has been implemented in the fetch unit and a loop detection scheme in the ROB unit.
tomhepworth pushed a commit that referenced this pull request Aug 13, 2022
A new generic branch predictor containing parameterisable BTB and RAS structures, global indexing, and better identification of branch instructions. Additionally, a parameterisable loop buffer has been implemented in the fetch unit and a loop detection scheme in the ROB unit.
jj16791 added a commit that referenced this pull request Oct 17, 2022
A new generic branch predictor containing parameterisable BTB and RAS structures, global indexing, and better identification of branch instructions. Additionally, a parameterisable loop buffer has been implemented in the fetch unit and a loop detection scheme in the ROB unit.
@jj16791 jj16791 deleted the branch-prediction branch October 18, 2022 15:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants