Make non-speculative training optional.

Removing non-speculative training actually improves performance in
CoreMark.  While it's "safer", I guess this isn't required for BSC.
This commit is contained in:
Jonathan Woodruff
2021-11-24 17:11:36 +00:00
parent cc0114f645
commit 4e0da006e8

View File

@@ -453,7 +453,11 @@ module mkCore#(CoreId coreId)(Core);
endinterface);
aluExe[i] <- mkAluExePipeline(aluExeInput);
// truly call fetch method to train branch predictor
rule doFetchTrainBP(trainBPQ[i].notEmpty && trainBPQ[i].first.spec_bits == 0);
Bool train_ready = True;
`ifdef NO_SPEC_TRAINING
train_ready = (trainBPQ[i].first.spec_bits == 0);
`endif
rule doFetchTrainBP(trainBPQ[i].notEmpty && train_ready);
let train = trainBPQ[i].first.data;
trainBPQ[i].deq;
fetchStage.train_predictors(