TournamentBP: Fix some bugs with table sizes and counters
authorErik Tomusk <E.Tomusk@sms.ed.ac.uk>
Thu, 6 Dec 2012 15:31:06 +0000 (09:31 -0600)
committerErik Tomusk <E.Tomusk@sms.ed.ac.uk>
Thu, 6 Dec 2012 15:31:06 +0000 (09:31 -0600)
commit3dc7e4f496ad3ddab3010f8e7fdfce683ffdbdfb
tree854164f75e2fd4cfafa88668025c02e2cfcdd115
parent150e9b8c6875493c0b1a11391638b895d551e45f
TournamentBP: Fix some bugs with table sizes and counters
globalHistoryBits, globalPredictorSize, and choicePredictorSize are decoupled.
globalHistoryBits controls how much history is kept, global and choice
predictor sizes control how much of that history is used when accessing
predictor tables. This way, global and choice predictors can actually be
different sizes, and it is no longer possible to walk off the predictor arrays
and cause a seg fault.

There are now individual thresholds for choice, global, and local saturating
counters, so that taken/not taken decisions are correct even when the
predictors' counters' sizes are different.

The interface for localPredictorSize has been removed from TournamentBP because
the value can be calculated from localHistoryBits.

Committed by: Nilay Vaish <nilay@cs.wisc.edu>
configs/common/O3_ARM_v7a.py
src/cpu/inorder/resources/bpred_unit.cc
src/cpu/o3/bpred_unit_impl.hh
src/cpu/pred/tournament.cc
src/cpu/pred/tournament.hh