Branch Predictor Competition
- You may use no more than 128Kbits of state to implement your predictor
- A hardware implementation must be feasible (a detailed justification is not required)
You must submit your predictor by the 8th March 2018 (code + brief description)
Please ensure I am able to run your code so I can generate your final score using the secret program trace. The winner will be presented with a small prize at the final lecture. If you let me know your best scores as you progress and I'll post them here.
These traces have been generated to help you to develop your predictor. Each contains a list of addresses for each branch encountered and an indication of whether the branch was taken or not. e.g.
8048ff0 1 8048ff0 1 8048ff0 1 8048ff0 0 804e41f 1 804e418 1 8048ff0 1 8048ff0 1
simple_predictor.c A simple C program that implements a branch predictor based on 2-bit saturating counters.
To run the predictor:
gcc -o simple_predictor simple_predictor.c gzip -dc gcc.trace.gz | ./simple_predictor >Branch Predictor Accuracy = 91.82% >(branch_count=5126353)
You are of course free to use whatever platform and language you like, even Haskell
Previous years entries that have performed well have included perceptron based predictors, gshare predictors and tournament predictors.
Championship Branch Prediction Workshop