gem5  v21.0.0.0
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
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 m5::stl_helpers::operator<<;
81 
82 Profiler::Profiler(const RubySystemParams &p, RubySystem *rs)
83  : m_ruby_system(rs), m_hot_lines(p.hot_lines),
84  m_all_instructions(p.all_instructions),
85  m_num_vnets(p.number_of_virtual_networks),
86  rubyProfilerStats(rs, this)
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 
105  : Stats::Group(parent),
106  perRequestTypeStats(parent),
107  perMachineTypeStats(parent),
108  perRequestTypeMachineTypeStats(parent),
109  ADD_STAT(delayHistogram, "delay histogram for all message"),
110  ADD_STAT(m_outstandReqHistSeqr, ""),
111  ADD_STAT(m_outstandReqHistCoalsr, ""),
112  ADD_STAT(m_latencyHistSeqr, ""),
113  ADD_STAT(m_latencyHistCoalsr, ""),
114  ADD_STAT(m_hitLatencyHistSeqr, ""),
115  ADD_STAT(m_missLatencyHistSeqr, ""),
116  ADD_STAT(m_missLatencyHistCoalsr, "")
117 {
119  .init(10)
121 
122  for (int i = 0; i < profiler->m_num_vnets; i++) {
123  delayVCHistogram.push_back(new Stats::Histogram(this));
125  ->init(10)
126  .name(csprintf("delayVCHist.vnet_%i", i))
127  .desc(csprintf("delay histogram for vnet_%i", i))
129  }
130 
132  .init(10)
134 
136  .init(10)
138 
140  .init(10)
142 
144  .init(10)
146 
148  .init(10)
150 
152  .init(10)
154 
156  .init(10)
158 }
159 
162  : Stats::Group(parent, "RequestType")
163 {
164  for (int i = 0; i < RubyRequestType_NUM; i++) {
165  m_typeLatencyHistSeqr.push_back(new Stats::Histogram(this));
167  ->init(10)
168  .name(csprintf("%s.latency_hist_seqr", RubyRequestType(i)))
169  .desc("")
171 
172  m_typeLatencyHistCoalsr.push_back(new Stats::Histogram(this));
174  ->init(10)
175  .name(csprintf("%s.latency_hist_coalsr", RubyRequestType(i)))
176  .desc("")
178 
179  m_hitTypeLatencyHistSeqr.push_back(new Stats::Histogram(this));
181  ->init(10)
182  .name(csprintf("%s.hit_latency_hist_seqr", RubyRequestType(i)))
183  .desc("")
185 
186  m_missTypeLatencyHistSeqr.push_back(new Stats::Histogram(this));
188  ->init(10)
189  .name(csprintf("%s.miss_latency_hist_seqr", RubyRequestType(i)))
190  .desc("")
192 
193  m_missTypeLatencyHistCoalsr.push_back(new Stats::Histogram(this));
195  ->init(10)
196  .name(csprintf("%s.miss_latency_hist_coalsr", RubyRequestType(i)))
197  .desc("")
199  }
200 }
201 
204  : Stats::Group(parent, "MachineType")
205 {
206  for (int i = 0; i < MachineType_NUM; i++) {
207  m_hitMachLatencyHistSeqr.push_back(new Stats::Histogram(this));
209  ->init(10)
210  .name(csprintf("%s.hit_mach_latency_hist_seqr", MachineType(i)))
211  .desc("")
213 
214  m_missMachLatencyHistSeqr.push_back(new Stats::Histogram(this));
216  ->init(10)
217  .name(csprintf("%s.miss_mach_latency_hist_seqr", MachineType(i)))
218  .desc("")
220 
221  m_missMachLatencyHistCoalsr.push_back(new Stats::Histogram(this));
223  ->init(10)
224  .name(csprintf("%s.miss_mach_latency_hist_coalsr",
225  MachineType(i)))
226  .desc("")
228 
229  m_IssueToInitialDelayHistSeqr.push_back(new Stats::Histogram(this));
231  ->init(10)
232  .name(csprintf(
233  "%s.miss_latency_hist_seqr.issue_to_initial_request",
234  MachineType(i)))
235  .desc("")
237 
240  ->init(10)
241  .name(csprintf(
242  "%s.miss_latency_hist_coalsr.issue_to_initial_request",
243  MachineType(i)))
244  .desc("")
246 
249  ->init(10)
250  .name(csprintf("%s.miss_latency_hist_seqr.initial_to_forward",
251  MachineType(i)))
252  .desc("")
254 
256  .push_back(new Stats::Histogram(this));
258  ->init(10)
259  .name(csprintf("%s.miss_latency_hist_coalsr.initial_to_forward",
260  MachineType(i)))
261  .desc("")
263 
265  .push_back(new Stats::Histogram(this));
266 
268  ->init(10)
269  .name(csprintf(
270  "%s.miss_latency_hist_seqr.forward_to_first_response",
271  MachineType(i)))
272  .desc("")
274 
276  .push_back(new Stats::Histogram(this));
278  ->init(10)
279  .name(csprintf(
280  "%s.miss_latency_hist_coalsr.forward_to_first_response",
281  MachineType(i)))
282  .desc("")
284 
286  .push_back(new Stats::Histogram(this));
288  ->init(10)
289  .name(csprintf(
290  "%s.miss_latency_hist_seqr.first_response_to_completion",
291  MachineType(i)))
292  .desc("")
294 
296  .push_back(new Stats::Histogram(this));
298  ->init(10)
299  .name(csprintf(
300  "%s.miss_latency_hist_coalsr.first_response_to_completion",
301  MachineType(i)))
302  .desc("")
304 
305  m_IncompleteTimesSeqr.push_back(new Stats::Scalar(this));
307  ->name(csprintf("%s.incomplete_times_seqr", MachineType(i)))
308  .desc("")
309  .flags(Stats::nozero);
310  }
311 }
312 
316  : Stats::Group(parent, "RequestTypeMachineType")
317 {
318  for (int i = 0; i < RubyRequestType_NUM; i++) {
320  .push_back(std::vector<Stats::Histogram *>());
322  .push_back(std::vector<Stats::Histogram *>());
324  .push_back(std::vector<Stats::Histogram *>());
325 
326  for (int j = 0; j < MachineType_NUM; j++) {
328  .push_back(new Stats::Histogram(this));
330  ->init(10)
331  .name(csprintf("%s.%s.hit_type_mach_latency_hist_seqr",
332  RubyRequestType(i), MachineType(j)))
333  .desc("")
335 
337  .push_back(new Stats::Histogram(this));
339  ->init(10)
340  .name(csprintf("%s.%s.miss_type_mach_latency_hist_seqr",
341  RubyRequestType(i), MachineType(j)))
342  .desc("")
344 
346  .push_back(new Stats::Histogram(this));
348  ->init(10)
349  .name(csprintf("%s.%s.miss_type_mach_latency_hist_coalsr",
350  RubyRequestType(i), MachineType(j)))
351  .desc("")
353  }
354  }
355 }
356 
357 void
359 {
360  if (!m_all_instructions) {
362  }
363 
364  if (m_all_instructions) {
366  }
367 
368  for (uint32_t i = 0; i < MachineType_NUM; i++) {
369  for (std::map<uint32_t, AbstractController*>::iterator it =
371  it != m_ruby_system->m_abstract_controls[i].end(); ++it) {
372 
373  AbstractController *ctr = (*it).second;
375 
376  for (uint32_t i = 0; i < m_num_vnets; i++) {
378  delayVCHistogram[i]->add(ctr->getDelayVCHist(i));
379  }
380  }
381  }
382 
383  for (uint32_t i = 0; i < MachineType_NUM; i++) {
384  for (std::map<uint32_t, AbstractController*>::iterator it =
386  it != m_ruby_system->m_abstract_controls[i].end(); ++it) {
387 
388  AbstractController *ctr = (*it).second;
389  Sequencer *seq = ctr->getCPUSequencer();
390  if (seq != NULL) {
393  }
394 #ifdef BUILD_GPU
395  GPUCoalescer *coal = ctr->getGPUCoalescer();
396  if (coal != NULL) {
399  }
400 #endif
401  }
402  }
403 
404  for (uint32_t i = 0; i < MachineType_NUM; i++) {
405  for (std::map<uint32_t, AbstractController*>::iterator it =
407  it != m_ruby_system->m_abstract_controls[i].end(); ++it) {
408 
409  AbstractController *ctr = (*it).second;
410  Sequencer *seq = ctr->getCPUSequencer();
411  if (seq != NULL) {
412  // add all the latencies
419 
420  // add the per request type latencies
421  for (uint32_t j = 0; j < RubyRequestType_NUM; ++j) {
425  ->add(seq->getTypeLatencyHist(j));
429  ->add(seq->getHitTypeLatencyHist(j));
433  ->add(seq->getMissTypeLatencyHist(j));
434  }
435 
436  // add the per machine type miss latencies
437  for (uint32_t j = 0; j < MachineType_NUM; ++j) {
441  ->add(seq->getHitMachLatencyHist(j));
445  ->add(seq->getMissMachLatencyHist(j));
446 
450  ->add(seq->getIssueToInitialDelayHist(MachineType(j)));
451 
455  ->add(seq
456  ->getInitialToForwardDelayHist(MachineType(j)));
460  ->add(seq
461  ->getForwardRequestToFirstResponseHist(
462  MachineType(j)));
463 
467  ->add(seq
468  ->getFirstResponseToCompletionDelayHist(
469  MachineType(j)));
470 
474  seq->getIncompleteTimes(MachineType(j));
475  }
476 
477  // add the per (request, machine) type miss latencies
478  for (uint32_t j = 0; j < RubyRequestType_NUM; j++) {
479  for (uint32_t k = 0; k < MachineType_NUM; k++) {
488  }
489  }
490  }
491 #ifdef BUILD_GPU
492  GPUCoalescer *coal = ctr->getGPUCoalescer();
493  if (coal != NULL) {
494  // add all the latencies
499 
500  // add the per request type latencies
501  for (uint32_t j = 0; j < RubyRequestType_NUM; ++j) {
505  ->add(coal->getTypeLatencyHist(j));
509  ->add(coal->getMissTypeLatencyHist(j));
510  }
511 
512  // add the per machine type miss latencies
513  for (uint32_t j = 0; j < MachineType_NUM; ++j) {
517  ->add(coal->getMissMachLatencyHist(j));
518 
522  ->add(coal->getIssueToInitialDelayHist(
523  MachineType(j)));
524 
528  ->add(coal->getInitialToForwardDelayHist(
529  MachineType(j)));
534  MachineType(j)));
535 
540  MachineType(j)));
541  }
542 
543  // add the per (request, machine) type miss latencies
544  for (uint32_t j = 0; j < RubyRequestType_NUM; j++) {
545  for (uint32_t k = 0; k < MachineType_NUM; k++) {
549  ->add(coal->getMissTypeMachLatencyHist(j,k));
550  }
551  }
552  }
553 #endif
554  }
555  }
556 }
557 
558 void
560 {
561  if (msg.getType() != RubyRequestType_IFETCH) {
562  // Note: The following line should be commented out if you
563  // want to use the special profiling that is part of the GS320
564  // protocol
565 
566  // NOTE: Unless PROFILE_HOT_LINES is enabled, nothing will be
567  // profiled by the AddressProfiler
569  addTraceSample(msg.getLineAddress(), msg.getProgramCounter(),
570  msg.getType(), msg.getAccessMode(), id, false);
571  }
572 }
573 
Sequencer::getLatencyHist
Stats::Histogram & getLatencyHist()
Definition: Sequencer.hh:144
Sequencer::getIncompleteTimes
Stats::Counter getIncompleteTimes(const MachineType t) const
Definition: Sequencer.hh:185
Sequencer::getTypeLatencyHist
Stats::Histogram & getTypeLatencyHist(uint32_t t)
Definition: Sequencer.hh:145
Sequencer::getMissMachLatencyHist
Stats::Histogram & getMissMachLatencyHist(uint32_t t) const
Definition: Sequencer.hh:163
RubySystem::m_abstract_controls
std::vector< std::map< uint32_t, AbstractController * > > m_abstract_controls
Definition: RubySystem.hh:149
Sequencer::getOutstandReqHist
Stats::Histogram & getOutstandReqHist()
Definition: Sequencer.hh:142
Sequencer::getHitLatencyHist
Stats::Histogram & getHitLatencyHist()
Definition: Sequencer.hh:148
Sequencer::getMissTypeMachLatencyHist
Stats::Histogram & getMissTypeMachLatencyHist(uint32_t r, uint32_t t) const
Definition: Sequencer.hh:167
Profiler::ProfilerStats::PerMachineTypeStats::m_IncompleteTimesSeqr
std::vector< Stats::Scalar * > m_IncompleteTimesSeqr
Definition: Profiler.hh:136
Sequencer::getHitMachLatencyHist
Stats::Histogram & getHitMachLatencyHist(uint32_t t)
Definition: Sequencer.hh:152
Profiler.hh
AddressProfiler::setHotLines
void setHotLines(bool hot_lines)
Definition: AddressProfiler.cc:163
Sequencer
Definition: Sequencer.hh:80
ArmISA::i
Bitfield< 7 > i
Definition: miscregs_types.hh:63
GPUCoalescer::getOutstandReqHist
Stats::Histogram & getOutstandReqHist()
Definition: GPUCoalescer.hh:336
Profiler::ProfilerStats::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:179
GPUCoalescer
Definition: GPUCoalescer.hh:209
AddressProfiler
Definition: AddressProfiler.hh:44
GPUCoalescer.hh
GPUCoalescer::getInitialToForwardDelayHist
Stats::Histogram & getInitialToForwardDelayHist(const MachineType t) const
Definition: GPUCoalescer.hh:358
Stats::Group::Group
Group()=delete
Profiler::ProfilerStats::PerMachineTypeStats::m_IssueToInitialDelayHistCoalsr
std::vector< Stats::Histogram * > m_IssueToInitialDelayHistCoalsr
Definition: Profiler.hh:137
Profiler::rubyProfilerStats
ProfilerStats rubyProfilerStats
Definition: Profiler.hh:190
Profiler::ProfilerStats::delayHistogram
Stats::Histogram delayHistogram
Definition: Profiler.hh:162
std::vector< Stats::Histogram * >
Profiler::ProfilerStats::PerRequestTypeMachineTypeStats::m_missTypeMachLatencyHistCoalsr
std::vector< std::vector< Stats::Histogram * > > m_missTypeMachLatencyHistCoalsr
Definition: Profiler.hh:159
GPUCoalescer::getIssueToInitialDelayHist
Stats::Histogram & getIssueToInitialDelayHist(uint32_t t) const
Definition: GPUCoalescer.hh:354
AbstractController
Definition: AbstractController.hh:76
Profiler::ProfilerStats::PerRequestTypeStats::m_typeLatencyHistCoalsr
std::vector< Stats::Histogram * > m_typeLatencyHistCoalsr
Definition: Profiler.hh:104
Profiler::ProfilerStats::PerRequestTypeStats::m_missTypeLatencyHistSeqr
std::vector< Stats::Histogram * > m_missTypeLatencyHistSeqr
Definition: Profiler.hh:112
Profiler::ProfilerStats::delayVCHistogram
std::vector< Stats::Histogram * > delayVCHistogram
Definition: Profiler.hh:163
Profiler::ProfilerStats::PerMachineTypeStats::m_missMachLatencyHistCoalsr
std::vector< Stats::Histogram * > m_missMachLatencyHistCoalsr
Definition: Profiler.hh:127
Profiler::ProfilerStats::PerRequestTypeMachineTypeStats::m_missTypeMachLatencyHistSeqr
std::vector< std::vector< Stats::Histogram * > > m_missTypeMachLatencyHistSeqr
Histograms for profiling the latencies for requests that required external messages.
Definition: Profiler.hh:157
Sequencer::getMissTypeLatencyHist
Stats::Histogram & getMissTypeLatencyHist(uint32_t t)
Definition: Sequencer.hh:160
Stats::DataWrap::flags
Derived & flags(Flags _flags)
Set the flags and marks this stat to print at the end of simulation.
Definition: statistics.hh:339
Stats::Histogram
A simple histogram stat.
Definition: statistics.hh:2126
Profiler::ProfilerStats::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:175
str.hh
Stats::Scalar
This is a simple scalar statistic, like a counter.
Definition: statistics.hh:1933
Profiler::ProfilerStats::m_outstandReqHistCoalsr
Stats::Histogram m_outstandReqHistCoalsr
Definition: Profiler.hh:167
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:152
Profiler::ProfilerStats::PerMachineTypeStats::m_ForwardToFirstResponseDelayHistCoalsr
std::vector< Stats::Histogram * > m_ForwardToFirstResponseDelayHistCoalsr
Definition: Profiler.hh:140
Profiler::ProfilerStats::perRequestTypeStats
Profiler::ProfilerStats::PerRequestTypeStats perRequestTypeStats
MipsISA::k
Bitfield< 23 > k
Definition: dt_constants.hh:78
RubyRequest::getLineAddress
Addr getLineAddress() const
Definition: RubyRequest.hh:150
Stats::oneline
const FlagsType oneline
Print all values on a single line.
Definition: info.hh:62
GPUCoalescer::getForwardRequestToFirstResponseHist
Stats::Histogram & getForwardRequestToFirstResponseHist(const MachineType t) const
Definition: GPUCoalescer.hh:362
Sequencer::getIssueToInitialDelayHist
Stats::Histogram & getIssueToInitialDelayHist(uint32_t t) const
Definition: Sequencer.hh:170
Profiler
Definition: Profiler.hh:65
ADD_STAT
#define ADD_STAT(n,...)
Convenience macro to add a stat to a statistics group.
Definition: group.hh:71
RubySystem
Definition: RubySystem.hh:52
Profiler::ProfilerStats::PerMachineTypeStats::m_FirstResponseToCompletionDelayHistSeqr
std::vector< Stats::Histogram * > m_FirstResponseToCompletionDelayHistSeqr
Definition: Profiler.hh:135
Profiler::m_inst_profiler_ptr
AddressProfiler * m_inst_profiler_ptr
Definition: Profiler.hh:92
GPUCoalescer::getLatencyHist
Stats::Histogram & getLatencyHist()
Definition: GPUCoalescer.hh:338
Profiler::ProfilerStats::perMachineTypeStats
Profiler::ProfilerStats::PerMachineTypeStats perMachineTypeStats
Profiler::ProfilerStats::PerRequestTypeMachineTypeStats::m_hitTypeMachLatencyHistSeqr
std::vector< std::vector< Stats::Histogram * > > m_hitTypeMachLatencyHistSeqr
Histograms for profiling the latencies for requests that did not required external messages.
Definition: Profiler.hh:152
Sequencer::getHitTypeMachLatencyHist
Stats::Histogram & getHitTypeMachLatencyHist(uint32_t r, uint32_t t)
Definition: Sequencer.hh:155
Profiler::ProfilerStats::PerRequestTypeMachineTypeStats::PerRequestTypeMachineTypeStats
PerRequestTypeMachineTypeStats(Stats::Group *parent)
Definition: Profiler.cc:315
Profiler::ProfilerStats::PerMachineTypeStats::m_missMachLatencyHistSeqr
std::vector< Stats::Histogram * > m_missMachLatencyHistSeqr
Histograms for profiling the latencies for requests that required external messages.
Definition: Profiler.hh:126
AbstractController::getDelayVCHist
Stats::Histogram & getDelayVCHist(uint32_t index)
Definition: AbstractController.hh:172
Profiler::ProfilerStats::PerMachineTypeStats::m_InitialToForwardDelayHistCoalsr
std::vector< Stats::Histogram * > m_InitialToForwardDelayHistCoalsr
Definition: Profiler.hh:138
Profiler::ProfilerStats::perRequestTypeMachineTypeStats
Profiler::ProfilerStats::PerRequestTypeMachineTypeStats perRequestTypeMachineTypeStats
AddressProfiler::setAllInstructions
void setAllInstructions(bool all_instructions)
Definition: AddressProfiler.cc:169
RubyRequest
Definition: RubyRequest.hh:55
Profiler::addAddressTraceSample
void addAddressTraceSample(const RubyRequest &msg, NodeID id)
Definition: Profiler.cc:559
Profiler::ProfilerStats::PerRequestTypeStats::m_typeLatencyHistSeqr
std::vector< Stats::Histogram * > m_typeLatencyHistSeqr
Definition: Profiler.hh:103
Profiler::ProfilerStats::PerMachineTypeStats::PerMachineTypeStats
PerMachineTypeStats(Stats::Group *parent)
Definition: Profiler.cc:203
Profiler::Profiler
Profiler(const RubySystemParams &params, RubySystem *rs)
Definition: Profiler.cc:82
Profiler::m_address_profiler_ptr
AddressProfiler * m_address_profiler_ptr
Definition: Profiler.hh:91
Profiler::ProfilerStats::PerMachineTypeStats::m_InitialToForwardDelayHistSeqr
std::vector< Stats::Histogram * > m_InitialToForwardDelayHistSeqr
Definition: Profiler.hh:131
Profiler::m_num_vnets
const uint32_t m_num_vnets
Definition: Profiler.hh:186
GPUCoalescer::getFirstResponseToCompletionDelayHist
Stats::Histogram & getFirstResponseToCompletionDelayHist(const MachineType t) const
Definition: GPUCoalescer.hh:366
Profiler::ProfilerStats::PerRequestTypeStats::m_hitTypeLatencyHistSeqr
std::vector< Stats::Histogram * > m_hitTypeLatencyHistSeqr
Definition: Profiler.hh:108
Profiler::m_all_instructions
const bool m_all_instructions
Definition: Profiler.hh:185
AbstractController::getDelayHist
Stats::Histogram & getDelayHist()
Definition: AbstractController.hh:171
Stats::nozero
const FlagsType nozero
Don't print if this is zero.
Definition: info.hh:58
Sequencer::getMissLatencyHist
Stats::Histogram & getMissLatencyHist()
Definition: Sequencer.hh:158
Profiler::ProfilerStats::ProfilerStats
ProfilerStats(Stats::Group *parent, Profiler *profiler)
Definition: Profiler.cc:104
Profiler::~Profiler
~Profiler()
Definition: Profiler.cc:99
Profiler::ProfilerStats::PerMachineTypeStats::m_IssueToInitialDelayHistSeqr
std::vector< Stats::Histogram * > m_IssueToInitialDelayHistSeqr
Histograms for recording the breakdown of miss latency.
Definition: Profiler.hh:130
RubyRequest::getAccessMode
const RubyAccessMode & getAccessMode() const
Definition: RubyRequest.hh:154
Profiler::ProfilerStats::PerMachineTypeStats::m_hitMachLatencyHistSeqr
std::vector< Stats::Histogram * > m_hitMachLatencyHistSeqr
Histograms for profiling the latencies for requests that did not required external messages.
Definition: Profiler.hh:122
Profiler::m_hot_lines
const bool m_hot_lines
Definition: Profiler.hh:184
GPUCoalescer::getMissTypeLatencyHist
Stats::Histogram & getMissTypeLatencyHist(uint32_t t)
Definition: GPUCoalescer.hh:344
Network.hh
GPUCoalescer::getMissTypeMachLatencyHist
Stats::Histogram & getMissTypeMachLatencyHist(uint32_t r, uint32_t t) const
Definition: GPUCoalescer.hh:351
Profiler::ProfilerStats::m_latencyHistSeqr
Stats::Histogram m_latencyHistSeqr
Histogram for holding latency profile of all requests.
Definition: Profiler.hh:170
Profiler::ProfilerStats::PerRequestTypeStats::m_missTypeLatencyHistCoalsr
std::vector< Stats::Histogram * > m_missTypeLatencyHistCoalsr
Definition: Profiler.hh:113
Stats::pdf
const FlagsType pdf
Print the percent of the total that this entry represents.
Definition: info.hh:52
Profiler::ProfilerStats::PerMachineTypeStats::m_ForwardToFirstResponseDelayHistSeqr
std::vector< Stats::Histogram * > m_ForwardToFirstResponseDelayHistSeqr
Definition: Profiler.hh:133
Stats::Group
Statistics container.
Definition: group.hh:87
Profiler::m_ruby_system
RubySystem * m_ruby_system
Definition: Profiler.hh:71
Stats::DistBase::add
void add(DistBase &d)
Add the argument distribution to the this distribution.
Definition: statistics.hh:1355
ArmISA::rs
Bitfield< 9, 8 > rs
Definition: miscregs_types.hh:372
Profiler::ProfilerStats::PerRequestTypeStats::PerRequestTypeStats
PerRequestTypeStats(Stats::Group *parent)
Definition: Profiler.cc:161
Profiler::ProfilerStats::m_latencyHistCoalsr
Stats::Histogram m_latencyHistCoalsr
Definition: Profiler.hh:171
NodeID
unsigned int NodeID
Definition: TypeDefines.hh:34
Stats
Definition: statistics.cc:53
Profiler::ProfilerStats::PerMachineTypeStats::m_FirstResponseToCompletionDelayHistCoalsr
std::vector< Stats::Histogram * > m_FirstResponseToCompletionDelayHistCoalsr
Definition: Profiler.hh:142
RubyRequest::getProgramCounter
Addr getProgramCounter() const
Definition: RubyRequest.hh:153
GPUCoalescer::getMissLatencyHist
Stats::Histogram & getMissLatencyHist()
Definition: GPUCoalescer.hh:342
GPUCoalescer::getTypeLatencyHist
Stats::Histogram & getTypeLatencyHist(uint32_t t)
Definition: GPUCoalescer.hh:339
Stats::Histogram::init
Histogram & init(size_type size)
Set the parameters of this histogram.
Definition: statistics.hh:2153
AddressProfiler.hh
MipsISA::p
Bitfield< 0 > p
Definition: pra_constants.hh:323
GPUCoalescer::getMissMachLatencyHist
Stats::Histogram & getMissMachLatencyHist(uint32_t t) const
Definition: GPUCoalescer.hh:347
Profiler::ProfilerStats::m_outstandReqHistSeqr
Stats::Histogram m_outstandReqHistSeqr
Histogram for number of outstanding requests per cycle.
Definition: Profiler.hh:166
AbstractController::getCPUSequencer
virtual Sequencer * getCPUSequencer() const =0
stl_helpers.hh
csprintf
std::string csprintf(const char *format, const Args &...args)
Definition: cprintf.hh:158
Profiler::collateStats
void collateStats()
Definition: Profiler.cc:358
Sequencer::getHitTypeLatencyHist
Stats::Histogram & getHitTypeLatencyHist(uint32_t t)
Definition: Sequencer.hh:149
Profiler::ProfilerStats::m_missLatencyHistCoalsr
Stats::Histogram m_missLatencyHistCoalsr
Definition: Profiler.hh:180
AbstractController::getGPUCoalescer
virtual GPUCoalescer * getGPUCoalescer() const =0
Sequencer.hh

Generated on Tue Mar 23 2021 19:41:28 for gem5 by doxygen 1.8.17