diff options
author | Nilay Vaish <nilay@cs.wisc.edu> | 2013-02-10 21:26:22 -0600 |
---|---|---|
committer | Nilay Vaish <nilay@cs.wisc.edu> | 2013-02-10 21:26:22 -0600 |
commit | bc1daae7fd528ca72ba14d669a0d00243f553be5 (patch) | |
tree | fbf754546eb68c2944feda809d664e687c5dbb08 /src/mem/ruby/slicc_interface/AbstractController.hh | |
parent | a49b1df3f0d1e1c9ce46675d9fce7787d98caca7 (diff) | |
download | gem5-bc1daae7fd528ca72ba14d669a0d00243f553be5.tar.xz |
ruby: modifies histogram add() function
This patch modifies the Histogram class' add() function so that it can add
linear histograms as well. The function assumes that the left end point of
the ranges of the two histograms are the same. It also assumes that when
the ranges of the two histogram are changed to accomodate an element not in
the range, the factor used in changing the range is same for both the
histograms.
This function is then used in removing one of the calls to the global
profiler*. The histograms for recording the delays incurred in processing
different requests are now maintained by the controllers. The profiler
adds these histograms when it needs to print the stats.
Diffstat (limited to 'src/mem/ruby/slicc_interface/AbstractController.hh')
-rw-r--r-- | src/mem/ruby/slicc_interface/AbstractController.hh | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/mem/ruby/slicc_interface/AbstractController.hh b/src/mem/ruby/slicc_interface/AbstractController.hh index 0e3af44a1..c452da723 100644 --- a/src/mem/ruby/slicc_interface/AbstractController.hh +++ b/src/mem/ruby/slicc_interface/AbstractController.hh @@ -36,6 +36,7 @@ #include "mem/ruby/common/Address.hh" #include "mem/ruby/common/Consumer.hh" #include "mem/ruby/common/DataBlock.hh" +#include "mem/ruby/common/Histogram.hh" #include "mem/ruby/network/Network.hh" #include "mem/ruby/recorder/CacheRecorder.hh" #include "mem/ruby/system/MachineID.hh" @@ -92,9 +93,15 @@ class AbstractController : public ClockedObject, public Consumer const std::map<std::string, uint64_t>& getRequestProfileMap() const { return m_requestProfileMap; } + Histogram& getDelayHist() { return m_delayHistogram; } + Histogram& getDelayVCHist(uint32_t index) + { return m_delayVCHistogram[index]; } + protected: //! Profiles original cache requests including PUTs void profileRequest(const std::string &request); + //! Profiles the delay associated with messages. + void profileMsgDelay(uint32_t virtualNetwork, Time delay); protected: int m_transitions_per_cycle; @@ -121,6 +128,11 @@ class AbstractController : public ClockedObject, public Consumer //! call requisite function for updating the count. std::map<std::string, uint64_t> m_requestProfileMap; uint64_t m_request_count; + + //! Histogram for profiling delay for the messages this controller + //! cares for + Histogram m_delayHistogram; + std::vector<Histogram> m_delayVCHistogram; }; #endif // __MEM_RUBY_SLICC_INTERFACE_ABSTRACTCONTROLLER_HH__ |