From f9dc472571de4b6ab83ea692f30e5ba454adf0f2 Mon Sep 17 00:00:00 2001 From: Easton Man Date: Tue, 8 Oct 2024 19:53:34 +0800 Subject: [PATCH] cpu: Discriminate between fetch frags and other frags (#176) Change-Id: Iffcbbad27035b9940e7234d415333f6c95cabe57 Co-authored-by: Lingrui98 --- src/cpu/o3/comm.hh | 3 ++- src/cpu/o3/fetch.cc | 2 +- src/cpu/o3/iew.cc | 5 +++-- src/cpu/o3/rename.cc | 2 +- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/cpu/o3/comm.hh b/src/cpu/o3/comm.hh index 1dc49f8412..7a2653b5dc 100644 --- a/src/cpu/o3/comm.hh +++ b/src/cpu/o3/comm.hh @@ -67,7 +67,8 @@ enum StallReason { BpStall, // BS, bad speculation: Frontend is squashed IntStall, // F TrapStall, // F - FragStall, // F + FetchFragStall, // F + OtherFragStall, SquashStall, // BS FetchBufferInvalid, // Never used InstMisPred, // BS diff --git a/src/cpu/o3/fetch.cc b/src/cpu/o3/fetch.cc index 5015e19e99..414cd09905 100644 --- a/src/cpu/o3/fetch.cc +++ b/src/cpu/o3/fetch.cc @@ -1868,7 +1868,7 @@ Fetch::fetch(bool &status_change) stallReason[i] = StallReason::NoStall; else { if (numInst > 0) { - stallReason[i] = StallReason::FragStall; + stallReason[i] = StallReason::FetchFragStall; } else if (stall != StallReason::NoStall) { stallReason[i] = stall; } else if (stalls[tid].decode && fetchQueue[tid].size() >= fetchQueueSize) { diff --git a/src/cpu/o3/iew.cc b/src/cpu/o3/iew.cc index 5179fb9cec..a90bf563b0 100644 --- a/src/cpu/o3/iew.cc +++ b/src/cpu/o3/iew.cc @@ -275,7 +275,8 @@ IEW::IEWStats::IEWStats(CPU *cpu) {StallReason::BpStall, "BpStall"}, {StallReason::IntStall, "IntStall"}, {StallReason::TrapStall, "TrapStall"}, - {StallReason::FragStall, "FragStall"}, + {StallReason::FetchFragStall, "FetchFragStall"}, + {StallReason::OtherFragStall, "OtherFragStall"}, {StallReason::SquashStall, "SquashStall"}, {StallReason::FetchBufferInvalid, "FetchBufferInvalid"}, {StallReason::InstMisPred, "InstMisPred"}, @@ -1140,7 +1141,7 @@ IEW::classifyInstToDispQue(ThreadID tid) } else if (breakDispatch != StallReason::NoStall) { dispatchStalls.at(i) = breakDispatch; } else if (i >= dispatched) { - dispatchStalls.at(i) = StallReason::FragStall; + dispatchStalls.at(i) = StallReason::OtherFragStall; } } } diff --git a/src/cpu/o3/rename.cc b/src/cpu/o3/rename.cc index f69285536f..165dfaa1f7 100644 --- a/src/cpu/o3/rename.cc +++ b/src/cpu/o3/rename.cc @@ -834,7 +834,7 @@ Rename::renameInsts(ThreadID tid) } else if (breakRename != StallReason::NoStall) { renameStalls.at(i) = breakRename; } else if (instsAvailable < renameWidth && instsAvailable > 0) { - renameStalls.at(i) = StallReason::FragStall; + renameStalls.at(i) = StallReason::OtherFragStall; } else if (instsAvailable == 0) { renameStalls.at(i) = stall; }else {