diff options
Diffstat (limited to 'src/mem/ruby/system')
-rw-r--r-- | src/mem/ruby/system/Sequencer.cc | 7 | ||||
-rw-r--r-- | src/mem/ruby/system/Sequencer.hh | 21 |
2 files changed, 17 insertions, 11 deletions
diff --git a/src/mem/ruby/system/Sequencer.cc b/src/mem/ruby/system/Sequencer.cc index 54fb83dd0..5eacc976a 100644 --- a/src/mem/ruby/system/Sequencer.cc +++ b/src/mem/ruby/system/Sequencer.cc @@ -133,6 +133,11 @@ Sequencer::wakeup() } } +void Sequencer::clearStats() +{ + m_outstandReqHist.clear(); +} + void Sequencer::printStats(ostream & out) const { @@ -268,7 +273,7 @@ Sequencer::insertRequest(PacketPtr pkt, RubyRequestType request_type) } } - g_system_ptr->getProfiler()->sequencerRequests(m_outstanding_count); + m_outstandReqHist.add(m_outstanding_count); assert(m_outstanding_count == (m_writeRequestTable.size() + m_readRequestTable.size())); diff --git a/src/mem/ruby/system/Sequencer.hh b/src/mem/ruby/system/Sequencer.hh index 782b776f9..058edb9ce 100644 --- a/src/mem/ruby/system/Sequencer.hh +++ b/src/mem/ruby/system/Sequencer.hh @@ -68,6 +68,8 @@ class Sequencer : public RubyPort void printProgress(std::ostream& out) const; + void clearStats(); + void writeCallback(const Address& address, DataBlock& data); void writeCallback(const Address& address, @@ -97,17 +99,12 @@ class Sequencer : public RubyPort RequestStatus makeRequest(PacketPtr pkt); bool empty() const; int outstandingCount() const { return m_outstanding_count; } - bool - isDeadlockEventScheduled() const - { - return deadlockCheckEvent.scheduled(); - } - void - descheduleDeadlockEvent() - { - deschedule(deadlockCheckEvent); - } + bool isDeadlockEventScheduled() const + { return deadlockCheckEvent.scheduled(); } + + void descheduleDeadlockEvent() + { deschedule(deadlockCheckEvent); } void print(std::ostream& out) const; void printStats(std::ostream& out) const; @@ -119,6 +116,7 @@ class Sequencer : public RubyPort void invalidateSC(const Address& address); void recordRequestType(SequencerRequestType requestType); + Histogram& getOutstandReqHist() { return m_outstandReqHist; } private: void issueRequest(PacketPtr pkt, RubyRequestType type); @@ -160,6 +158,9 @@ class Sequencer : public RubyPort bool m_usingNetworkTester; + //! Histogram for number of outstanding requests per cycle. + Histogram m_outstandReqHist; + class SequencerWakeupEvent : public Event { private: |