29 #ifndef __MEM_RUBY_SYSTEM_SEQUENCER_HH__
30 #define __MEM_RUBY_SYSTEM_SEQUENCER_HH__
33 #include <unordered_map>
35 #include "mem/protocol/MachineType.hh"
36 #include "mem/protocol/RubyRequestType.hh"
37 #include "mem/protocol/SequencerRequestType.hh"
41 #include "params/RubySequencer.hh"
72 const bool externalHit =
false,
73 const MachineType mach = MachineType_NUM,
80 const bool externalHit =
false,
81 const MachineType mach = MachineType_NUM,
96 void print(std::ostream& out)
const;
156 const MachineType mach,
const bool externalHit,
157 const Cycles initialRequestTime,
158 const Cycles forwardRequestTime,
159 const Cycles firstResponseTime);
162 const MachineType respondingMach,
163 bool isExternalHit,
Cycles issuedTime,
164 Cycles initialRequestTime,
249 const char *
description()
const {
return "Sequencer deadlock check"; }
263 #endif // __MEM_RUBY_SYSTEM_SEQUENCER_HH__
Stats::Histogram & getIssueToInitialDelayHist(uint32_t t) const
Stats::Scalar m_store_waiting_on_load
Counters for recording aliasing information.
Stats::Histogram & getMissLatencyHist()
Stats::Histogram & getHitTypeLatencyHist(uint32_t t)
int m_max_outstanding_requests
void resetStats()
Reset statistics associated with this object.
void hitCallback(SequencerRequest *request, DataBlock &data, bool llscSuccess, const MachineType mach, const bool externalHit, const Cycles initialRequestTime, const Cycles forwardRequestTime, const Cycles firstResponseTime)
Cycles is a wrapper class for representing cycle counts, i.e.
SequencerWakeupEvent deadlockCheckEvent
void print(std::ostream &out) const
std::vector< Stats::Histogram * > m_missTypeLatencyHist
Stats::Histogram & getTypeLatencyHist(uint32_t t)
Stats::Histogram & getMissTypeMachLatencyHist(uint32_t r, uint32_t t) const
bool scheduled() const
Determine if the current event is scheduled.
std::vector< Stats::Histogram * > m_FirstResponseToCompletionDelayHist
RequestStatus insertRequest(PacketPtr pkt, RubyRequestType request_type)
void recordRequestType(SequencerRequestType requestType)
Stats::Histogram m_missLatencyHist
Histogram for holding latency profile of all requests that miss in the controller connected to this s...
Stats::Histogram m_latencyHist
Histogram for holding latency profile of all requests.
Stats::Histogram & getHitTypeMachLatencyHist(uint32_t r, uint32_t t)
CacheMemory * m_dataCache_ptr
void recordMissLatency(const Cycles t, const RubyRequestType type, const MachineType respondingMach, bool isExternalHit, Cycles issuedTime, Cycles initialRequestTime, Cycles forwardRequestTime, Cycles firstResponseTime, Cycles completionTime)
Cycles m_inst_cache_hit_latency
std::vector< Stats::Histogram * > m_typeLatencyHist
RequestTable m_readRequestTable
Sequencer * m_sequencer_ptr
This is a simple scalar statistic, like a counter.
Stats::Histogram m_outstandReqHist
Histogram for number of outstanding requests per cycle.
void deschedule(Event &event)
std::vector< Stats::Histogram * > m_ForwardToFirstResponseDelayHist
CacheMemory * m_instCache_ptr
double Counter
All counters are of 64-bit values.
std::vector< Stats::Histogram * > m_InitialToForwardDelayHist
RequestTable m_writeRequestTable
Stats::Histogram & getMissMachLatencyHist(uint32_t t) const
bool m_deadlock_check_scheduled
void invalidateSC(Addr address)
SequencerWakeupEvent(Sequencer *_seq)
void evictionCallback(Addr address)
std::vector< Stats::Histogram * > m_hitTypeLatencyHist
std::vector< Stats::Histogram * > m_IssueToInitialDelayHist
Histograms for recording the breakdown of miss latency.
Stats::Histogram & getOutstandReqHist()
Stats::Histogram & getHitLatencyHist()
Stats::Histogram & getLatencyHist()
bool handleLlsc(Addr address, SequencerRequest *request)
Stats::Histogram & getHitMachLatencyHist(uint32_t t)
std::vector< Stats::Histogram * > m_missMachLatencyHist
Histograms for profiling the latencies for requests that required external messages.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
void issueRequest(PacketPtr pkt, RubyRequestType type)
Sequencer & operator=(const Sequencer &obj)
A Packet is used to encapsulate a transfer between two objects in the memory system (e...
Stats::Histogram & getInitialToForwardDelayHist(const MachineType t) const
const char * description() const
Return a C string describing the event.
bool isDeadlockEventScheduled() const
std::vector< std::vector< Stats::Histogram * > > m_missTypeMachLatencyHist
std::vector< Stats::Counter > m_IncompleteTimes
void regStats()
Register statistics for this object.
std::unordered_map< Addr, SequencerRequest * > RequestTable
Stats::Counter getIncompleteTimes(const MachineType t) const
Cycles m_data_cache_hit_latency
Stats::Histogram & getFirstResponseToCompletionDelayHist(const MachineType t) const
void descheduleDeadlockEvent()
bool m_runningGarnetStandalone
Stats::Histogram & getForwardRequestToFirstResponseHist(const MachineType t) const
std::ostream & operator<<(std::ostream &out, const SequencerRequest &obj)
Stats::Scalar m_store_waiting_on_store
Stats::Scalar m_load_waiting_on_load
std::vector< Stats::Histogram * > m_hitMachLatencyHist
Histograms for profiling the latencies for requests that did not required external messages...
Stats::Histogram & getMissTypeLatencyHist(uint32_t t)
Cycles m_deadlock_threshold
RubySequencerParams Params
void readCallback(Addr address, DataBlock &data, const bool externalHit=false, const MachineType mach=MachineType_NUM, const Cycles initialRequestTime=Cycles(0), const Cycles forwardRequestTime=Cycles(0), const Cycles firstResponseTime=Cycles(0))
RequestStatus makeRequest(PacketPtr pkt)
SequencerRequest(PacketPtr _pkt, RubyRequestType _m_type, Cycles _issue_time)
void writeCallback(Addr address, DataBlock &data, const bool externalHit=false, const MachineType mach=MachineType_NUM, const Cycles initialRequestTime=Cycles(0), const Cycles forwardRequestTime=Cycles(0), const Cycles firstResponseTime=Cycles(0))
Stats::Histogram m_hitLatencyHist
Histogram for holding latency profile of all requests that hit in the controller connected to this se...
void checkCoherence(Addr address)
Stats::Scalar m_load_waiting_on_store
int outstandingCount() const
std::vector< std::vector< Stats::Histogram * > > m_hitTypeMachLatencyHist
Sequencer(const Params *)