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)
102 const bool externalHit =
false,
103 const MachineType mach = MachineType_NUM,
110 const bool externalHit =
false,
111 const MachineType mach = MachineType_NUM,
117 virtual bool empty()
const;
126 virtual void print(std::ostream& out)
const;
186 const MachineType mach,
const bool externalHit,
187 const Cycles initialRequestTime,
188 const Cycles forwardRequestTime,
189 const Cycles firstResponseTime);
192 const MachineType respondingMach,
193 bool isExternalHit,
Cycles initialRequestTime,
194 Cycles forwardRequestTime,
195 Cycles firstResponseTime);
208 RubyRequestType primary_type,
209 RubyRequestType secondary_type);
317 #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.
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 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 hitCallback(SequencerRequest *srequest, DataBlock &data, bool llscSuccess, const MachineType mach, const bool externalHit, const Cycles initialRequestTime, const Cycles forwardRequestTime, const Cycles firstResponseTime)
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 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))
void llscClearMonitor(const Addr)
Removes the cache line address from the global monitor.
void recordRequestType(SequencerRequestType requestType)
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.
CacheMemory * m_instCache_ptr
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.
void regStats() override
Callback to set stat parameters.
std::vector< Stats::Histogram * > m_InitialToForwardDelayHist
Cycles m_deadlock_threshold
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)
Sequencer(const Params *)
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 Wed Sep 30 2020 14:02:14 for gem5 by doxygen 1.8.17