gem5 v24.0.0.0
Loading...
Searching...
No Matches
Profiler.hh
Go to the documentation of this file.
1/*
2 * Copyright (c) 1999-2008 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
45#ifndef __MEM_RUBY_PROFILER_PROFILER_HH__
46#define __MEM_RUBY_PROFILER_PROFILER_HH__
47
48#include <map>
49#include <memory>
50#include <string>
51#include <vector>
52
53#include "base/callback.hh"
54#include "base/statistics.hh"
56#include "mem/ruby/protocol/AccessType.hh"
57#include "mem/ruby/protocol/PrefetchBit.hh"
58#include "mem/ruby/protocol/RubyAccessMode.hh"
59#include "mem/ruby/protocol/RubyRequestType.hh"
60#include "params/RubySystem.hh"
61
62namespace gem5
63{
64
65namespace ruby
66{
67
68class RubyRequest;
69class AddressProfiler;
70
72{
73 public:
74 Profiler(const RubySystemParams &params, RubySystem *rs);
75 ~Profiler();
76
78
79 void wakeup();
80 void regStats();
81 void collateStats();
82
85
86 void addAddressTraceSample(const RubyRequest& msg, NodeID id);
87
88 // added by SS
89 bool getHotLines() const { return m_hot_lines; }
90 bool getAllInstructions() const { return m_all_instructions; }
91
92 private:
93 // Private copy constructor and assignment operator
94 Profiler(const Profiler& obj);
96
99
101 {
102 ProfilerStats(statistics::Group *parent, Profiler *profiler);
103
105 {
107
108 // Histogram of the latency of each request type
111
112 // Histogram of the latency of requests that hit in the controller
113 // connected to this sequencer for each type of request
115
116 // Histogram of the latency of requests that miss in the controller
117 // connected to this sequencer for each type of request
121
153
170
173
177
181
185
190 };
191
192 //added by SS
193 const bool m_hot_lines;
195 const uint32_t m_num_vnets;
196
197
198 public:
200};
201
202} // namespace ruby
203} // namespace gem5
204
205#endif // __MEM_RUBY_PROFILER_PROFILER_HH__
Profiler(const Profiler &obj)
Profiler & operator=(const Profiler &obj)
AddressProfiler * m_inst_profiler_ptr
Definition Profiler.hh:98
ProfilerStats rubyProfilerStats
Definition Profiler.hh:199
const uint32_t m_num_vnets
Definition Profiler.hh:195
AddressProfiler * getInstructionProfiler()
Definition Profiler.hh:84
AddressProfiler * m_address_profiler_ptr
Definition Profiler.hh:97
RubySystem * m_ruby_system
Definition Profiler.hh:77
const bool m_all_instructions
Definition Profiler.hh:194
void addAddressTraceSample(const RubyRequest &msg, NodeID id)
Definition Profiler.cc:572
Profiler(const RubySystemParams &params, RubySystem *rs)
Definition Profiler.cc:89
bool getAllInstructions() const
Definition Profiler.hh:90
bool getHotLines() const
Definition Profiler.hh:89
const bool m_hot_lines
Definition Profiler.hh:193
AddressProfiler * getAddressProfiler()
Definition Profiler.hh:83
Statistics container.
Definition group.hh:93
A simple histogram stat.
STL vector class.
Definition stl.hh:37
Bitfield< 9, 8 > rs
unsigned int NodeID
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
Definition binary32.hh:36
Declaration of Statistics objects.
std::vector< statistics::Histogram * > m_missMachLatencyHistCoalsr
Definition Profiler.hh:133
std::vector< statistics::Histogram * > m_FirstResponseToCompletionDelayHistSeqr
Definition Profiler.hh:142
std::vector< statistics::Histogram * > m_IssueToInitialDelayHistSeqr
Histograms for recording the breakdown of miss latency.
Definition Profiler.hh:136
std::vector< statistics::Histogram * > m_ForwardToFirstResponseDelayHistCoalsr
Definition Profiler.hh:149
std::vector< statistics::Scalar * > m_IncompleteTimesSeqr
Definition Profiler.hh:143
std::vector< statistics::Histogram * > m_FirstResponseToCompletionDelayHistCoalsr
Definition Profiler.hh:151
std::vector< statistics::Histogram * > m_InitialToForwardDelayHistSeqr
Definition Profiler.hh:138
std::vector< statistics::Histogram * > m_ForwardToFirstResponseDelayHistSeqr
Definition Profiler.hh:140
std::vector< statistics::Histogram * > m_InitialToForwardDelayHistCoalsr
Definition Profiler.hh:147
std::vector< statistics::Histogram * > m_IssueToInitialDelayHistCoalsr
Definition Profiler.hh:145
std::vector< statistics::Histogram * > m_hitMachLatencyHistSeqr
Histograms for profiling the latencies for requests that did not required external messages.
Definition Profiler.hh:128
std::vector< statistics::Histogram * > m_missMachLatencyHistSeqr
Histograms for profiling the latencies for requests that required external messages.
Definition Profiler.hh:132
std::vector< std::vector< statistics::Histogram * > > m_missTypeMachLatencyHistSeqr
Histograms for profiling the latencies for requests that required external messages.
Definition Profiler.hh:166
std::vector< std::vector< statistics::Histogram * > > m_missTypeMachLatencyHistCoalsr
Definition Profiler.hh:168
std::vector< std::vector< statistics::Histogram * > > m_hitTypeMachLatencyHistSeqr
Histograms for profiling the latencies for requests that did not required external messages.
Definition Profiler.hh:161
std::vector< statistics::Histogram * > m_missTypeLatencyHistSeqr
Definition Profiler.hh:118
std::vector< statistics::Histogram * > m_hitTypeLatencyHistSeqr
Definition Profiler.hh:114
std::vector< statistics::Histogram * > m_typeLatencyHistSeqr
Definition Profiler.hh:109
std::vector< statistics::Histogram * > m_typeLatencyHistCoalsr
Definition Profiler.hh:110
std::vector< statistics::Histogram * > m_missTypeLatencyHistCoalsr
Definition Profiler.hh:119
gem5::ruby::Profiler::ProfilerStats::PerRequestTypeStats perRequestTypeStats
gem5::ruby::Profiler::ProfilerStats::PerRequestTypeMachineTypeStats perRequestTypeMachineTypeStats
statistics::Histogram m_latencyHistSeqr
Histogram for holding latency profile of all requests.
Definition Profiler.hh:179
statistics::Histogram m_missLatencyHistCoalsr
Definition Profiler.hh:189
statistics::Histogram m_missLatencyHistSeqr
Histogram for holding latency profile of all requests that miss in the controller connected to this s...
Definition Profiler.hh:188
statistics::Histogram m_outstandReqHistCoalsr
Definition Profiler.hh:176
statistics::Histogram m_latencyHistCoalsr
Definition Profiler.hh:180
std::vector< statistics::Histogram * > delayVCHistogram
Definition Profiler.hh:172
gem5::ruby::Profiler::ProfilerStats::PerMachineTypeStats perMachineTypeStats
statistics::Histogram m_outstandReqHistSeqr
Histogram for number of outstanding requests per cycle.
Definition Profiler.hh:175
ProfilerStats(statistics::Group *parent, Profiler *profiler)
Definition Profiler.cc:111
statistics::Histogram m_hitLatencyHistSeqr
Histogram for holding latency profile of all requests that hit in the controller connected to this se...
Definition Profiler.hh:184
statistics::Histogram delayHistogram
Definition Profiler.hh:171

Generated on Tue Jun 18 2024 16:24:05 for gem5 by doxygen 1.11.0