From 1cf1867ffa0c9498b04c8b961fcc73d6c45a85a7 Mon Sep 17 00:00:00 2001 From: Melissa Jost Date: Mon, 20 Mar 2023 00:17:38 -0700 Subject: [PATCH] cpu: Remove duplicated commit stats This removes committedInstType and comittedControl from minor CPU, stat branches from O3 commit stage, and O3 commit stats floating, integer, loads, memRefs, and vectorInstructions. Change-Id: I57abea0881eaaea52da3f365078d6b0e2ea1bfeb Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/69106 Tested-by: kokoro Maintainer: Bobby Bruce Reviewed-by: Bobby Bruce --- src/cpu/minor/execute.cc | 36 ----------------------- src/cpu/minor/stats.cc | 16 +---------- src/cpu/minor/stats.hh | 6 ---- src/cpu/o3/commit.cc | 52 ---------------------------------- src/cpu/o3/commit.hh | 12 -------- src/cpu/simple/base.cc | 17 ----------- src/cpu/simple/exec_context.hh | 39 ------------------------- 7 files changed, 1 insertion(+), 177 deletions(-) diff --git a/src/cpu/minor/execute.cc b/src/cpu/minor/execute.cc index 0d704c7135..a2f92683c4 100644 --- a/src/cpu/minor/execute.cc +++ b/src/cpu/minor/execute.cc @@ -882,46 +882,10 @@ Execute::doInstCommitAccounting(MinorDynInstPtr inst) thread->numOp++; thread->threadStats.numOps++; cpu.stats.numOps++; - // update both old and new stats cpu.commitStats[inst->id.threadId]->numOps++; cpu.baseStats.numOps++; cpu.commitStats[inst->id.threadId] ->committedInstType[inst->staticInst->opClass()]++; - cpu.stats.committedInstType[inst->id.threadId] - [inst->staticInst->opClass()]++; - - /** Add a count for every control instruction */ - if (inst->staticInst->isControl()) { - if (inst->staticInst->isReturn()) { - cpu.stats.committedControl[inst->id.threadId] - [gem5::StaticInstFlags::Flags::IsReturn]++; - } - if (inst->staticInst->isCall()) { - cpu.stats.committedControl[inst->id.threadId] - [gem5::StaticInstFlags::Flags::IsCall]++; - } - if (inst->staticInst->isDirectCtrl()) { - cpu.stats.committedControl[inst->id.threadId] - [gem5::StaticInstFlags::Flags::IsDirectControl]++; - } - if (inst->staticInst->isIndirectCtrl()) { - cpu.stats.committedControl[inst->id.threadId] - [gem5::StaticInstFlags::Flags::IsIndirectControl]++; - } - if (inst->staticInst->isCondCtrl()) { - cpu.stats.committedControl[inst->id.threadId] - [gem5::StaticInstFlags::Flags::IsCondControl]++; - } - if (inst->staticInst->isUncondCtrl()) { - cpu.stats.committedControl[inst->id.threadId] - [gem5::StaticInstFlags::Flags::IsUncondControl]++; - - } - cpu.stats.committedControl[inst->id.threadId] - [gem5::StaticInstFlags::Flags::IsControl]++; - } - - /* Set the CP SeqNum to the numOps commit number */ if (inst->traceData) diff --git a/src/cpu/minor/stats.cc b/src/cpu/minor/stats.cc index e9ca562c16..512a67bf36 100644 --- a/src/cpu/minor/stats.cc +++ b/src/cpu/minor/stats.cc @@ -60,11 +60,7 @@ MinorStats::MinorStats(BaseCPU *base_cpu) "CPI: cycles per instruction"), ADD_STAT(ipc, statistics::units::Rate< statistics::units::Count, statistics::units::Cycle>::get(), - "IPC: instructions per cycle"), - ADD_STAT(committedInstType, statistics::units::Count::get(), - "Class of committed instruction"), - ADD_STAT(committedControl, statistics::units::Count::get(), - "Class of control type instructions committed") + "IPC: instructions per cycle") { quiesceCycles.prereq(quiesceCycles); @@ -74,16 +70,6 @@ MinorStats::MinorStats(BaseCPU *base_cpu) ipc.precision(6); ipc = numInsts / base_cpu->baseStats.numCycles; - - committedInstType - .init(base_cpu->numThreads, enums::Num_OpClass) - .flags(statistics::total | statistics::pdf | statistics::dist); - committedInstType.ysubnames(enums::OpClassStrings); - - committedControl - .init(base_cpu->numThreads, StaticInstFlags::Flags::Num_Flags) - .flags(statistics::nozero); - committedControl.ysubnames(StaticInstFlags::FlagsStrings); } } // namespace minor diff --git a/src/cpu/minor/stats.hh b/src/cpu/minor/stats.hh index 524d20f85d..4ab8743c77 100644 --- a/src/cpu/minor/stats.hh +++ b/src/cpu/minor/stats.hh @@ -75,12 +75,6 @@ struct MinorStats : public statistics::Group statistics::Formula cpi; statistics::Formula ipc; - /** Number of instructions by type (OpClass) */ - statistics::Vector2d committedInstType; - - /** Number of branches commited */ - statistics::Vector2d committedControl; - }; } // namespace minor diff --git a/src/cpu/o3/commit.cc b/src/cpu/o3/commit.cc index 82ecc0140e..5a0a6b21e3 100644 --- a/src/cpu/o3/commit.cc +++ b/src/cpu/o3/commit.cc @@ -160,21 +160,10 @@ Commit::CommitStats::CommitStats(CPU *cpu, Commit *commit) "Number of instructions committed"), ADD_STAT(opsCommitted, statistics::units::Count::get(), "Number of ops (including micro ops) committed"), - ADD_STAT(memRefs, statistics::units::Count::get(), - "Number of memory references committed"), - ADD_STAT(loads, statistics::units::Count::get(), "Number of loads committed"), ADD_STAT(amos, statistics::units::Count::get(), "Number of atomic instructions committed"), ADD_STAT(membars, statistics::units::Count::get(), "Number of memory barriers committed"), - ADD_STAT(branches, statistics::units::Count::get(), - "Number of branches committed"), - ADD_STAT(vectorInstructions, statistics::units::Count::get(), - "Number of committed Vector instructions."), - ADD_STAT(floating, statistics::units::Count::get(), - "Number of committed floating point instructions."), - ADD_STAT(integer, statistics::units::Count::get(), - "Number of committed integer instructions."), ADD_STAT(functionCalls, statistics::units::Count::get(), "Number of function calls committed."), ADD_STAT(committedInstType, statistics::units::Count::get(), @@ -200,14 +189,6 @@ Commit::CommitStats::CommitStats(CPU *cpu, Commit *commit) .init(cpu->numThreads) .flags(total); - memRefs - .init(cpu->numThreads) - .flags(total); - - loads - .init(cpu->numThreads) - .flags(total); - amos .init(cpu->numThreads) .flags(total); @@ -216,22 +197,6 @@ Commit::CommitStats::CommitStats(CPU *cpu, Commit *commit) .init(cpu->numThreads) .flags(total); - branches - .init(cpu->numThreads) - .flags(total); - - vectorInstructions - .init(cpu->numThreads) - .flags(total); - - floating - .init(cpu->numThreads) - .flags(total); - - integer - .init(cpu->numThreads) - .flags(total); - functionCalls .init(commit->numThreads) .flags(total); @@ -1405,29 +1370,18 @@ Commit::updateComInstStats(const DynInstPtr &inst) // // Control Instructions // - // update both old and new stats cpu->commitStats[tid]->updateComCtrlStats(inst->staticInst); - if (inst->isControl()) - stats.branches[tid]++; // // Memory references // if (inst->isMemRef()) { - // update both old and new stats - stats.memRefs[tid]++; cpu->commitStats[tid]->numMemRefs++; if (inst->isLoad()) { - // update both old and new stats - stats.loads[tid]++; cpu->commitStats[tid]->numLoadInsts++; } - if (inst->isAtomic()) { - stats.amos[tid]++; - } - if (inst->isStore()) { cpu->commitStats[tid]->numStoreInsts++; } @@ -1439,22 +1393,16 @@ Commit::updateComInstStats(const DynInstPtr &inst) // Integer Instruction if (inst->isInteger()) { - // update both old and new stats cpu->commitStats[tid]->numIntInsts++; - stats.integer[tid]++; } // Floating Point Instruction if (inst->isFloating()) { - // update both old and new stats cpu->commitStats[tid]->numFpInsts++; - stats.floating[tid]++; } // Vector Instruction if (inst->isVector()) { - // update both old and new stats cpu->commitStats[tid]->numVecInsts++; - stats.vectorInstructions[tid]++; } // Function Calls diff --git a/src/cpu/o3/commit.hh b/src/cpu/o3/commit.hh index cf4eaf5d92..6591360197 100644 --- a/src/cpu/o3/commit.hh +++ b/src/cpu/o3/commit.hh @@ -483,22 +483,10 @@ class Commit statistics::Vector instsCommitted; /** Total number of ops (including micro ops) committed. */ statistics::Vector opsCommitted; - /** Stat for the total number of committed memory references. */ - statistics::Vector memRefs; - /** Stat for the total number of committed loads. */ - statistics::Vector loads; /** Stat for the total number of committed atomics. */ statistics::Vector amos; /** Total number of committed memory barriers. */ statistics::Vector membars; - /** Total number of committed branches. */ - statistics::Vector branches; - /** Total number of vector instructions */ - statistics::Vector vectorInstructions; - /** Total number of floating point instructions */ - statistics::Vector floating; - /** Total number of integer instructions */ - statistics::Vector integer; /** Total number of function calls */ statistics::Vector functionCalls; /** Committed instructions by instruction type (OpClass) */ diff --git a/src/cpu/simple/base.cc b/src/cpu/simple/base.cc index 4f2665401f..eeb927ffed 100644 --- a/src/cpu/simple/base.cc +++ b/src/cpu/simple/base.cc @@ -437,29 +437,23 @@ BaseSimpleCPU::postExecute() /* Power model statistics */ //integer alu accesses if (curStaticInst->isInteger()){ - // update both old and new stats executeStats[t_info.thread->threadId()]->numIntAluAccesses++; commitStats[t_info.thread->threadId()]->numIntInsts++; t_info.execContextStats.numIntAluAccesses++; - t_info.execContextStats.numIntInsts++; } //float alu accesses if (curStaticInst->isFloating()){ - // update both old and new stats executeStats[t_info.thread->threadId()]->numFpAluAccesses++; commitStats[t_info.thread->threadId()]->numFpInsts++; t_info.execContextStats.numFpAluAccesses++; - t_info.execContextStats.numFpInsts++; } //vector alu accesses if (curStaticInst->isVector()){ - // update both old and new stats executeStats[t_info.thread->threadId()]->numVecAluAccesses++; commitStats[t_info.thread->threadId()]->numVecInsts++; t_info.execContextStats.numVecAluAccesses++; - t_info.execContextStats.numVecInsts++; } //Matrix alu accesses @@ -473,30 +467,19 @@ BaseSimpleCPU::postExecute() t_info.execContextStats.numCallsReturns++; } - //the number of branch predictions that will be made - if (curStaticInst->isCondCtrl()){ - t_info.execContextStats.numCondCtrlInsts++; - } - //result bus acceses if (curStaticInst->isLoad()){ - // update both old and new stats commitStats[t_info.thread->threadId()]->numLoadInsts++; - t_info.execContextStats.numLoadInsts++; } if (curStaticInst->isStore() || curStaticInst->isAtomic()){ - // update both old and new stats commitStats[t_info.thread->threadId()]->numStoreInsts++; - t_info.execContextStats.numStoreInsts++; } /* End power model statistics */ - // update both old and new stats commitStats[t_info.thread->threadId()] ->committedInstType[curStaticInst->opClass()]++; commitStats[t_info.thread->threadId()]->updateComCtrlStats(curStaticInst); - t_info.execContextStats.statExecutedInstType[curStaticInst->opClass()]++; /* increment the committed numInsts and numOps stats */ countCommitInst(); diff --git a/src/cpu/simple/exec_context.hh b/src/cpu/simple/exec_context.hh index 3b6593da9d..78952cbe75 100644 --- a/src/cpu/simple/exec_context.hh +++ b/src/cpu/simple/exec_context.hh @@ -100,14 +100,6 @@ class SimpleExecContext : public ExecContext "Number of matrix alu accesses"), ADD_STAT(numCallsReturns, statistics::units::Count::get(), "Number of times a function call or return occured"), - ADD_STAT(numCondCtrlInsts, statistics::units::Count::get(), - "Number of instructions that are conditional controls"), - ADD_STAT(numIntInsts, statistics::units::Count::get(), - "Number of integer instructions"), - ADD_STAT(numFpInsts, statistics::units::Count::get(), - "Number of float instructions"), - ADD_STAT(numVecInsts, statistics::units::Count::get(), - "Number of vector instructions"), ADD_STAT(numMatInsts, statistics::units::Count::get(), "Number of matrix instructions"), ADD_STAT(numIntRegReads, statistics::units::Count::get(), @@ -136,10 +128,6 @@ class SimpleExecContext : public ExecContext "Number of times the Misc registers were written"), ADD_STAT(numMemRefs, statistics::units::Count::get(), "Number of memory refs"), - ADD_STAT(numLoadInsts, statistics::units::Count::get(), - "Number of load instructions"), - ADD_STAT(numStoreInsts, statistics::units::Count::get(), - "Number of store instructions"), ADD_STAT(numIdleCycles, statistics::units::Cycle::get(), "Number of idle cycles"), ADD_STAT(numBusyCycles, statistics::units::Cycle::get(), @@ -156,8 +144,6 @@ class SimpleExecContext : public ExecContext "Number of branches predicted as taken"), ADD_STAT(numBranchMispred, statistics::units::Count::get(), "Number of branch mispredictions"), - ADD_STAT(statExecutedInstType, statistics::units::Count::get(), - "Class of executed instruction."), numRegReads{ &(cpu->executeStats[thread->threadId()]->numIntRegReads), &(cpu->executeStats[thread->threadId()]->numFpRegReads), @@ -190,14 +176,6 @@ class SimpleExecContext : public ExecContext dcacheStallCycles .prereq(dcacheStallCycles); - statExecutedInstType - .init(enums::Num_OpClass) - .flags(statistics::total | statistics::pdf | statistics::dist); - - for (unsigned i = 0; i < Num_OpClasses; ++i) { - statExecutedInstType.subname(i, enums::OpClassStrings[i]); - } - idleFraction = statistics::constant(1.0) - notIdleFraction; numIdleCycles = idleFraction * cpu->baseStats.numCycles; numBusyCycles = notIdleFraction * cpu->baseStats.numCycles; @@ -228,18 +206,6 @@ class SimpleExecContext : public ExecContext // Number of function calls/returns statistics::Scalar numCallsReturns; - // Conditional control instructions; - statistics::Scalar numCondCtrlInsts; - - // Number of int instructions - statistics::Scalar numIntInsts; - - // Number of float instructions - statistics::Scalar numFpInsts; - - // Number of vector instructions - statistics::Scalar numVecInsts; - // Number of matrix instructions statistics::Scalar numMatInsts; @@ -273,8 +239,6 @@ class SimpleExecContext : public ExecContext // Number of simulated memory references statistics::Scalar numMemRefs; - statistics::Scalar numLoadInsts; - statistics::Scalar numStoreInsts; // Number of idle cycles statistics::Formula numIdleCycles; @@ -299,9 +263,6 @@ class SimpleExecContext : public ExecContext statistics::Scalar numBranchMispred; /// @} - // Instruction mix histogram by OpClass - statistics::Vector statExecutedInstType; - std::array numRegReads; std::array numRegWrites;