The tournament predictor is presented as doing speculative
update of the global history and non-speculative update
of the local history used to generate the branch prediction.
However, the code does speculative update of both histories.
Signed-off-by: Jason Lowe-Power <jason@lowepower.com>
assert(local_history_idx < localHistoryTableSize);
- // Commented code is for doing speculative update of counters and
- // all histories.
+ // Speculative update of the global history and the
+ // selected local history.
if (choice_prediction) {
if (global_prediction) {
updateGlobalHistTaken(tid);
* used in the 21264. It has a local predictor, which uses a local history
* table to index into a table of counters, and a global predictor, which
* uses a global history to index into a table of counters. A choice
- * predictor chooses between the two. Only the global history register
- * is speculatively updated, the rest are updated upon branches committing
- * or misspeculating.
+ * predictor chooses between the two. Both the global history register
+ * and the selected local history are speculatively updated.
*/
class TournamentBP : public BPredUnit
{