summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Binkert <nate@binkert.org>2009-01-21 14:56:18 -0800
committerNathan Binkert <nate@binkert.org>2009-01-21 14:56:18 -0800
commit10fc45da27f0c18c1a8b90af3d76127fc4467391 (patch)
tree47cc264e2316fe21adeb043a77cef792a43993d8
parentdbac448b088eea12d8b20400c7a770e57e28d771 (diff)
downloadgem5-10fc45da27f0c18c1a8b90af3d76127fc4467391.tar.xz
o3cpu: give a name to the activity recorder for better tracing
-rw-r--r--src/cpu/activity.cc13
-rw-r--r--src/cpu/activity.hh10
-rw-r--r--src/cpu/o3/cpu.cc2
3 files changed, 17 insertions, 8 deletions
diff --git a/src/cpu/activity.cc b/src/cpu/activity.cc
index 15e0556ad..a2a34edf9 100644
--- a/src/cpu/activity.cc
+++ b/src/cpu/activity.cc
@@ -28,15 +28,18 @@
* Authors: Kevin Lim
*/
-#include <cstring>
+#include <string>
#include "base/timebuf.hh"
#include "cpu/activity.hh"
-ActivityRecorder::ActivityRecorder(int num_stages, int longest_latency,
- int activity)
- : activityBuffer(longest_latency, 0), longestLatency(longest_latency),
- activityCount(activity), numStages(num_stages)
+using namespace std;
+
+ActivityRecorder::ActivityRecorder(const string &name, int num_stages,
+ int longest_latency, int activity)
+ : _name(name), activityBuffer(longest_latency, 0),
+ longestLatency(longest_latency), activityCount(activity),
+ numStages(num_stages)
{
stageActive = new bool[numStages];
std::memset(stageActive, 0, numStages);
diff --git a/src/cpu/activity.hh b/src/cpu/activity.hh
index e99927339..d75ff150e 100644
--- a/src/cpu/activity.hh
+++ b/src/cpu/activity.hh
@@ -49,9 +49,11 @@
* idle. If count is zero, then the CPU can safely idle as it has no
* more outstanding work to do.
*/
-class ActivityRecorder {
+class ActivityRecorder
+{
public:
- ActivityRecorder(int num_stages, int longest_latency, int count);
+ ActivityRecorder(const std::string &name, int num_stages,
+ int longest_latency, int count);
/** Records that there is activity this cycle. */
void activity();
@@ -92,6 +94,10 @@ class ActivityRecorder {
void validate();
private:
+ // provide name() for DPRINTF.
+ std::string _name;
+ const std::string &name() { return _name; }
+
/** Time buffer that tracks if any cycles has active communication
* in them. It should be as long as the longest communication
* latency in the system. Each time any time buffer is written,
diff --git a/src/cpu/o3/cpu.cc b/src/cpu/o3/cpu.cc
index 7320d5638..f567c1868 100644
--- a/src/cpu/o3/cpu.cc
+++ b/src/cpu/o3/cpu.cc
@@ -192,7 +192,7 @@ FullO3CPU<Impl>::FullO3CPU(DerivO3CPUParams *params)
decodeQueue(params->backComSize, params->forwardComSize),
renameQueue(params->backComSize, params->forwardComSize),
iewQueue(params->backComSize, params->forwardComSize),
- activityRec(NumStages,
+ activityRec(name(), NumStages,
params->backComSize + params->forwardComSize,
params->activity),