summaryrefslogtreecommitdiff
path: root/src/cpu/inorder/resources/mult_div_unit.cc
diff options
context:
space:
mode:
authorKorey Sewell <ksewell@umich.edu>2010-06-23 18:18:20 -0400
committerKorey Sewell <ksewell@umich.edu>2010-06-23 18:18:20 -0400
commit9f0d8f252c2de0b9ac5654b2c35e913831eba756 (patch)
tree301422de6f4268e44780520b966450578f98193b /src/cpu/inorder/resources/mult_div_unit.cc
parent39ac4dce04ccf2d83a29fcd7fc698f607bf720d4 (diff)
downloadgem5-9f0d8f252c2de0b9ac5654b2c35e913831eba756.tar.xz
inorder-stats: add instruction type stats
also, remove inst-req stats as default.good for debugging but in terms of pure processor stats they aren't useful
Diffstat (limited to 'src/cpu/inorder/resources/mult_div_unit.cc')
-rw-r--r--src/cpu/inorder/resources/mult_div_unit.cc21
1 files changed, 12 insertions, 9 deletions
diff --git a/src/cpu/inorder/resources/mult_div_unit.cc b/src/cpu/inorder/resources/mult_div_unit.cc
index e7bd6750f..90925e66b 100644
--- a/src/cpu/inorder/resources/mult_div_unit.cc
+++ b/src/cpu/inorder/resources/mult_div_unit.cc
@@ -53,13 +53,13 @@ MultDivUnit::MultDivUnit(string res_name, int res_id, int res_width,
void
MultDivUnit::regStats()
{
- multInstReqsProcessed
- .name(name() + ".multInstReqsProcessed")
- .desc("Number of Multiply Requests Processed.");
+ multiplies
+ .name(name() + ".multiplies")
+ .desc("Number of Multipy Operations Executed");
- divInstReqsProcessed
- .name(name() + ".divInstReqsProcessed")
- .desc("Number of Divide Requests Processed.");
+ divides
+ .name(name() + ".divides")
+ .desc("Number of Divide Operations Executed");
Resource::regStats();
}
@@ -209,7 +209,6 @@ MultDivUnit::execute(int slot_num)
if (inst->opClass() == IntMultOp) {
scheduleEvent(slot_num, multLatency);
- multInstReqsProcessed++;
} else if (inst->opClass() == IntDivOp) {
int op_size = getDivOpSize(inst);
@@ -233,8 +232,6 @@ MultDivUnit::execute(int slot_num)
}
lastDivSize = op_size;
-
- divInstReqsProcessed++;
}
// Allow to pass through to next stage while
@@ -283,6 +280,12 @@ MultDivUnit::exeMulDiv(int slot_num)
fault = inst->execute();
+ if (inst->opClass() == IntMultOp) {
+ multiplies++;
+ } else if (inst->opClass() == IntDivOp) {
+ divides++;
+ }
+
if (fault == NoFault) {
inst->setExecuted();
mult_div_req->setCompleted();