Skip to content

taraeicher/TAGEBranchPredictor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

This is a TAGE predictor based on "A case for (partially) TAgged GEometric history length branch prediction" by Seznec and Michaud. It is constrained to use no more than 64 KB memory. It consists of 4 variable-length tables with varying tag sizes, with the hash based on the 1st history-folding technique described in “A PPM-like, tag-based branch predictor” by Michaud. Each table entry has a single-bit usefulness counter used for allocation, and a single entry is allocated on each misprediction on the first available table in increasing order of tag length. A prediction and alt prediction are made using the first two available table entries for a given branch, sorted in decreasing order of tag length. An alt counter is used to determine whether the alt prediction should be used as the final prediction. If an entry is not allocated for the given branch in any of the 4 tables above, a simple base predictor with 3-bit saturating counters indexed by the PC address is used for the prediction.

The idea of the TAGE predictor is that a branch should be resolved by a predictor that is as simple as possible...but no simpler. Those branches that need long history lengths in order to be correctly resolved will benefit from having a corresponding predictor in the table with the longest history length. Those that can be predicted by a simple 3-bit saturating counter will never have allocations on the TAGE tables at all.

This branch predictor is meant to be run with the simulator available at https://drive.google.com/open?id=0B5TPQrtyq9_kRmxmak1ESFF4cXc . To install the simulator, run the following commands:

tar -xzvf bpc6421AU15.tar.gz
cd bpc6421AU15
cd sim
make ./predictor ../traces/SHORT-INT-1.cbp4.gz

After installing the simulator, overwrite the existing predictor.cc and predictor.h files with the CC and H files in this repository. Run using either runall.pl or doit.sh in the scripts directory. You can view your results using the getdata.pl script.

This predictor achieves the following results with respect to misprediction rate:

LONG-SPEC2K6-00 1.884

LONG-SPEC2K6-01 7.442

LONG-SPEC2K6-02 0.628

LONG-SPEC2K6-03 1.479

LONG-SPEC2K6-04 9.818

LONG-SPEC2K6-05 5.538

LONG-SPEC2K6-06 0.719

LONG-SPEC2K6-07 11.772

LONG-SPEC2K6-08 0.833

LONG-SPEC2K6-09 3.964

SHORT-FP-1 1.752

SHORT-FP-2 0.679

SHORT-FP-3 0.018

SHORT-INT-1 0.410

SHORT-INT-2 6.541

SHORT-INT-3 9.370

SHORT-MM-1 7.974

SHORT-MM-2 10.448

SHORT-MM-3 0.095

SHORT-SERV-1 1.254

SHORT-SERV-2 1.216

SHORT-SERV-3 3.589

AMEAN 3.974

About

64KB branch predictor using TAGE

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages