gem5  v20.1.0.0
Profiler.cc
Go to the documentation of this file.
1 /*
2  * Copyright (c) 1999-2013 Mark D. Hill and David A. Wood
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are
7  * met: redistributions of source code must retain the above copyright
8  * notice, this list of conditions and the following disclaimer;
9  * redistributions in binary form must reproduce the above copyright
10  * notice, this list of conditions and the following disclaimer in the
11  * documentation and/or other materials provided with the distribution;
12  * neither the name of the copyright holders nor the names of its
13  * contributors may be used to endorse or promote products derived from
14  * this software without specific prior written permission.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27  */
28 
29 /*
30  This file has been modified by Kevin Moore and Dan Nussbaum of the
31  Scalable Systems Research Group at Sun Microsystems Laboratories
32  (http://research.sun.com/scalable/) to support the Adaptive
33  Transactional Memory Test Platform (ATMTP).
34 
35  Please send email to atmtp-interest@sun.com with feedback, questions, or
36  to request future announcements about ATMTP.
37 
38  ----------------------------------------------------------------------
39 
40  File modification date: 2008-02-23
41 
42  ----------------------------------------------------------------------
43 */
44 
46 
47 #include <sys/types.h>
48 #include <unistd.h>
49 
50 #include <algorithm>
51 #include <fstream>
52 
53 #include "base/stl_helpers.hh"
54 #include "base/str.hh"
57 #include "mem/ruby/protocol/MachineType.hh"
58 #include "mem/ruby/protocol/RubyRequest.hh"
59 
73 #ifdef BUILD_GPU
75 
76 #endif
77 
79 
80 using namespace std;
81 using m5::stl_helpers::operator<<;
82 
83 Profiler::Profiler(const RubySystemParams *p, RubySystem *rs)
84  : m_ruby_system(rs), m_hot_lines(p->hot_lines),
85  m_all_instructions(p->all_instructions),
86  m_num_vnets(p->number_of_virtual_networks)
87 {
88  m_address_profiler_ptr = new AddressProfiler(p->num_of_sequencers, this);
91 
92  if (m_all_instructions) {
93  m_inst_profiler_ptr = new AddressProfiler(p->num_of_sequencers, this);
96  }
97 }
98 
100 {
101 }
102 
103 void
104 Profiler::regStats(const std::string &pName)
105 {
106  if (!m_all_instructions) {
108  }
109 
110  if (m_all_instructions) {
112  }
113 
115  .init(10)
116  .name(pName + ".delayHist")
117  .desc("delay histogram for all message")
119 
120  for (int i = 0; i < m_num_vnets; i++) {
121  delayVCHistogram.push_back(new Stats::Histogram());
123  ->init(10)
124  .name(pName + csprintf(".delayVCHist.vnet_%i", i))
125  .desc(csprintf("delay histogram for vnet_%i", i))
127  }
128 
130  .init(10)
131  .name(pName + ".outstanding_req_hist_seqr")
132  .desc("")
134 
136  .init(10)
137  .name(pName + ".outstanding_req_hist_coalsr")
138  .desc("")
140 
142  .init(10)
143  .name(pName + ".latency_hist_seqr")
144  .desc("")
146 
148  .init(10)
149  .name(pName + ".latency_hist_coalsr")
150  .desc("")
152 
154  .init(10)
155  .name(pName + ".hit_latency_hist_seqr")
156  .desc("")
158 
160  .init(10)
161  .name(pName + ".miss_latency_hist_seqr")
162  .desc("")
164 
166  .init(10)
167  .name(pName + ".miss_latency_hist_coalsr")
168  .desc("")
170 
171  for (int i = 0; i < RubyRequestType_NUM; i++) {
172  m_typeLatencyHistSeqr.push_back(new Stats::Histogram());
174  ->init(10)
175  .name(pName + csprintf(".%s.latency_hist_seqr",
176  RubyRequestType(i)))
177  .desc("")
179 
180  m_typeLatencyHistCoalsr.push_back(new Stats::Histogram());
182  ->init(10)
183  .name(pName + csprintf(".%s.latency_hist_coalsr",
184  RubyRequestType(i)))
185  .desc("")
187 
190  ->init(10)
191  .name(pName + csprintf(".%s.hit_latency_hist_seqr",
192  RubyRequestType(i)))
193  .desc("")
195 
198  ->init(10)
199  .name(pName + csprintf(".%s.miss_latency_hist_seqr",
200  RubyRequestType(i)))
201  .desc("")
203 
206  ->init(10)
207  .name(pName + csprintf(".%s.miss_latency_hist_coalsr",
208  RubyRequestType(i)))
209  .desc("")
211  }
212 
213  for (int i = 0; i < MachineType_NUM; i++) {
216  ->init(10)
217  .name(pName + csprintf(".%s.hit_mach_latency_hist_seqr",
218  MachineType(i)))
219  .desc("")
221 
224  ->init(10)
225  .name(pName + csprintf(".%s.miss_mach_latency_hist_seqr",
226  MachineType(i)))
227  .desc("")
229 
232  ->init(10)
233  .name(pName + csprintf(".%s.miss_mach_latency_hist_coalsr",
234  MachineType(i)))
235  .desc("")
237 
240  ->init(10)
241  .name(pName + csprintf(
242  ".%s.miss_latency_hist_seqr.issue_to_initial_request",
243  MachineType(i)))
244  .desc("")
246 
249  ->init(10)
250  .name(pName + csprintf(
251  ".%s.miss_latency_hist_coalsr.issue_to_initial_request",
252  MachineType(i)))
253  .desc("")
255 
258  ->init(10)
259  .name(pName + csprintf(".%s.miss_latency_hist_seqr.initial_to_forward",
260  MachineType(i)))
261  .desc("")
263 
266  ->init(10)
267  .name(pName + csprintf(".%s.miss_latency_hist_coalsr.initial_to_forward",
268  MachineType(i)))
269  .desc("")
271 
274  ->init(10)
275  .name(pName + csprintf(
276  ".%s.miss_latency_hist_seqr.forward_to_first_response",
277  MachineType(i)))
278  .desc("")
280 
283  ->init(10)
284  .name(pName + csprintf(
285  ".%s.miss_latency_hist_coalsr.forward_to_first_response",
286  MachineType(i)))
287  .desc("")
289 
292  ->init(10)
293  .name(pName + csprintf(
294  ".%s.miss_latency_hist_seqr.first_response_to_completion",
295  MachineType(i)))
296  .desc("")
298 
301  ->init(10)
302  .name(pName + csprintf(
303  ".%s.miss_latency_hist_coalsr.first_response_to_completion",
304  MachineType(i)))
305  .desc("")
307 
309  .name(pName + csprintf(".%s.incomplete_times_seqr", MachineType(i)))
310  .desc("")
312  }
313 
314  for (int i = 0; i < RubyRequestType_NUM; i++) {
318 
319  for (int j = 0; j < MachineType_NUM; j++) {
322  ->init(10)
323  .name(pName + csprintf(".%s.%s.hit_type_mach_latency_hist_seqr",
324  RubyRequestType(i), MachineType(j)))
325  .desc("")
327 
330  ->init(10)
331  .name(pName + csprintf(".%s.%s.miss_type_mach_latency_hist_seqr",
332  RubyRequestType(i), MachineType(j)))
333  .desc("")
335 
338  ->init(10)
339  .name(pName + csprintf(".%s.%s.miss_type_mach_latency_hist_coalsr",
340  RubyRequestType(i), MachineType(j)))
341  .desc("")
343  }
344  }
345 }
346 
347 void
349 {
350  if (!m_all_instructions) {
352  }
353 
354  if (m_all_instructions) {
356  }
357 
358  for (uint32_t i = 0; i < MachineType_NUM; i++) {
359  for (map<uint32_t, AbstractController*>::iterator it =
361  it != m_ruby_system->m_abstract_controls[i].end(); ++it) {
362 
363  AbstractController *ctr = (*it).second;
365 
366  for (uint32_t i = 0; i < m_num_vnets; i++) {
367  delayVCHistogram[i]->add(ctr->getDelayVCHist(i));
368  }
369  }
370  }
371 
372  for (uint32_t i = 0; i < MachineType_NUM; i++) {
373  for (map<uint32_t, AbstractController*>::iterator it =
375  it != m_ruby_system->m_abstract_controls[i].end(); ++it) {
376 
377  AbstractController *ctr = (*it).second;
378  Sequencer *seq = ctr->getCPUSequencer();
379  if (seq != NULL) {
381  }
382 #ifdef BUILD_GPU
383  GPUCoalescer *coal = ctr->getGPUCoalescer();
384  if (coal != NULL) {
386  }
387 #endif
388  }
389  }
390 
391  for (uint32_t i = 0; i < MachineType_NUM; i++) {
392  for (map<uint32_t, AbstractController*>::iterator it =
394  it != m_ruby_system->m_abstract_controls[i].end(); ++it) {
395 
396  AbstractController *ctr = (*it).second;
397  Sequencer *seq = ctr->getCPUSequencer();
398  if (seq != NULL) {
399  // add all the latencies
403 
404  // add the per request type latencies
405  for (uint32_t j = 0; j < RubyRequestType_NUM; ++j) {
407  ->add(seq->getTypeLatencyHist(j));
409  ->add(seq->getHitTypeLatencyHist(j));
411  ->add(seq->getMissTypeLatencyHist(j));
412  }
413 
414  // add the per machine type miss latencies
415  for (uint32_t j = 0; j < MachineType_NUM; ++j) {
417  ->add(seq->getHitMachLatencyHist(j));
419  ->add(seq->getMissMachLatencyHist(j));
420 
422  seq->getIssueToInitialDelayHist(MachineType(j)));
423 
425  seq->getInitialToForwardDelayHist(MachineType(j)));
427  getForwardRequestToFirstResponseHist(MachineType(j)));
428 
430  getFirstResponseToCompletionDelayHist(
431  MachineType(j)));
433  seq->getIncompleteTimes(MachineType(j));
434  }
435 
436  // add the per (request, machine) type miss latencies
437  for (uint32_t j = 0; j < RubyRequestType_NUM; j++) {
438  for (uint32_t k = 0; k < MachineType_NUM; k++) {
443  }
444  }
445  }
446 #ifdef BUILD_GPU
447  GPUCoalescer *coal = ctr->getGPUCoalescer();
448  if (coal != NULL) {
449  // add all the latencies
452 
453  // add the per request type latencies
454  for (uint32_t j = 0; j < RubyRequestType_NUM; ++j) {
456  ->add(coal->getTypeLatencyHist(j));
458  ->add(coal->getMissTypeLatencyHist(j));
459  }
460 
461  // add the per machine type miss latencies
462  for (uint32_t j = 0; j < MachineType_NUM; ++j) {
464  ->add(coal->getMissMachLatencyHist(j));
465 
467  coal->getIssueToInitialDelayHist(MachineType(j)));
468 
470  coal->getInitialToForwardDelayHist(MachineType(j)));
472  getForwardRequestToFirstResponseHist(MachineType(j)));
473 
475  getFirstResponseToCompletionDelayHist(
476  MachineType(j)));
477  }
478 
479  // add the per (request, machine) type miss latencies
480  for (uint32_t j = 0; j < RubyRequestType_NUM; j++) {
481  for (uint32_t k = 0; k < MachineType_NUM; k++) {
484  }
485  }
486  }
487 #endif
488  }
489  }
490 }
491 
492 void
494 {
495  if (msg.getType() != RubyRequestType_IFETCH) {
496  // Note: The following line should be commented out if you
497  // want to use the special profiling that is part of the GS320
498  // protocol
499 
500  // NOTE: Unless PROFILE_HOT_LINES is enabled, nothing will be
501  // profiled by the AddressProfiler
503  addTraceSample(msg.getLineAddress(), msg.getProgramCounter(),
504  msg.getType(), msg.getAccessMode(), id, false);
505  }
506 }
Sequencer::getLatencyHist
Stats::Histogram & getLatencyHist()
Definition: Sequencer.hh:137
Sequencer::getIncompleteTimes
Stats::Counter getIncompleteTimes(const MachineType t) const
Definition: Sequencer.hh:178
Sequencer::getTypeLatencyHist
Stats::Histogram & getTypeLatencyHist(uint32_t t)
Definition: Sequencer.hh:138
Sequencer::getMissMachLatencyHist
Stats::Histogram & getMissMachLatencyHist(uint32_t t) const
Definition: Sequencer.hh:156
RubySystem::m_abstract_controls
std::vector< std::map< uint32_t, AbstractController * > > m_abstract_controls
Definition: RubySystem.hh:151
Sequencer::getOutstandReqHist
Stats::Histogram & getOutstandReqHist()
Definition: Sequencer.hh:135
Sequencer::getHitLatencyHist
Stats::Histogram & getHitLatencyHist()
Definition: Sequencer.hh:141
Sequencer::getMissTypeMachLatencyHist
Stats::Histogram & getMissTypeMachLatencyHist(uint32_t r, uint32_t t) const
Definition: Sequencer.hh:160
Profiler::delayVCHistogram
std::vector< Stats::Histogram * > delayVCHistogram
Definition: Profiler.hh:94
Sequencer::getHitMachLatencyHist
Stats::Histogram & getHitMachLatencyHist(uint32_t t)
Definition: Sequencer.hh:145
Profiler.hh
Profiler::m_IssueToInitialDelayHistCoalsr
std::vector< Stats::Histogram * > m_IssueToInitialDelayHistCoalsr
Definition: Profiler.hh:136
Profiler::regStats
void regStats(const std::string &name)
Definition: Profiler.cc:104
AddressProfiler::setHotLines
void setHotLines(bool hot_lines)
Definition: AddressProfiler.cc:159
Sequencer
Definition: Sequencer.hh:80
Profiler::m_latencyHistCoalsr
Stats::Histogram m_latencyHistCoalsr
Definition: Profiler.hh:102
Profiler::m_missTypeLatencyHistSeqr
std::vector< Stats::Histogram * > m_missTypeLatencyHistSeqr
Definition: Profiler.hh:120
Profiler::m_missTypeLatencyHistCoalsr
std::vector< Stats::Histogram * > m_missTypeLatencyHistCoalsr
Definition: Profiler.hh:121
ArmISA::i
Bitfield< 7 > i
Definition: miscregs_types.hh:63
Profiler::m_missMachLatencyHistCoalsr
std::vector< Stats::Histogram * > m_missMachLatencyHistCoalsr
Definition: Profiler.hh:127
GPUCoalescer::getOutstandReqHist
Stats::Histogram & getOutstandReqHist()
Definition: GPUCoalescer.hh:329
GPUCoalescer
Definition: GPUCoalescer.hh:201
Profiler::m_FirstResponseToCompletionDelayHistCoalsr
std::vector< Stats::Histogram * > m_FirstResponseToCompletionDelayHistCoalsr
Definition: Profiler.hh:139
AddressProfiler
Definition: AddressProfiler.hh:44
GPUCoalescer.hh
Profiler::Profiler
Profiler(const RubySystemParams *params, RubySystem *rs)
Definition: Profiler.cc:83
GPUCoalescer::getInitialToForwardDelayHist
Stats::Histogram & getInitialToForwardDelayHist(const MachineType t) const
Definition: GPUCoalescer.hh:351
Profiler::m_missTypeMachLatencyHistSeqr
std::vector< std::vector< Stats::Histogram * > > m_missTypeMachLatencyHistSeqr
Definition: Profiler.hh:126
Profiler::m_ForwardToFirstResponseDelayHistSeqr
std::vector< Stats::Histogram * > m_ForwardToFirstResponseDelayHistSeqr
Definition: Profiler.hh:133
std::vector< Stats::Histogram * >
GPUCoalescer::getIssueToInitialDelayHist
Stats::Histogram & getIssueToInitialDelayHist(uint32_t t) const
Definition: GPUCoalescer.hh:347
AbstractController
Definition: AbstractController.hh:74
Profiler::m_latencyHistSeqr
Stats::Histogram m_latencyHistSeqr
Histogram for holding latency profile of all requests.
Definition: Profiler.hh:101
Sequencer::getMissTypeLatencyHist
Stats::Histogram & getMissTypeLatencyHist(uint32_t t)
Definition: Sequencer.hh:153
Stats::DataWrap::flags
Derived & flags(Flags _flags)
Set the flags and marks this stat to print at the end of simulation.
Definition: statistics.hh:331
Stats::Histogram
A simple histogram stat.
Definition: statistics.hh:2654
str.hh
Profiler::m_outstandReqHistCoalsr
Stats::Histogram m_outstandReqHistCoalsr
Definition: Profiler.hh:98
Profiler::m_hitLatencyHistSeqr
Stats::Histogram m_hitLatencyHistSeqr
Histogram for holding latency profile of all requests that hit in the controller connected to this se...
Definition: Profiler.hh:108
AddressProfiler::collateStats
void collateStats()
Definition: AddressProfiler.hh:71
ArmISA::j
Bitfield< 24 > j
Definition: miscregs_types.hh:54
RubyRequest::getType
const RubyRequestType & getType() const
Definition: RubyRequest.hh:156
Profiler::m_typeLatencyHistSeqr
std::vector< Stats::Histogram * > m_typeLatencyHistSeqr
Definition: Profiler.hh:103
MipsISA::k
Bitfield< 23 > k
Definition: dt_constants.hh:78
RubyRequest::getLineAddress
Addr getLineAddress() const
Definition: RubyRequest.hh:154
Profiler::m_hitTypeLatencyHistSeqr
std::vector< Stats::Histogram * > m_hitTypeLatencyHistSeqr
Definition: Profiler.hh:109
Stats::oneline
const FlagsType oneline
Print all values on a single line.
Definition: info.hh:61
Sequencer::getIssueToInitialDelayHist
Stats::Histogram & getIssueToInitialDelayHist(uint32_t t) const
Definition: Sequencer.hh:163
RubySystem
Definition: RubySystem.hh:52
Profiler::m_inst_profiler_ptr
AddressProfiler * m_inst_profiler_ptr
Definition: Profiler.hh:91
GPUCoalescer::getLatencyHist
Stats::Histogram & getLatencyHist()
Definition: GPUCoalescer.hh:331
Sequencer::getHitTypeMachLatencyHist
Stats::Histogram & getHitTypeMachLatencyHist(uint32_t r, uint32_t t)
Definition: Sequencer.hh:148
AbstractController::getDelayVCHist
Stats::Histogram & getDelayVCHist(uint32_t index)
Definition: AbstractController.hh:153
AddressProfiler::setAllInstructions
void setAllInstructions(bool all_instructions)
Definition: AddressProfiler.cc:165
RubyRequest
Definition: RubyRequest.hh:55
Profiler::m_IssueToInitialDelayHistSeqr
std::vector< Stats::Histogram * > m_IssueToInitialDelayHistSeqr
Histograms for recording the breakdown of miss latency.
Definition: Profiler.hh:131
Profiler::m_InitialToForwardDelayHistCoalsr
std::vector< Stats::Histogram * > m_InitialToForwardDelayHistCoalsr
Definition: Profiler.hh:137
Profiler::addAddressTraceSample
void addAddressTraceSample(const RubyRequest &msg, NodeID id)
Definition: Profiler.cc:493
Profiler::m_missLatencyHistCoalsr
Stats::Histogram m_missLatencyHistCoalsr
Definition: Profiler.hh:119
Profiler::m_address_profiler_ptr
AddressProfiler * m_address_profiler_ptr
Definition: Profiler.hh:90
Profiler::m_num_vnets
const uint32_t m_num_vnets
Definition: Profiler.hh:144
Profiler::m_hitTypeMachLatencyHistSeqr
std::vector< std::vector< Stats::Histogram * > > m_hitTypeMachLatencyHistSeqr
Definition: Profiler.hh:114
Profiler::m_InitialToForwardDelayHistSeqr
std::vector< Stats::Histogram * > m_InitialToForwardDelayHistSeqr
Definition: Profiler.hh:132
Stats::DataWrap::name
Derived & name(const std::string &name)
Set the name and marks this stat to print at the end of simulation.
Definition: statistics.hh:274
Profiler::m_all_instructions
const bool m_all_instructions
Definition: Profiler.hh:143
AbstractController::getDelayHist
Stats::Histogram & getDelayHist()
Definition: AbstractController.hh:152
Stats::nozero
const FlagsType nozero
Don't print if this is zero.
Definition: info.hh:57
Sequencer::getMissLatencyHist
Stats::Histogram & getMissLatencyHist()
Definition: Sequencer.hh:151
Profiler::~Profiler
~Profiler()
Definition: Profiler.cc:99
RubyRequest::getAccessMode
const RubyAccessMode & getAccessMode() const
Definition: RubyRequest.hh:158
Profiler::m_FirstResponseToCompletionDelayHistSeqr
std::vector< Stats::Histogram * > m_FirstResponseToCompletionDelayHistSeqr
Definition: Profiler.hh:134
Profiler::m_hot_lines
const bool m_hot_lines
Definition: Profiler.hh:142
GPUCoalescer::getMissTypeLatencyHist
Stats::Histogram & getMissTypeLatencyHist(uint32_t t)
Definition: GPUCoalescer.hh:337
Network.hh
GPUCoalescer::getMissTypeMachLatencyHist
Stats::Histogram & getMissTypeMachLatencyHist(uint32_t r, uint32_t t) const
Definition: GPUCoalescer.hh:344
Profiler::m_missMachLatencyHistSeqr
std::vector< Stats::Histogram * > m_missMachLatencyHistSeqr
Histograms for profiling the latencies for requests that required external messages.
Definition: Profiler.hh:125
std
Overload hash function for BasicBlockRange type.
Definition: vec_reg.hh:587
Stats::pdf
const FlagsType pdf
Print the percent of the total that this entry represents.
Definition: info.hh:51
Profiler::m_ruby_system
RubySystem * m_ruby_system
Definition: Profiler.hh:70
Stats::DistBase::add
void add(DistBase &d)
Add the argument distribution to the this distribution.
Definition: statistics.hh:1956
Profiler::delayHistogram
Stats::Histogram delayHistogram
Definition: Profiler.hh:93
ArmISA::rs
Bitfield< 9, 8 > rs
Definition: miscregs_types.hh:372
AddressProfiler::regStats
void regStats(const std::string &name)
Definition: AddressProfiler.hh:70
NodeID
unsigned int NodeID
Definition: TypeDefines.hh:34
RubyRequest::getProgramCounter
Addr getProgramCounter() const
Definition: RubyRequest.hh:157
Profiler::m_missTypeMachLatencyHistCoalsr
std::vector< std::vector< Stats::Histogram * > > m_missTypeMachLatencyHistCoalsr
Definition: Profiler.hh:128
GPUCoalescer::getMissLatencyHist
Stats::Histogram & getMissLatencyHist()
Definition: GPUCoalescer.hh:335
GPUCoalescer::getTypeLatencyHist
Stats::Histogram & getTypeLatencyHist(uint32_t t)
Definition: GPUCoalescer.hh:332
Stats::Histogram::init
Histogram & init(size_type size)
Set the parameters of this histogram.
Definition: statistics.hh:2669
Profiler::m_IncompleteTimesSeqr
Stats::Scalar m_IncompleteTimesSeqr[MachineType_NUM]
Definition: Profiler.hh:135
AddressProfiler.hh
MipsISA::p
Bitfield< 0 > p
Definition: pra_constants.hh:323
Profiler::m_typeLatencyHistCoalsr
std::vector< Stats::Histogram * > m_typeLatencyHistCoalsr
Definition: Profiler.hh:104
Profiler::m_hitMachLatencyHistSeqr
std::vector< Stats::Histogram * > m_hitMachLatencyHistSeqr
Histograms for profiling the latencies for requests that did not required external messages.
Definition: Profiler.hh:113
GPUCoalescer::getMissMachLatencyHist
Stats::Histogram & getMissMachLatencyHist(uint32_t t) const
Definition: GPUCoalescer.hh:340
Stats::DataWrap::desc
Derived & desc(const std::string &_desc)
Set the description and marks this stat to print at the end of simulation.
Definition: statistics.hh:307
AbstractController::getCPUSequencer
virtual Sequencer * getCPUSequencer() const =0
stl_helpers.hh
Profiler::m_ForwardToFirstResponseDelayHistCoalsr
std::vector< Stats::Histogram * > m_ForwardToFirstResponseDelayHistCoalsr
Definition: Profiler.hh:138
csprintf
std::string csprintf(const char *format, const Args &...args)
Definition: cprintf.hh:158
Profiler::collateStats
void collateStats()
Definition: Profiler.cc:348
Sequencer::getHitTypeLatencyHist
Stats::Histogram & getHitTypeLatencyHist(uint32_t t)
Definition: Sequencer.hh:142
Profiler::m_outstandReqHistSeqr
Stats::Histogram m_outstandReqHistSeqr
Histogram for number of outstanding requests per cycle.
Definition: Profiler.hh:97
Profiler::m_missLatencyHistSeqr
Stats::Histogram m_missLatencyHistSeqr
Histogram for holding latency profile of all requests that miss in the controller connected to this s...
Definition: Profiler.hh:118
AbstractController::getGPUCoalescer
virtual GPUCoalescer * getGPUCoalescer() const =0
Sequencer::getInitialToForwardDelayHist
Stats::Histogram & getInitialToForwardDelayHist(const MachineType t) const
Definition: Sequencer.hh:167
Sequencer.hh

Generated on Wed Sep 30 2020 14:02:13 for gem5 by doxygen 1.8.17