elastic_trace.hh (11247:76f75db08e09) elastic_trace.hh (11252:18bb597fc40c)
1/*
2 * Copyright (c) 2013 - 2015 ARM Limited
3 * All rights reserved
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software

--- 78 unchanged lines hidden (view full) ---

87 */
88class ElasticTrace : public ProbeListenerObject
89{
90
91 public:
92 typedef typename O3CPUImpl::DynInstPtr DynInstPtr;
93 typedef typename std::pair<InstSeqNum, PhysRegIndex> SeqNumRegPair;
94
1/*
2 * Copyright (c) 2013 - 2015 ARM Limited
3 * All rights reserved
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software

--- 78 unchanged lines hidden (view full) ---

87 */
88class ElasticTrace : public ProbeListenerObject
89{
90
91 public:
92 typedef typename O3CPUImpl::DynInstPtr DynInstPtr;
93 typedef typename std::pair<InstSeqNum, PhysRegIndex> SeqNumRegPair;
94
95 /** Trace record types corresponding to instruction node types */
96 typedef ProtoMessage::InstDepRecord::RecordType RecordType;
97 typedef ProtoMessage::InstDepRecord Record;
98
95 /** Constructor */
96 ElasticTrace(const ElasticTraceParams *params);
97
98 /**
99 * Register the probe listeners that is the methods called on a probe point
100 * notify() call.
101 */
102 void regProbeListeners();

--- 152 unchanged lines hidden (view full) ---

255 struct TraceInfo
256 {
257 /**
258 * @ingroup TraceInfo
259 * @{
260 */
261 /* Instruction sequence number. */
262 InstSeqNum instNum;
99 /** Constructor */
100 ElasticTrace(const ElasticTraceParams *params);
101
102 /**
103 * Register the probe listeners that is the methods called on a probe point
104 * notify() call.
105 */
106 void regProbeListeners();

--- 152 unchanged lines hidden (view full) ---

259 struct TraceInfo
260 {
261 /**
262 * @ingroup TraceInfo
263 * @{
264 */
265 /* Instruction sequence number. */
266 InstSeqNum instNum;
267 /** The type of trace record for the instruction node */
268 RecordType type;
263 /* Tick when instruction was in execute stage. */
264 Tick executeTick;
265 /* Tick when instruction was marked ready and sent to commit stage. */
266 Tick toCommitTick;
267 /* Tick when instruction was committed. */
268 Tick commitTick;
269 /* Tick when instruction was in execute stage. */
270 Tick executeTick;
271 /* Tick when instruction was marked ready and sent to commit stage. */
272 Tick toCommitTick;
273 /* Tick when instruction was committed. */
274 Tick commitTick;
269 /* If instruction was a load, a store, committed. */
270 bool load, store, commit;
275 /* If instruction was committed, as against squashed. */
276 bool commit;
271 /* List of order dependencies. */
272 std::list<InstSeqNum> robDepList;
273 /* List of physical register RAW dependencies. */
274 std::list<InstSeqNum> physRegDepList;
275 /**
276 * Computational delay after the last dependent inst. completed.
277 * A value of -1 which means instruction has no dependencies.
278 */
279 int64_t compDelay;
280 /* Number of dependents. */
281 uint32_t numDepts;
282 /* The instruction PC for a load, store or non load/store. */
283 Addr pc;
284 /* Request flags in case of a load/store instruction */
285 Request::FlagsType reqFlags;
286 /* Request address in case of a load/store instruction */
287 Addr addr;
288 /* Request size in case of a load/store instruction */
289 unsigned size;
277 /* List of order dependencies. */
278 std::list<InstSeqNum> robDepList;
279 /* List of physical register RAW dependencies. */
280 std::list<InstSeqNum> physRegDepList;
281 /**
282 * Computational delay after the last dependent inst. completed.
283 * A value of -1 which means instruction has no dependencies.
284 */
285 int64_t compDelay;
286 /* Number of dependents. */
287 uint32_t numDepts;
288 /* The instruction PC for a load, store or non load/store. */
289 Addr pc;
290 /* Request flags in case of a load/store instruction */
291 Request::FlagsType reqFlags;
292 /* Request address in case of a load/store instruction */
293 Addr addr;
294 /* Request size in case of a load/store instruction */
295 unsigned size;
296 /** Default Constructor */
297 TraceInfo()
298 : type(Record::INVALID)
299 { }
300 /** Is the record a load */
301 bool isLoad() const { return (type == Record::LOAD); }
302 /** Is the record a store */
303 bool isStore() const { return (type == Record::STORE); }
304 /** Is the record a fetch triggering an Icache request */
305 bool isComp() const { return (type == Record::COMP); }
306 /** Return string specifying the type of the node */
307 const std::string& typeToStr() const;
290 /** @} */
291
292 /**
293 * Get the execute tick of the instruction.
294 *
295 * @return Tick when instruction was executed
296 */
297 Tick getExecuteTick() const;

--- 240 unchanged lines hidden ---
308 /** @} */
309
310 /**
311 * Get the execute tick of the instruction.
312 *
313 * @return Tick when instruction was executed
314 */
315 Tick getExecuteTick() const;

--- 240 unchanged lines hidden ---