@@ -115,7 +115,6 @@ Fetch::Fetch(CPU *_cpu, const BaseO3CPUParams ¶ms)
115115 branchPred(nullptr ),
116116 resolveQueueSize(params.resolveQueueSize),
117117 enableFullResolveTrain(params.enableFullResolveTrain),
118- enableLegacyResolveUpdate(params.enableLegacyResolveUpdate),
119118 decodeToFetchDelay(params.decodeToFetchDelay),
120119 renameToFetchDelay(params.renameToFetchDelay),
121120 iewToFetchDelay(params.iewToFetchDelay),
@@ -285,16 +284,6 @@ Fetch::FetchStatGroup::FetchStatGroup(CPU *cpu, Fetch *fetch)
285284 statistics::units::Count, statistics::units::Cycle>::get(),
286285 "Frontend Bandwidth Bound",
287286 frontendBound - frontendLatencyBound),
288- ADD_STAT(resolveQueueFullEvents, statistics::units::Count::get(),
289- "Number of events the resolve queue becomes full"),
290- ADD_STAT(resolveEnqueueFailEvent, statistics::units::Count::get(),
291- "Number of times an entry could not be enqueued to the resolve queue"),
292- ADD_STAT(resolveDequeueCount, statistics::units::Count::get(),
293- "Number of times an entry is dequeued from the resolve queue"),
294- ADD_STAT(resolveEnqueueCount, statistics::units::Count::get(),
295- "Number of times an entry is enqueued to the resolve queue"),
296- ADD_STAT(resolveQueueOccupancy, statistics::units::Count::get(),
297- "Number of entries in the resolve queue"),
298287 ADD_STAT(fullResolveEntriesReceived, statistics::units::Count::get(),
299288 "Number of full resolve entries received by fetch"),
300289 ADD_STAT(fullResolveEntriesMerged, statistics::units::Count::get(),
@@ -387,10 +376,6 @@ Fetch::FetchStatGroup::FetchStatGroup(CPU *cpu, Fetch *fetch)
387376 .flags (statistics::total);
388377 frontendBandwidthBound
389378 .flags (statistics::total);
390- resolveEnqueueCount
391- .init (1 , 8 , 1 );
392- resolveQueueOccupancy
393- .init (0 , 32 , 1 );
394379 fullResolveEntriesReceived
395380 .prereq (fullResolveEntriesReceived);
396381 fullResolveEntriesMerged
@@ -1517,70 +1502,6 @@ Fetch::handleIEWSignals()
15171502 return ;
15181503 }
15191504
1520- auto &incoming = fromIEW->iewInfo ->resolvedCFIs ;
1521-
1522- if (!enableLegacyResolveUpdate) {
1523- for (ThreadID tid = 0 ; tid < numThreads; ++tid) {
1524- fromIEW->iewInfo [tid].resolvedCFIs .clear ();
1525- }
1526- }
1527-
1528- if (enableLegacyResolveUpdate) {
1529- const bool had_pending_resolve = !resolveQueue.empty ();
1530- uint8_t enqueueSize = fromIEW->iewInfo ->resolvedCFIs .size ();
1531- uint8_t enqueueCount = 0 ;
1532-
1533- if (resolveQueueSize && resolveQueue.size () > resolveQueueSize - 4 ) {
1534- fetchStats.resolveQueueFullEvents ++;
1535- fetchStats.resolveEnqueueFailEvent += enqueueSize;
1536- } else {
1537-
1538- for (const auto &resolved : incoming) {
1539- bool merged = false ;
1540- for (auto &queued : resolveQueue) {
1541- if (queued.resolvedFTQId == resolved.ftqId ) {
1542- queued.resolvedInstPC .push_back (resolved.pc );
1543- merged = true ;
1544- break ;
1545- }
1546- }
1547-
1548- if (merged) {
1549- continue ;
1550- }
1551-
1552- ResolveQueueEntry new_entry;
1553- new_entry.resolvedFTQId = resolved.ftqId ;
1554- new_entry.resolvedInstPC .push_back (resolved.pc );
1555- resolveQueue.push_back (std::move (new_entry));
1556- enqueueCount++;
1557- }
1558- fetchStats.resolveEnqueueCount .sample (enqueueCount);
1559- }
1560-
1561- fetchStats.resolveQueueOccupancy .sample (resolveQueue.size ());
1562-
1563- // Process only entries that were already pending before this cycle.
1564- // This preserves a cycle of separation between IEW producing resolved
1565- // CFIs and fetch consuming them as predictor resolved updates.
1566- if (had_pending_resolve && !resolveQueue.empty ()) {
1567- auto &entry = resolveQueue.front ();
1568- unsigned int stream_id = entry.resolvedFTQId ;
1569- dbpbtb->prepareResolveUpdateEntries (stream_id, 0 );
1570- for (const auto resolvedInstPC : entry.resolvedInstPC ) {
1571- dbpbtb->markCFIResolved (stream_id, resolvedInstPC, 0 );
1572- }
1573- bool success = dbpbtb->resolveUpdate (stream_id, 0 );
1574- if (success) {
1575- dbpbtb->notifyResolveSuccess ();
1576- resolveQueue.pop_front ();
1577- fetchStats.resolveDequeueCount ++;
1578- } else {
1579- dbpbtb->notifyResolveFailure ();
1580- }
1581- }
1582- }
1583-
15841505 if (!enableFullResolveTrain) {
15851506 for (ThreadID tid = 0 ; tid < numThreads; ++tid) {
15861507 fromIEW->iewInfo [tid].resolveTrainEntries .clear ();
0 commit comments