diff --git a/src/mem/ruby/profiler/Profiler.hh b/src/mem/ruby/profiler/Profiler.hh --- a/src/mem/ruby/profiler/Profiler.hh +++ b/src/mem/ruby/profiler/Profiler.hh @@ -51,6 +51,7 @@ #include #include "base/hashmap.hh" +#include "base/statistics.hh" #include "mem/protocol/AccessType.hh" #include "mem/protocol/GenericMachineType.hh" #include "mem/protocol/GenericRequestType.hh" @@ -96,9 +97,6 @@ void addAddressTraceSample(const RubyRequest& msg, NodeID id); void profileRequest(const std::string& requestStr); - void profileSharing(const Address& addr, AccessType type, - NodeID requestor, const Set& sharers, - const Set& owner); void profileMulticastRetry(const Address& addr, int count); @@ -109,26 +107,19 @@ void profileOutstandingRequest(int outstanding) { - m_outstanding_requests.add(outstanding); + m_outstanding_requests.sample(outstanding); } void profileOutstandingPersistentRequest(int outstanding) { - m_outstanding_persistent_requests.add(outstanding); - } - - void - profileAverageLatencyEstimate(int latency) - { - m_average_latency_estimate.add(latency); + m_outstanding_persistent_requests.sample(outstanding); } void recordPrediction(bool wasGood, bool wasPredicted); void startTransaction(int cpu); void endTransaction(int cpu); - void profilePFWait(Time waitTime); void controllerBusy(MachineID machID); void bankBusy(); @@ -149,11 +140,7 @@ Time firstResponseTime, Time completionTime); - void swPrefetchLatency(Time t, - RubyRequestType type, - const GenericMachineType respondingMach); - - void sequencerRequests(int num) { m_sequencer_requests.add(num); } + void sequencerRequests(int num) { m_sequencer_requests.sample(num); } void profileMsgDelay(int virtualNetwork, int delayCycles); @@ -178,6 +165,8 @@ Profiler(const Profiler& obj); Profiler& operator=(const Profiler& obj); + void regStats(); + AddressProfiler* m_address_profiler_ptr; AddressProfiler* m_inst_profiler_ptr; @@ -190,51 +179,34 @@ Time m_ruby_start; time_t m_real_time_start_time; - std::vector > m_busyControllerCount; - integer_t m_busyBankCount; - Histogram m_multicast_retry_histogram; + std::vector > m_busyControllerCount; + Stats::Scalar m_busyBankCount; - Histogram m_filter_action_histogram; - Histogram m_tbeProfile; + Stats::Histogram m_sequencer_requests; - Histogram m_sequencer_requests; - Histogram m_read_sharing_histogram; - Histogram m_write_sharing_histogram; - Histogram m_all_sharing_histogram; - int64 m_cache_to_cache; - int64 m_memory_to_cache; + std::vector m_missLatencyHistograms; + std::vector m_machLatencyHistograms; + std::vector< std::vector > m_missMachLatencyHistograms; + Stats::Histogram m_allMissLatencyHistogram; - Histogram m_prefetchWaitHistogram; + Stats::Histogram m_wCCIssueToInitialRequestHistogram; + Stats::Histogram m_wCCInitialRequestToForwardRequestHistogram; + Stats::Histogram m_wCCForwardRequestToFirstResponseHistogram; + Stats::Histogram m_wCCFirstResponseToCompleteHistogram; + Stats::Scalar m_wCCIncompleteTimes; - std::vector m_missLatencyHistograms; - std::vector m_machLatencyHistograms; - std::vector< std::vector > m_missMachLatencyHistograms; - Histogram m_wCCIssueToInitialRequestHistogram; - Histogram m_wCCInitialRequestToForwardRequestHistogram; - Histogram m_wCCForwardRequestToFirstResponseHistogram; - Histogram m_wCCFirstResponseToCompleteHistogram; - int64 m_wCCIncompleteTimes; - Histogram m_dirIssueToInitialRequestHistogram; - Histogram m_dirInitialRequestToForwardRequestHistogram; - Histogram m_dirForwardRequestToFirstResponseHistogram; - Histogram m_dirFirstResponseToCompleteHistogram; - int64 m_dirIncompleteTimes; + Stats::Histogram m_dirIssueToInitialRequestHistogram; + Stats::Histogram m_dirInitialRequestToForwardRequestHistogram; + Stats::Histogram m_dirForwardRequestToFirstResponseHistogram; + Stats::Histogram m_dirFirstResponseToCompleteHistogram; + Stats::Scalar m_dirIncompleteTimes; - Histogram m_allMissLatencyHistogram; + Stats::Histogram m_delayedCyclesHistogram; + Stats::Histogram m_delayedCyclesNonPFHistogram; + std::vector m_delayedCyclesVCHistograms; - Histogram m_allSWPrefetchLatencyHistogram; - Histogram m_SWPrefetchL2MissLatencyHistogram; - std::vector m_SWPrefetchLatencyHistograms; - std::vector m_SWPrefetchMachLatencyHistograms; - - Histogram m_delayedCyclesHistogram; - Histogram m_delayedCyclesNonPFHistogram; - std::vector m_delayedCyclesVCHistograms; - - Histogram m_outstanding_requests; - Histogram m_outstanding_persistent_requests; - - Histogram m_average_latency_estimate; + Stats::Histogram m_outstanding_requests; + Stats::Histogram m_outstanding_persistent_requests; m5::hash_set
m_watch_address_set; // counts all initiated cache request including PUTs diff --git a/src/mem/ruby/profiler/Profiler.cc b/src/mem/ruby/profiler/Profiler.cc --- a/src/mem/ruby/profiler/Profiler.cc +++ b/src/mem/ruby/profiler/Profiler.cc @@ -92,6 +92,8 @@ m_inst_profiler_ptr->setHotLines(m_hot_lines); m_inst_profiler_ptr->setAllInstructions(m_all_instructions); } + + regStats(); } Profiler::~Profiler() @@ -125,7 +127,7 @@ << process_memory_resident() / process_memory_total() << endl; } - out << "miss_latency: " << m_allMissLatencyHistogram << endl; + // out << "miss_latency: " << m_allMissLatencyHistogram << endl; out << endl; @@ -249,7 +251,7 @@ MachineID machID; machID.type = (MachineType)i; machID.num = j; - out << machID << ":" << m_busyControllerCount[i][j] << " "; + out << machID << ":" << m_busyControllerCount[i][j]->value() << " "; if ((j + 1) % 8 == 0) { out << endl; } @@ -258,17 +260,20 @@ } out << endl; - out << "Busy Bank Count:" << m_busyBankCount << endl; + out << "Busy Bank Count:" << m_busyBankCount.value() << endl; out << endl; + /* out << "sequencer_requests_outstanding: " - << m_sequencer_requests << endl; + << m_sequencer_requests.value() << endl; out << endl; + */ } if (!short_stats) { out << "All Non-Zero Cycle Demand Cache Accesses" << endl; out << "----------------------------------------" << endl; + /* out << "miss_latency: " << m_allMissLatencyHistogram << endl; for (int i = 0; i < m_missLatencyHistograms.size(); i++) { if (m_missLatencyHistograms[i].size() > 0) { @@ -282,7 +287,9 @@ << m_machLatencyHistograms[i] << endl; } } + */ + /* out << "miss_latency_wCC_issue_to_initial_request: " << m_wCCIssueToInitialRequestHistogram << endl; out << "miss_latency_wCC_initial_forward_request: " @@ -291,7 +298,9 @@ << m_wCCForwardRequestToFirstResponseHistogram << endl; out << "miss_latency_wCC_first_response_to_completion: " << m_wCCFirstResponseToCompleteHistogram << endl; - out << "imcomplete_wCC_Times: " << m_wCCIncompleteTimes << endl; + */ + out << "imcomplete_wCC_Times: " << m_wCCIncompleteTimes.value() << endl; + /* out << "miss_latency_dir_issue_to_initial_request: " << m_dirIssueToInitialRequestHistogram << endl; out << "miss_latency_dir_initial_forward_request: " @@ -300,8 +309,10 @@ << m_dirForwardRequestToFirstResponseHistogram << endl; out << "miss_latency_dir_first_response_to_completion: " << m_dirFirstResponseToCompleteHistogram << endl; - out << "imcomplete_dir_Times: " << m_dirIncompleteTimes << endl; + */ + out << "imcomplete_dir_Times: " << m_dirIncompleteTimes.value() << endl; + /* for (int i = 0; i < m_missMachLatencyHistograms.size(); i++) { for (int j = 0; j < m_missMachLatencyHistograms[i].size(); j++) { if (m_missMachLatencyHistograms[i][j].size() > 0) { @@ -311,63 +322,15 @@ } } } - - out << endl; - - out << "All Non-Zero Cycle SW Prefetch Requests" << endl; - out << "------------------------------------" << endl; - out << "prefetch_latency: " << m_allSWPrefetchLatencyHistogram << endl; - for (int i = 0; i < m_SWPrefetchLatencyHistograms.size(); i++) { - if (m_SWPrefetchLatencyHistograms[i].size() > 0) { - out << "prefetch_latency_" << RubyRequestType(i) << ": " - << m_SWPrefetchLatencyHistograms[i] << endl; - } - } - for (int i = 0; i < m_SWPrefetchMachLatencyHistograms.size(); i++) { - if (m_SWPrefetchMachLatencyHistograms[i].size() > 0) { - out << "prefetch_latency_" << GenericMachineType(i) << ": " - << m_SWPrefetchMachLatencyHistograms[i] << endl; - } - } - out << "prefetch_latency_L2Miss:" - << m_SWPrefetchL2MissLatencyHistogram << endl; - - if (m_all_sharing_histogram.size() > 0) { - out << "all_sharing: " << m_all_sharing_histogram << endl; - out << "read_sharing: " << m_read_sharing_histogram << endl; - out << "write_sharing: " << m_write_sharing_histogram << endl; - - out << "all_sharing_percent: "; - m_all_sharing_histogram.printPercent(out); - out << endl; - - out << "read_sharing_percent: "; - m_read_sharing_histogram.printPercent(out); - out << endl; - - out << "write_sharing_percent: "; - m_write_sharing_histogram.printPercent(out); - out << endl; - - int64 total_miss = m_cache_to_cache + m_memory_to_cache; - out << "all_misses: " << total_miss << endl; - out << "cache_to_cache_misses: " << m_cache_to_cache << endl; - out << "memory_to_cache_misses: " << m_memory_to_cache << endl; - out << "cache_to_cache_percent: " - << 100.0 * (double(m_cache_to_cache) / double(total_miss)) - << endl; - out << "memory_to_cache_percent: " - << 100.0 * (double(m_memory_to_cache) / double(total_miss)) - << endl; - out << endl; - } - + */ + /* if (m_outstanding_requests.size() > 0) { out << "outstanding_requests: "; m_outstanding_requests.printPercent(out); out << endl; out << endl; } + */ } if (!short_stats) { @@ -393,8 +356,6 @@ } out << endl; - out << "filter_action: " << m_filter_action_histogram << endl; - if (!m_all_instructions) { m_address_profiler_ptr->printStats(out); } @@ -404,6 +365,7 @@ } out << endl; + /* out << "Message Delayed Cycles" << endl; out << "----------------------" << endl; out << "Total_delay_cycles: " << m_delayedCyclesHistogram << endl; @@ -413,6 +375,7 @@ out << " virtual_network_" << i << "_delay_cycles: " << m_delayedCyclesVCHistograms[i] << endl; } + */ printResourceUsage(out); } @@ -441,6 +404,161 @@ } void +Profiler::regStats() +{ + m_busyControllerCount.resize(MachineType_NUM); // all machines + for (int i = 0; i < MachineType_NUM; i++) { + int size = MachineType_base_count((MachineType)i); + m_busyControllerCount[i].resize(size); + for (int j = 0; j < size; j++) { + char name[100]; + sprintf(name,"ruby.%s%i.busyControllerCount", MachineType_to_string(MachineType_from_base_level(i)).c_str(), j); + m_busyControllerCount[i][j] = new Stats::Scalar; + (*m_busyControllerCount[i][j]) + .name(name) + .desc("Number of cycles the controller blocked because it was busy") + ; + } + } + m_busyBankCount + .name("ruby.busyBankCount") + .desc("The number of cycles a memory controller bank is busy") + ; + + m_sequencer_requests + .init(50) + .name("ruby.sequencerRequests") + .desc("Histogram of the number of outstanding requests per cycle") + ; + + m_missLatencyHistograms.resize(RubyRequestType_NUM); + for (int i = 0; i < m_missLatencyHistograms.size(); i++) { + char name[100]; + sprintf(name, "ruby.%s.missLatency",RubyRequestType_to_string((RubyRequestType)i).c_str()); + m_missLatencyHistograms[i] = new Stats::Histogram; + (*m_missLatencyHistograms[i]) + .init(200) + .name(name) + .desc("Histogram of miss latencies for this request type") + ; + } + m_machLatencyHistograms.resize(GenericMachineType_NUM); + for (int i = 0; i < m_machLatencyHistograms.size(); i++) { + char name[100]; + sprintf(name, "ruby.%s.machLatency",GenericMachineType_to_string((GenericMachineType)i).c_str()); + m_machLatencyHistograms[i] = new Stats::Histogram; + (*m_machLatencyHistograms[i]) + .init(200) + .name(name) + .desc("Histogram of miss latencies for this machine type"); + } + m_missMachLatencyHistograms.resize(RubyRequestType_NUM); + for (int i = 0; i < m_missLatencyHistograms.size(); i++) { + m_missMachLatencyHistograms[i].resize(GenericMachineType_NUM); + for (int j = 0; j < m_missMachLatencyHistograms[i].size(); j++) { + char name[200]; + sprintf(name, "ruby.%s.%s.missMachLatency", + RubyRequestType_to_string((RubyRequestType)i).c_str(), + GenericMachineType_to_string((GenericMachineType)j).c_str()); + m_missMachLatencyHistograms[i][j] = new Stats::Histogram; + (*m_missMachLatencyHistograms[i][j]) + .init(200) + .name(name) + .desc("Histogram of miss latencies"); + } + } + m_allMissLatencyHistogram + .init(200) + .name("ruby.missLatency") + .desc("Histogram of all miss latencies") + ; + + m_wCCIssueToInitialRequestHistogram + .init(200) + .name("ruby.wCCIssueToInitialRequestHistogram") + .desc("??") + ; + m_wCCInitialRequestToForwardRequestHistogram + .init(200) + .name("ruby.wCCInitialRequestToForwardRequestHistogram") + .desc("??") + ; + m_wCCForwardRequestToFirstResponseHistogram + .init(200) + .name("ruby.wCCForwardRequestToFirstResponseHistogram") + .desc("??") + ; + m_wCCFirstResponseToCompleteHistogram + .init(200) + .name("ruby.wCCFirstResponseToCompleteHistogram") + .desc("??") + ; + m_wCCIncompleteTimes + .name("ruby.wCCIncompleteTimes") + .desc("??") + ; + + m_dirIssueToInitialRequestHistogram + .init(200) + .name("ruby.dirIssueToInitialRequestHistogram") + .desc("??") + ; + m_dirInitialRequestToForwardRequestHistogram + .init(200) + .name("ruby.dirInitialRequestToForwardRequestHistogram") + .desc("??") + ; + m_dirForwardRequestToFirstResponseHistogram + .init(200) + .name("ruby.dirForwardRequestToFirstResponseHistogram") + .desc("??") + ; + m_dirFirstResponseToCompleteHistogram + .init(200) + .name("ruby.dirFirstResponseToCompleteHistogram") + .desc("??") + ; + m_dirIncompleteTimes + .name("ruby.dirIncompleteTimes") + .desc("??") + ; + + m_delayedCyclesHistogram + .init(50) + .name("ruby.delayedCyclesHistogram") + .desc("??") + ; + m_delayedCyclesNonPFHistogram + .init(50) + .name("ruby.delayedCyclesNonPFHistogram") + .desc("??") + ; + int size = RubySystem::getNetwork()->getNumberOfVirtualNetworks(); + m_delayedCyclesVCHistograms.resize(size); + for (int i = 0; i < size; i++) { + char name[100]; + sprintf(name, "ruby.vc%02i.delayedCyclesHistogram", i); + m_delayedCyclesVCHistograms[i] = new Stats::Histogram; + m_delayedCyclesVCHistograms[i] + ->init(50) + .name(name) + .desc("??") + ; + } + + m_outstanding_requests + .init(50) + .name("ruby.outstandingRequests") + .desc("??") + ; + m_outstanding_persistent_requests + .init(50) + .name("ruby.outstandingRequests") + .desc("??") + ; +} + +void Profiler::clearStats() { m_ruby_start = g_eventQueue_ptr->getTime(); @@ -454,67 +572,45 @@ } } - m_busyControllerCount.resize(MachineType_NUM); // all machines for (int i = 0; i < MachineType_NUM; i++) { int size = MachineType_base_count((MachineType)i); - m_busyControllerCount[i].resize(size); for (int j = 0; j < size; j++) { - m_busyControllerCount[i][j] = 0; + (*m_busyControllerCount[i][j]) = 0; } } m_busyBankCount = 0; - m_delayedCyclesHistogram.clear(); - m_delayedCyclesNonPFHistogram.clear(); + m_delayedCyclesHistogram.reset(); + m_delayedCyclesNonPFHistogram.reset(); int size = RubySystem::getNetwork()->getNumberOfVirtualNetworks(); - m_delayedCyclesVCHistograms.resize(size); for (int i = 0; i < size; i++) { - m_delayedCyclesVCHistograms[i].clear(); + m_delayedCyclesVCHistograms[i]->reset(); } - m_missLatencyHistograms.resize(RubyRequestType_NUM); for (int i = 0; i < m_missLatencyHistograms.size(); i++) { - m_missLatencyHistograms[i].clear(200); + m_missLatencyHistograms[i]->reset(); } - m_machLatencyHistograms.resize(GenericMachineType_NUM+1); for (int i = 0; i < m_machLatencyHistograms.size(); i++) { - m_machLatencyHistograms[i].clear(200); + m_machLatencyHistograms[i]->reset(); } - m_missMachLatencyHistograms.resize(RubyRequestType_NUM); for (int i = 0; i < m_missLatencyHistograms.size(); i++) { - m_missMachLatencyHistograms[i].resize(GenericMachineType_NUM+1); for (int j = 0; j < m_missMachLatencyHistograms[i].size(); j++) { - m_missMachLatencyHistograms[i][j].clear(200); + m_missMachLatencyHistograms[i][j]->reset(); } } - m_allMissLatencyHistogram.clear(200); - m_wCCIssueToInitialRequestHistogram.clear(200); - m_wCCInitialRequestToForwardRequestHistogram.clear(200); - m_wCCForwardRequestToFirstResponseHistogram.clear(200); - m_wCCFirstResponseToCompleteHistogram.clear(200); + m_allMissLatencyHistogram.reset(); + m_wCCIssueToInitialRequestHistogram.reset(); + m_wCCInitialRequestToForwardRequestHistogram.reset(); + m_wCCForwardRequestToFirstResponseHistogram.reset(); + m_wCCFirstResponseToCompleteHistogram.reset(); m_wCCIncompleteTimes = 0; - m_dirIssueToInitialRequestHistogram.clear(200); - m_dirInitialRequestToForwardRequestHistogram.clear(200); - m_dirForwardRequestToFirstResponseHistogram.clear(200); - m_dirFirstResponseToCompleteHistogram.clear(200); + m_dirIssueToInitialRequestHistogram.reset(); + m_dirInitialRequestToForwardRequestHistogram.reset(); + m_dirForwardRequestToFirstResponseHistogram.reset(); + m_dirFirstResponseToCompleteHistogram.reset(); m_dirIncompleteTimes = 0; - m_SWPrefetchLatencyHistograms.resize(RubyRequestType_NUM); - for (int i = 0; i < m_SWPrefetchLatencyHistograms.size(); i++) { - m_SWPrefetchLatencyHistograms[i].clear(200); - } - m_SWPrefetchMachLatencyHistograms.resize(GenericMachineType_NUM+1); - for (int i = 0; i < m_SWPrefetchMachLatencyHistograms.size(); i++) { - m_SWPrefetchMachLatencyHistograms[i].clear(200); - } - m_allSWPrefetchLatencyHistogram.clear(200); - - m_sequencer_requests.clear(); - m_read_sharing_histogram.clear(); - m_write_sharing_histogram.clear(); - m_all_sharing_histogram.clear(); - m_cache_to_cache = 0; - m_memory_to_cache = 0; + m_sequencer_requests.reset(); // clear HashMaps m_requestProfileMap.clear(); @@ -522,8 +618,8 @@ // count requests profiled m_requests = 0; - m_outstanding_requests.clear(); - m_outstanding_persistent_requests.clear(); + m_outstanding_requests.reset(); + m_outstanding_persistent_requests.reset(); // Flush the prefetches through the system - used so that there // are no outstanding requests after stats are cleared @@ -550,39 +646,13 @@ } void -Profiler::profileSharing(const Address& addr, AccessType type, - NodeID requestor, const Set& sharers, - const Set& owner) -{ - Set set_contacted(owner); - if (type == AccessType_Write) { - set_contacted.addSet(sharers); - } - set_contacted.remove(requestor); - int number_contacted = set_contacted.count(); - - if (type == AccessType_Write) { - m_write_sharing_histogram.add(number_contacted); - } else { - m_read_sharing_histogram.add(number_contacted); - } - m_all_sharing_histogram.add(number_contacted); - - if (number_contacted == 0) { - m_memory_to_cache++; - } else { - m_cache_to_cache++; - } -} - -void Profiler::profileMsgDelay(int virtualNetwork, int delayCycles) { assert(virtualNetwork < m_delayedCyclesVCHistograms.size()); - m_delayedCyclesHistogram.add(delayCycles); - m_delayedCyclesVCHistograms[virtualNetwork].add(delayCycles); + m_delayedCyclesHistogram.sample(delayCycles); + m_delayedCyclesVCHistograms[virtualNetwork]->sample(delayCycles); if (virtualNetwork != 0) { - m_delayedCyclesNonPFHistogram.add(delayCycles); + m_delayedCyclesNonPFHistogram.sample(delayCycles); } } @@ -600,13 +670,7 @@ void Profiler::controllerBusy(MachineID machID) { - m_busyControllerCount[(int)machID.type][(int)machID.num]++; -} - -void -Profiler::profilePFWait(Time waitTime) -{ - m_prefetchWaitHistogram.add(waitTime); + (*m_busyControllerCount[(int)machID.type][(int)machID.num])++; } void @@ -621,10 +685,10 @@ RubyRequestType type, const GenericMachineType respondingMach) { - m_allMissLatencyHistogram.add(cycles); - m_missLatencyHistograms[type].add(cycles); - m_machLatencyHistograms[respondingMach].add(cycles); - m_missMachLatencyHistograms[type][respondingMach].add(cycles); + m_allMissLatencyHistogram.sample(cycles); + m_missLatencyHistograms[type]->sample(cycles); + m_machLatencyHistograms[respondingMach]->sample(cycles); + m_missMachLatencyHistograms[type][respondingMach]->sample(cycles); } void @@ -638,16 +702,16 @@ (initialRequestTime <= forwardRequestTime) && (forwardRequestTime <= firstResponseTime) && (firstResponseTime <= completionTime)) { - m_wCCIssueToInitialRequestHistogram.add(initialRequestTime - issuedTime); + m_wCCIssueToInitialRequestHistogram.sample(initialRequestTime - issuedTime); - m_wCCInitialRequestToForwardRequestHistogram.add(forwardRequestTime - - initialRequestTime); + m_wCCInitialRequestToForwardRequestHistogram.sample(forwardRequestTime - + initialRequestTime); - m_wCCForwardRequestToFirstResponseHistogram.add(firstResponseTime - - forwardRequestTime); + m_wCCForwardRequestToFirstResponseHistogram.sample(firstResponseTime - + forwardRequestTime); - m_wCCFirstResponseToCompleteHistogram.add(completionTime - - firstResponseTime); + m_wCCFirstResponseToCompleteHistogram.sample(completionTime - + firstResponseTime); } else { m_wCCIncompleteTimes++; } @@ -664,36 +728,21 @@ (initialRequestTime <= forwardRequestTime) && (forwardRequestTime <= firstResponseTime) && (firstResponseTime <= completionTime)) { - m_dirIssueToInitialRequestHistogram.add(initialRequestTime - issuedTime); + m_dirIssueToInitialRequestHistogram.sample(initialRequestTime - issuedTime); - m_dirInitialRequestToForwardRequestHistogram.add(forwardRequestTime - + m_dirInitialRequestToForwardRequestHistogram.sample(forwardRequestTime - initialRequestTime); - m_dirForwardRequestToFirstResponseHistogram.add(firstResponseTime - + m_dirForwardRequestToFirstResponseHistogram.sample(firstResponseTime - forwardRequestTime); - m_dirFirstResponseToCompleteHistogram.add(completionTime - + m_dirFirstResponseToCompleteHistogram.sample(completionTime - firstResponseTime); } else { m_dirIncompleteTimes++; } } -// non-zero cycle prefetch request -void -Profiler::swPrefetchLatency(Time cycles, - RubyRequestType type, - const GenericMachineType respondingMach) -{ - m_allSWPrefetchLatencyHistogram.add(cycles); - m_SWPrefetchLatencyHistograms[type].add(cycles); - m_SWPrefetchMachLatencyHistograms[respondingMach].add(cycles); - if (respondingMach == GenericMachineType_Directory || - respondingMach == GenericMachineType_NUM) { - m_SWPrefetchL2MissLatencyHistogram.add(cycles); - } -} - // Helper function static double process_memory_total() diff --git a/src/mem/ruby/slicc_interface/RubySlicc_Profiler_interface.hh b/src/mem/ruby/slicc_interface/RubySlicc_Profiler_interface.hh --- a/src/mem/ruby/slicc_interface/RubySlicc_Profiler_interface.hh +++ b/src/mem/ruby/slicc_interface/RubySlicc_Profiler_interface.hh @@ -50,8 +50,6 @@ GenericRequestType request_type); void profile_outstanding_persistent_request(int outstanding); void profile_outstanding_request(int outstanding); -void profile_sharing(const Address& addr, AccessType type, NodeID requestor, - const Set& sharers, const Set& owner); void profile_request(const std::string& L1CacheStateStr, const std::string& L2CacheStateStr, const std::string& directoryStateStr, @@ -61,7 +59,6 @@ void profile_token_retry(const Address& addr, AccessType type, int count); void profile_filter_action(int action); void profile_persistent_prediction(const Address& addr, AccessType type); -void profile_average_latency_estimate(int latency); void profileMsgDelay(int virtualNetwork, int delayCycles); void profile_multicast_retry(const Address& addr, int count); diff --git a/src/mem/ruby/slicc_interface/RubySlicc_Profiler_interface.cc b/src/mem/ruby/slicc_interface/RubySlicc_Profiler_interface.cc --- a/src/mem/ruby/slicc_interface/RubySlicc_Profiler_interface.cc +++ b/src/mem/ruby/slicc_interface/RubySlicc_Profiler_interface.cc @@ -64,20 +64,6 @@ } void -profile_average_latency_estimate(int latency) -{ - g_system_ptr->getProfiler()->profileAverageLatencyEstimate(latency); -} - -void -profile_sharing(const Address& addr, AccessType type, NodeID requestor, - const Set& sharers, const Set& owner) -{ - g_system_ptr->getProfiler()-> - profileSharing(addr, type, requestor, sharers, owner); -} - -void profileMsgDelay(int virtualNetwork, int delayCycles) { g_system_ptr->getProfiler()->profileMsgDelay(virtualNetwork, delayCycles);