47 #include <sys/types.h>
55 #include "mem/protocol/MachineType.hh"
56 #include "mem/protocol/RubyRequest.hh"
80 using m5::stl_helpers::operator<<;
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)
115 .
name(pName +
".delayHist")
116 .
desc(
"delay histogram for all message")
123 .name(pName +
csprintf(
".delayVCHist.vnet_%i",
i))
124 .desc(
csprintf(
"delay histogram for vnet_%i",
i))
130 .
name(pName +
".outstanding_req_hist_seqr")
136 .
name(pName +
".outstanding_req_hist_coalsr")
142 .
name(pName +
".latency_hist_seqr")
148 .
name(pName +
".latency_hist_coalsr")
154 .
name(pName +
".hit_latency_hist_seqr")
160 .
name(pName +
".miss_latency_hist_seqr")
166 .
name(pName +
".miss_latency_hist_coalsr")
170 for (
int i = 0;
i < RubyRequestType_NUM;
i++) {
174 .name(pName +
csprintf(
".%s.latency_hist_seqr",
182 .name(pName +
csprintf(
".%s.latency_hist_coalsr",
190 .name(pName +
csprintf(
".%s.hit_latency_hist_seqr",
198 .name(pName +
csprintf(
".%s.miss_latency_hist_seqr",
206 .name(pName +
csprintf(
".%s.miss_latency_hist_coalsr",
212 for (
int i = 0;
i < MachineType_NUM;
i++) {
216 .name(pName +
csprintf(
".%s.hit_mach_latency_hist_seqr",
224 .name(pName +
csprintf(
".%s.miss_mach_latency_hist_seqr",
232 .name(pName +
csprintf(
".%s.miss_mach_latency_hist_coalsr",
241 ".%s.miss_latency_hist_seqr.issue_to_initial_request",
250 ".%s.miss_latency_hist_coalsr.issue_to_initial_request",
258 .name(pName +
csprintf(
".%s.miss_latency_hist_seqr.initial_to_forward",
266 .name(pName +
csprintf(
".%s.miss_latency_hist_coalsr.initial_to_forward",
275 ".%s.miss_latency_hist_seqr.forward_to_first_response",
284 ".%s.miss_latency_hist_coalsr.forward_to_first_response",
293 ".%s.miss_latency_hist_seqr.first_response_to_completion",
302 ".%s.miss_latency_hist_coalsr.first_response_to_completion",
308 .
name(pName +
csprintf(
".%s.incomplete_times_seqr", MachineType(
i)))
313 for (
int i = 0;
i < RubyRequestType_NUM;
i++) {
318 for (
int j = 0;
j < MachineType_NUM;
j++) {
322 .name(pName +
csprintf(
".%s.%s.hit_type_mach_latency_hist_seqr",
323 RubyRequestType(
i), MachineType(
j)))
330 .name(pName +
csprintf(
".%s.%s.miss_type_mach_latency_hist_seqr",
331 RubyRequestType(
i), MachineType(
j)))
338 .name(pName +
csprintf(
".%s.%s.miss_type_mach_latency_hist_coalsr",
339 RubyRequestType(
i), MachineType(
j)))
357 for (uint32_t
i = 0;
i < MachineType_NUM;
i++) {
358 for (map<uint32_t, AbstractController*>::iterator it =
371 for (uint32_t
i = 0;
i < MachineType_NUM;
i++) {
372 for (map<uint32_t, AbstractController*>::iterator it =
390 for (uint32_t
i = 0;
i < MachineType_NUM;
i++) {
391 for (map<uint32_t, AbstractController*>::iterator it =
404 for (uint32_t
j = 0;
j < RubyRequestType_NUM; ++
j) {
414 for (uint32_t
j = 0;
j < MachineType_NUM; ++
j) {
426 getForwardRequestToFirstResponseHist(MachineType(
j)));
429 getFirstResponseToCompletionDelayHist(
436 for (uint32_t
j = 0;
j < RubyRequestType_NUM;
j++) {
437 for (uint32_t
k = 0;
k < MachineType_NUM;
k++) {
453 for (uint32_t
j = 0;
j < RubyRequestType_NUM; ++
j) {
461 for (uint32_t
j = 0;
j < MachineType_NUM; ++
j) {
471 getForwardRequestToFirstResponseHist(MachineType(
j)));
474 getFirstResponseToCompletionDelayHist(
479 for (uint32_t
j = 0;
j < RubyRequestType_NUM;
j++) {
480 for (uint32_t
k = 0;
k < MachineType_NUM;
k++) {
494 if (msg.
getType() != RubyRequestType_IFETCH) {
Stats::Histogram & getLatencyHist()
Stats::Histogram & getIssueToInitialDelayHist(uint32_t t) const
const FlagsType pdf
Print the percent of the total that this entry represents.
Stats::Histogram & getMissLatencyHist()
Stats::Scalar m_IncompleteTimesSeqr[MachineType_NUM]
Stats::Histogram & getHitTypeLatencyHist(uint32_t t)
Stats::Histogram m_hitLatencyHistSeqr
Histogram for holding latency profile of all requests that hit in the controller connected to this se...
std::vector< Stats::Histogram * > m_hitMachLatencyHistSeqr
Histograms for profiling the latencies for requests that did not required external messages...
std::vector< Stats::Histogram * > m_FirstResponseToCompletionDelayHistSeqr
std::vector< Stats::Histogram * > m_missTypeLatencyHistCoalsr
AddressProfiler * m_address_profiler_ptr
Stats::Histogram & getTypeLatencyHist(uint32_t t)
std::vector< Stats::Histogram * > m_typeLatencyHistCoalsr
std::vector< Stats::Histogram * > m_IssueToInitialDelayHistCoalsr
std::vector< Stats::Histogram * > m_hitTypeLatencyHistSeqr
Stats::Histogram & getMissTypeMachLatencyHist(uint32_t r, uint32_t t) const
Stats::Histogram & getMissTypeLatencyHist(uint32_t t)
const RubyRequestType & getType() const
Histogram & init(size_type size)
Set the parameters of this histogram.
Stats::Histogram & getHitTypeMachLatencyHist(uint32_t r, uint32_t t)
void setHotLines(bool hot_lines)
Derived & flags(Flags _flags)
Set the flags and marks this stat to print at the end of simulation.
std::vector< Stats::Histogram * > delayVCHistogram
std::vector< Stats::Histogram * > m_typeLatencyHistSeqr
std::vector< Stats::Histogram * > m_missTypeLatencyHistSeqr
Stats::Histogram & getMissMachLatencyHist(uint32_t t) const
Stats::Histogram delayHistogram
std::vector< Stats::Histogram * > m_ForwardToFirstResponseDelayHistCoalsr
std::string csprintf(const char *format, const Args &...args)
void addAddressTraceSample(const RubyRequest &msg, NodeID id)
Addr getLineAddress() const
std::vector< std::vector< Stats::Histogram * > > m_hitTypeMachLatencyHistSeqr
Stats::Histogram m_outstandReqHistSeqr
Histogram for number of outstanding requests per cycle.
Stats::Histogram & getOutstandReqHist()
std::vector< Stats::Histogram * > m_FirstResponseToCompletionDelayHistCoalsr
Stats::Histogram & getIssueToInitialDelayHist(uint32_t t) const
Stats::Histogram & getHitLatencyHist()
Stats::Histogram & getLatencyHist()
const FlagsType oneline
Print all values on a single line.
std::vector< std::map< uint32_t, AbstractController * > > m_abstract_controls
Stats::Histogram & getDelayVCHist(uint32_t index)
std::vector< std::vector< Stats::Histogram * > > m_missTypeMachLatencyHistSeqr
Stats::Histogram & getHitMachLatencyHist(uint32_t t)
const RubyAccessMode & getAccessMode() const
std::vector< Stats::Histogram * > m_InitialToForwardDelayHistSeqr
Stats::Histogram m_missLatencyHistSeqr
Histogram for holding latency profile of all requests that miss in the controller connected to this s...
void regStats(const std::string &name)
RubySystem * m_ruby_system
Stats::Histogram & getInitialToForwardDelayHist(const MachineType t) const
std::vector< Stats::Histogram * > m_InitialToForwardDelayHistCoalsr
Stats::Histogram & getMissTypeMachLatencyHist(uint32_t r, uint32_t t) const
Stats::Histogram & getInitialToForwardDelayHist(const MachineType t) const
const uint32_t m_num_vnets
Stats::Histogram & getOutstandReqHist()
virtual Sequencer * getCPUSequencer() const =0
void setAllInstructions(bool all_instructions)
Stats::Histogram m_outstandReqHistCoalsr
Derived & name(const std::string &name)
Set the name and marks this stat to print at the end of simulation.
Stats::Histogram & getMissLatencyHist()
Stats::Histogram & getTypeLatencyHist(uint32_t t)
Stats::Counter getIncompleteTimes(const MachineType t) const
std::vector< Stats::Histogram * > m_ForwardToFirstResponseDelayHistSeqr
void add(DistBase &d)
Add the argument distribution to the this distribution.
Stats::Histogram & getDelayHist()
Stats::Histogram m_latencyHistCoalsr
virtual GPUCoalescer * getGPUCoalescer() const =0
const bool m_all_instructions
AddressProfiler * m_inst_profiler_ptr
Addr getProgramCounter() const
Stats::Histogram & getMissTypeLatencyHist(uint32_t t)
Derived & desc(const std::string &_desc)
Set the description and marks this stat to print at the end of simulation.
std::vector< Stats::Histogram * > m_missMachLatencyHistCoalsr
std::vector< std::vector< Stats::Histogram * > > m_missTypeMachLatencyHistCoalsr
Stats::Histogram m_latencyHistSeqr
Histogram for holding latency profile of all requests.
Stats::Histogram & getMissMachLatencyHist(uint32_t t) const
const FlagsType nozero
Don't print if this is zero.
std::vector< Stats::Histogram * > m_IssueToInitialDelayHistSeqr
Histograms for recording the breakdown of miss latency.
Stats::Histogram m_missLatencyHistCoalsr
Profiler(const RubySystemParams *params, RubySystem *rs)
std::vector< Stats::Histogram * > m_missMachLatencyHistSeqr
Histograms for profiling the latencies for requests that required external messages.
void regStats(const std::string &name)