Andreas Sandberg has uploaded this change for review. (
https://gem5-review.googlesource.com/2321
Change subject: cpu: Print progress messages in Trace CPU
......................................................................
cpu: Print progress messages in Trace CPU
This change adds the ability to print a message at intervals
of committed instruction count to indicate progress in the
trace replay.
Change-Id: I8363502354c42bfc52936d2627986598b63a5797
Reviewed-by: Rekai Gonzalez Alberquilla <[email protected]>
Signed-off-by: Andreas Sandberg <[email protected]>
---
M src/cpu/trace/TraceCPU.py
M src/cpu/trace/trace_cpu.cc
M src/cpu/trace/trace_cpu.hh
3 files changed, 36 insertions(+), 4 deletions(-)
diff --git a/src/cpu/trace/TraceCPU.py b/src/cpu/trace/TraceCPU.py
index 3ec5795..e108b1a 100644
--- a/src/cpu/trace/TraceCPU.py
+++ b/src/cpu/trace/TraceCPU.py
@@ -80,3 +80,10 @@
# false by default
enableEarlyExit = Param.Bool(False, "Exit when any one Trace CPU "\
"completes execution")
+
+ # If progress msg interval is set to a non-zero value, it is treated as
+ # the interval of committed instructions at which an info message is
+ # printed.
+ progressMsgInterval = Param.Unsigned(0, "Interval of committed "\
+ "instructions at which to print
a"\
+ " progress msg")
diff --git a/src/cpu/trace/trace_cpu.cc b/src/cpu/trace/trace_cpu.cc
index 44da7df..7b59b49 100644
--- a/src/cpu/trace/trace_cpu.cc
+++ b/src/cpu/trace/trace_cpu.cc
@@ -62,13 +62,15 @@
oneTraceComplete(false),
traceOffset(0),
execCompleteEvent(nullptr),
- enableEarlyExit(params->enableEarlyExit)
+ enableEarlyExit(params->enableEarlyExit),
+ progressMsgInterval(params->progressMsgInterval),
+ progressMsgThreshold(params->progressMsgInterval)
{
// Increment static counter for number of Trace CPUs.
++TraceCPU::numTraceCPUs;
- // Check that the python parameters for sizes of ROB, store buffer and
load
- // buffer do not overflow the corresponding C++ variables.
+ // Check that the python parameters for sizes of ROB, store buffer and
+ // load buffer do not overflow the corresponding C++ variables.
fatal_if(params->sizeROB > UINT16_MAX, "ROB size set to %d exceeds
the "
"max. value of %d.\n", params->sizeROB, UINT16_MAX);
fatal_if(params->sizeStoreBuffer > UINT16_MAX, "ROB size set to %d "
@@ -91,6 +93,16 @@
}
void
+TraceCPU::updateNumOps(uint64_t rob_num)
+{
+ numOps = rob_num;
+ if (progressMsgInterval != 0 && numOps.value() >=
progressMsgThreshold) {
+ inform("%s: %i insts committed\n", name(), progressMsgThreshold);
+ progressMsgThreshold += progressMsgInterval;
+ }
+}
+
+void
TraceCPU::takeOverFrom(BaseCPU *oldCPU)
{
// Unbind the ports of the old CPU and bind the ports of the TraceCPU.
diff --git a/src/cpu/trace/trace_cpu.hh b/src/cpu/trace/trace_cpu.hh
index 846a3e7..07c739c 100644
--- a/src/cpu/trace/trace_cpu.hh
+++ b/src/cpu/trace/trace_cpu.hh
@@ -177,7 +177,7 @@
* Set the no. of ops when elastic data generator completes executing a
* node.
*/
- void updateNumOps(uint64_t rob_num) { numOps = rob_num; }
+ void updateNumOps(uint64_t rob_num);
/* Pure virtual function in BaseCPU. Do nothing. */
void wakeup(ThreadID tid = 0)
@@ -1122,6 +1122,19 @@
*/
const bool enableEarlyExit;
+ /**
+ * Interval of committed instructions specified by the user at which a
+ * progress info message is printed
+ */
+ const uint64_t progressMsgInterval;
+
+ /*
+ * The progress msg threshold is kept updated to the next multiple of
the
+ * progress msg interval. As soon as the threshold is reached, an info
+ * message is printed.
+ */
+ uint64_t progressMsgThreshold;
+
Stats::Scalar numSchedDcacheEvent;
Stats::Scalar numSchedIcacheEvent;
--
To view, visit https://gem5-review.googlesource.com/2321
To unsubscribe, visit https://gem5-review.googlesource.com/settings
Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I8363502354c42bfc52936d2627986598b63a5797
Gerrit-Change-Number: 2321
Gerrit-PatchSet: 1
Gerrit-Owner: Andreas Sandberg <[email protected]>
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev