Go to the documentation of this file.
41 #ifndef __MEM_RUBY_SYSTEM_SEQUENCER_HH__
42 #define __MEM_RUBY_SYSTEM_SEQUENCER_HH__
46 #include <unordered_map>
49 #include "mem/ruby/protocol/MachineType.hh"
50 #include "mem/ruby/protocol/RubyRequestType.hh"
51 #include "mem/ruby/protocol/SequencerRequestType.hh"
54 #include "params/RubySequencer.hh"
63 RubyRequestType _m_second_type,
Cycles _issue_time)
101 const bool externalHit =
false,
102 const MachineType mach = MachineType_NUM,
106 const bool noCoales =
false);
117 const bool externalHit =
false,
118 const MachineType mach = MachineType_NUM,
124 virtual bool empty()
const;
133 virtual void print(std::ostream& out)
const;
193 const MachineType mach,
const bool externalHit,
194 const Cycles initialRequestTime,
195 const Cycles forwardRequestTime,
196 const Cycles firstResponseTime,
197 const bool was_coalesced);
200 const MachineType respondingMach,
201 bool isExternalHit,
Cycles initialRequestTime,
202 Cycles forwardRequestTime,
203 Cycles firstResponseTime);
216 RubyRequestType primary_type,
217 RubyRequestType secondary_type);
324 #endif // __MEM_RUBY_SYSTEM_SEQUENCER_HH__
Stats::Histogram & getLatencyHist()
bool scheduled() const
Determine if the current event is scheduled.
std::vector< Stats::Histogram * > m_ForwardToFirstResponseDelayHist
Stats::Counter getIncompleteTimes(const MachineType t) const
Stats::Histogram & getTypeLatencyHist(uint32_t t)
Stats::Histogram & getMissMachLatencyHist(uint32_t t) const
Stats::Histogram & getOutstandReqHist()
Stats::Histogram & getHitLatencyHist()
Stats::Histogram & getMissTypeMachLatencyHist(uint32_t r, uint32_t t) const
virtual int functionalWrite(Packet *func_pkt) override
Stats::Histogram m_outstandReqHist
Histogram for number of outstanding requests per cycle.
Stats::Histogram & getHitMachLatencyHist(uint32_t t)
virtual bool empty() const
std::vector< Stats::Histogram * > m_missMachLatencyHist
Histograms for profiling the latencies for requests that required external messages.
void resetStats() override
Callback to reset stats.
int m_max_outstanding_requests
void writeCallbackScFail(Addr address, DataBlock &data)
Proxy function to writeCallback that first invalidates the line address in the local monitor.
Sequencer(const Params &)
std::vector< Stats::Histogram * > m_hitTypeLatencyHist
Stats::Histogram & getForwardRequestToFirstResponseHist(const MachineType t) const
std::vector< Stats::Histogram * > m_IssueToInitialDelayHist
Histograms for recording the breakdown of miss latency.
Stats::Histogram & getFirstResponseToCompletionDelayHist(const MachineType t) const
bool isDeadlockEventScheduled() const override
Cycles m_data_cache_hit_latency
CacheMemory * m_dataCache_ptr
RequestStatus makeRequest(PacketPtr pkt) override
void writeUniqueCallback(Addr address, DataBlock &data)
void deschedule(Event &event)
std::unordered_map< Addr, std::list< SequencerRequest > > m_RequestTable
Stats::Histogram m_hitLatencyHist
Histogram for holding latency profile of all requests that hit in the controller connected to this se...
Stats::Histogram m_latencyHist
Histogram for holding latency profile of all requests.
std::vector< std::vector< Stats::Histogram * > > m_missTypeMachLatencyHist
bool m_runningGarnetStandalone
SequencerRequest(PacketPtr _pkt, RubyRequestType _m_type, RubyRequestType _m_second_type, Cycles _issue_time)
Stats::Histogram & getMissTypeLatencyHist(uint32_t t)
RubyRequestType m_second_type
virtual void print(std::ostream &out) const
virtual RequestStatus insertRequest(PacketPtr pkt, RubyRequestType primary_type, RubyRequestType secondary_type)
void recordMissLatency(SequencerRequest *srequest, bool llscSuccess, const MachineType respondingMach, bool isExternalHit, Cycles initialRequestTime, Cycles forwardRequestTime, Cycles firstResponseTime)
bool llscStoreConditional(const Addr)
Searches for cache line address in the global monitor tagged with this Sequencer object's version id.
Stats::Histogram & getIssueToInitialDelayHist(uint32_t t) const
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))
void descheduleDeadlockEvent() override
bool m_deadlock_check_scheduled
Stats::Histogram m_missLatencyHist
Histogram for holding latency profile of all requests that miss in the controller connected to this s...
void llscLoadLinked(const Addr)
Places the cache line address into the global monitor tagged with this Sequencer object's version id.
Stats::Histogram & getHitTypeMachLatencyHist(uint32_t r, uint32_t t)
EventFunctionWrapper deadlockCheckEvent
void evictionCallback(Addr address)
std::vector< Stats::Counter > m_IncompleteTimes
void llscClearMonitor(const Addr)
Removes the cache line address from the global monitor.
void recordRequestType(SequencerRequestType requestType)
void hitCallback(SequencerRequest *srequest, DataBlock &data, bool llscSuccess, const MachineType mach, const bool externalHit, const Cycles initialRequestTime, const Cycles forwardRequestTime, const Cycles firstResponseTime, const bool was_coalesced)
bool functionalWrite(Packet *func_pkt) const
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
std::vector< std::vector< Stats::Histogram * > > m_hitTypeMachLatencyHist
bool llscCheckMonitor(const Addr)
Searches for cache line address in the global monitor tagged with this Sequencer object's version id.
Stats::Histogram & getMissLatencyHist()
int outstandingCount() const override
double Counter
All counters are of 64-bit values.
std::vector< Stats::Histogram * > m_hitMachLatencyHist
Histograms for profiling the latencies for requests that did not required external messages.
std::vector< Stats::Histogram * > m_InitialToForwardDelayHist
Cycles m_deadlock_threshold
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), const bool noCoales=false)
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
std::vector< Stats::Histogram * > m_typeLatencyHist
Cycles is a wrapper class for representing cycle counts, i.e.
void issueRequest(PacketPtr pkt, RubyRequestType type)
bool trySatisfyFunctional(PacketPtr other)
Check a functional request against a memory value stored in another packet (i.e.
Sequencer & operator=(const Sequencer &obj)
Cycles m_inst_cache_hit_latency
std::ostream & operator<<(std::ostream &out, const SequencerRequest &obj)
void llscClearLocalMonitor()
Removes all addresses from the local monitor.
Stats::Histogram & getHitTypeLatencyHist(uint32_t t)
std::vector< Stats::Histogram * > m_FirstResponseToCompletionDelayHist
std::vector< Stats::Histogram * > m_missTypeLatencyHist
Stats::Histogram & getInitialToForwardDelayHist(const MachineType t) const
Generated on Tue Mar 23 2021 19:41:28 for gem5 by doxygen 1.8.17