Skip to content

Commit 0e63fe7

Browse files
authored
bpu: update IMLI counter, use cbp, not use shamt (#707)
* bpu: test old: only enable sc imli table Change-Id: I43a70f3b8b82efd9aa02d4be717ee27cb5ca80fe * bpu: update IMLI counter, use cbp, not use shamt Change-Id: I5ebfd31fb8c8bc08ae6619fa8e49c037762f0366 * Revert "bpu: test old: only enable sc imli table" This reverts commit e0ff197.
1 parent 4897796 commit 0e63fe7

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

src/cpu/pred/btb/folded_hist.cc

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#include "cpu/pred/btb/folded_hist.hh"
2+
// #include "debug/MGSC.hh"
23

34
namespace gem5
45
{
@@ -152,15 +153,20 @@ ImliFoldedHist::update(const boost::dynamic_bitset<> &ghr, int shamt, bool taken
152153
const uint64_t foldedMask = ((1ULL << foldedLen) - 1);
153154
uint64_t temp = _folded;
154155

155-
// Simple shift and set case
156-
if (taken && temp < ((1ULL << histLen) - 1) && shamt == 1) { // backward taken, inner most loop
157-
temp = temp + 1; // counter++ (index++)
158-
} else if (taken && shamt > 1) { // backward taken, not inner most loop
159-
temp = 1;
160-
} else if (!taken) { // backward not taken, hist = 0
156+
// For IMLI, we treat "taken" as a backward-taken event (i.e., loop continues).
157+
// Update rule (CBP-like):
158+
// - backward taken: counter++
159+
// - otherwise: counter = 0 (loop exits or no backward-taken event)
160+
if (taken) {
161+
const uint64_t max = ((1ULL << histLen) - 1);
162+
if (temp < max) {
163+
temp++;
164+
}
165+
} else {
161166
temp = 0;
162167
}
163168
_folded = temp & foldedMask;
169+
// DPRINTF(MGSC, "IMLI FoldedHist update: shamt %d, taken %d, folded %ld\n", shamt, taken, _folded);
164170
}
165171

166172
/**

0 commit comments

Comments
 (0)