diff options
author | Korey Sewell <ksewell@umich.edu> | 2010-06-23 18:18:20 -0400 |
---|---|---|
committer | Korey Sewell <ksewell@umich.edu> | 2010-06-23 18:18:20 -0400 |
commit | 9f0d8f252c2de0b9ac5654b2c35e913831eba756 (patch) | |
tree | 301422de6f4268e44780520b966450578f98193b /src/cpu/inorder/resources/mult_div_unit.cc | |
parent | 39ac4dce04ccf2d83a29fcd7fc698f607bf720d4 (diff) | |
download | gem5-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.cc | 21 |
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(); |