Skip to content

Commit 0acbad5

Browse files
committed
cpu-o3: Delay resolve updates after reverse tick
Change-Id: I76d9e187dcef57de818907d9804a8b05b4a76cff
1 parent 669eca4 commit 0acbad5

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

src/cpu/o3/fetch.cc

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1464,6 +1464,7 @@ Fetch::handleIEWSignals()
14641464
}
14651465

14661466
auto &incoming = fromIEW->iewInfo->resolvedCFIs;
1467+
const bool had_pending_resolve = !resolveQueue.empty();
14671468
uint8_t enqueueSize = fromIEW->iewInfo->resolvedCFIs.size();
14681469
uint8_t enqueueCount = 0;
14691470

@@ -1497,7 +1498,10 @@ Fetch::handleIEWSignals()
14971498

14981499
fetchStats.resolveQueueOccupancy.sample(resolveQueue.size());
14991500

1500-
if (!resolveQueue.empty()) {
1501+
// Process only entries that were already pending before this cycle.
1502+
// This preserves a cycle of separation between IEW producing resolved CFIs
1503+
// and fetch consuming them as predictor resolved updates.
1504+
if (had_pending_resolve && !resolveQueue.empty()) {
15011505
auto &entry = resolveQueue.front();
15021506
unsigned int stream_id = entry.resolvedFTQId;
15031507
dbpbtb->prepareResolveUpdateEntries(stream_id);

0 commit comments

Comments
 (0)