diff -r 112382ddf96d -r 0c08519fc657 src/mem/ruby/common/Global.hh --- a/src/mem/ruby/common/Global.hh Wed Apr 17 16:09:37 2013 -0500 +++ b/src/mem/ruby/common/Global.hh Fri Apr 19 17:29:36 2013 -0500 @@ -33,6 +33,7 @@ #include #include "base/str.hh" +#include "base/types.hh" class RubySystem; extern RubySystem* g_system_ptr; @@ -40,5 +41,7 @@ class AbstractController; extern std::vector > g_abs_controls; +extern Cycles g_ruby_start; + #endif // __MEM_RUBY_COMMON_GLOBAL_HH__ diff -r 112382ddf96d -r 0c08519fc657 src/mem/ruby/common/Global.cc --- a/src/mem/ruby/common/Global.cc Wed Apr 17 16:09:37 2013 -0500 +++ b/src/mem/ruby/common/Global.cc Fri Apr 19 17:29:36 2013 -0500 @@ -32,3 +32,4 @@ RubySystem* g_system_ptr = 0; vector > g_abs_controls; +Cycles g_ruby_start; diff -r 112382ddf96d -r 0c08519fc657 src/mem/ruby/network/garnet/BaseGarnetNetwork.hh --- a/src/mem/ruby/network/garnet/BaseGarnetNetwork.hh Wed Apr 17 16:09:37 2013 -0500 +++ b/src/mem/ruby/network/garnet/BaseGarnetNetwork.hh Fri Apr 19 17:29:36 2013 -0500 @@ -80,7 +80,6 @@ virtual void checkNetworkAllocation(NodeID id, bool ordered, int network_num, std::string vnet_type) = 0; - Cycles getRubyStartTime(); void clearStats(); void printStats(std::ostream& out) const; void printPerformanceStats(std::ostream& out) const; @@ -102,8 +101,6 @@ std::vector > m_toNetQueues; std::vector > m_fromNetQueues; - - Cycles m_ruby_start; }; #endif // __MEM_RUBY_NETWORK_GARNET_BASEGARNETNETWORK_HH__ diff -r 112382ddf96d -r 0c08519fc657 src/mem/ruby/network/garnet/BaseGarnetNetwork.cc --- a/src/mem/ruby/network/garnet/BaseGarnetNetwork.cc Wed Apr 17 16:09:37 2013 -0500 +++ b/src/mem/ruby/network/garnet/BaseGarnetNetwork.cc Fri Apr 19 17:29:36 2013 -0500 @@ -36,7 +36,7 @@ using namespace std; BaseGarnetNetwork::BaseGarnetNetwork(const Params *p) - : Network(p), m_ruby_start(0) + : Network(p) { m_ni_flit_size = p->ni_flit_size; m_vcs_per_vnet = p->vcs_per_vnet; @@ -123,13 +123,6 @@ void BaseGarnetNetwork::clearStats() { - m_ruby_start = curCycle(); -} - -Cycles -BaseGarnetNetwork::getRubyStartTime() -{ - return m_ruby_start; } void diff -r 112382ddf96d -r 0c08519fc657 src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc --- a/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc Wed Apr 17 16:09:37 2013 -0500 +++ b/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc Fri Apr 19 17:29:36 2013 -0500 @@ -270,7 +270,7 @@ for (int i = 0; i < m_link_ptr_vector.size(); i++) { average_link_utilization += (double(m_link_ptr_vector[i]->getLinkUtilization())) / - (double(curCycle() - m_ruby_start)); + (double(curCycle() - g_ruby_start)); vector vc_load = m_link_ptr_vector[i]->getVcLoad(); for (int j = 0; j < vc_load.size(); j++) { @@ -289,7 +289,7 @@ continue; average_vc_load[i] = (double(average_vc_load[i])) / - (double(curCycle() - m_ruby_start)); + (double(curCycle() - g_ruby_start)); out << "Average VC Load [" << i << "] = " << average_vc_load[i] << " flits/cycle " << endl; } diff -r 112382ddf96d -r 0c08519fc657 src/mem/ruby/network/garnet/fixed-pipeline/InputUnit_d.cc --- a/src/mem/ruby/network/garnet/fixed-pipeline/InputUnit_d.cc Wed Apr 17 16:09:37 2013 -0500 +++ b/src/mem/ruby/network/garnet/fixed-pipeline/InputUnit_d.cc Fri Apr 19 17:29:36 2013 -0500 @@ -53,7 +53,7 @@ // Instantiating the virtual channels m_vcs.resize(m_num_vcs); for (int i=0; i < m_num_vcs; i++) { - m_vcs[i] = new VirtualChannel_d(i, m_router->curCycle()); + m_vcs[i] = new VirtualChannel_d(i); } } diff -r 112382ddf96d -r 0c08519fc657 src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.cc --- a/src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.cc Wed Apr 17 16:09:37 2013 -0500 +++ b/src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.cc Fri Apr 19 17:29:36 2013 -0500 @@ -71,7 +71,6 @@ for (int i = 0; i < m_num_vcs; i++) { m_out_vc_state.push_back(new OutVcState_d(i, m_net_ptr)); - m_out_vc_state[i]->setState(IDLE_, m_net_ptr->curCycle()); } } diff -r 112382ddf96d -r 0c08519fc657 src/mem/ruby/network/garnet/fixed-pipeline/OutVcState_d.hh --- a/src/mem/ruby/network/garnet/fixed-pipeline/OutVcState_d.hh Wed Apr 17 16:09:37 2013 -0500 +++ b/src/mem/ruby/network/garnet/fixed-pipeline/OutVcState_d.hh Fri Apr 19 17:29:36 2013 -0500 @@ -61,7 +61,6 @@ inline void decrement_credit() { m_credit_count--; } private: - GarnetNetwork_d *m_network_ptr; int m_id ; Cycles m_time; VC_state_type m_vc_state; diff -r 112382ddf96d -r 0c08519fc657 src/mem/ruby/network/garnet/fixed-pipeline/OutVcState_d.cc --- a/src/mem/ruby/network/garnet/fixed-pipeline/OutVcState_d.cc Wed Apr 17 16:09:37 2013 -0500 +++ b/src/mem/ruby/network/garnet/fixed-pipeline/OutVcState_d.cc Fri Apr 19 17:29:36 2013 -0500 @@ -33,16 +33,15 @@ #include "mem/ruby/system/System.hh" OutVcState_d::OutVcState_d(int id, GarnetNetwork_d *network_ptr) + : m_time(0) { - m_network_ptr = network_ptr; m_id = id; m_vc_state = IDLE_; - m_time = m_network_ptr->curCycle(); - if (m_network_ptr->get_vnet_type(id) == DATA_VNET_) - m_credit_count = m_network_ptr->getBuffersPerDataVC(); + if (network_ptr->get_vnet_type(id) == DATA_VNET_) + m_credit_count = network_ptr->getBuffersPerDataVC(); else - m_credit_count = m_network_ptr->getBuffersPerCtrlVC(); + m_credit_count = network_ptr->getBuffersPerCtrlVC(); assert(m_credit_count >= 1); } diff -r 112382ddf96d -r 0c08519fc657 src/mem/ruby/network/garnet/fixed-pipeline/VirtualChannel_d.hh --- a/src/mem/ruby/network/garnet/fixed-pipeline/VirtualChannel_d.hh Wed Apr 17 16:09:37 2013 -0500 +++ b/src/mem/ruby/network/garnet/fixed-pipeline/VirtualChannel_d.hh Fri Apr 19 17:29:36 2013 -0500 @@ -39,7 +39,7 @@ class VirtualChannel_d { public: - VirtualChannel_d(int id, Cycles curTime); + VirtualChannel_d(int id); ~VirtualChannel_d(); bool need_stage(VC_state_type state, flit_stage stage, Cycles curTime); diff -r 112382ddf96d -r 0c08519fc657 src/mem/ruby/network/garnet/fixed-pipeline/VirtualChannel_d.cc --- a/src/mem/ruby/network/garnet/fixed-pipeline/VirtualChannel_d.cc Wed Apr 17 16:09:37 2013 -0500 +++ b/src/mem/ruby/network/garnet/fixed-pipeline/VirtualChannel_d.cc Fri Apr 19 17:29:36 2013 -0500 @@ -30,13 +30,13 @@ #include "mem/ruby/network/garnet/fixed-pipeline/VirtualChannel_d.hh" -VirtualChannel_d::VirtualChannel_d(int id, Cycles curTime) +VirtualChannel_d::VirtualChannel_d(int id) : m_enqueue_time(INFINITE_) { m_id = id; m_input_buffer = new flitBuffer_d(); m_vc_state.first = IDLE_; - m_vc_state.second = curTime; + m_vc_state.second = Cycles(0); } VirtualChannel_d::~VirtualChannel_d() diff -r 112382ddf96d -r 0c08519fc657 src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc --- a/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc Wed Apr 17 16:09:37 2013 -0500 +++ b/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc Fri Apr 19 17:29:36 2013 -0500 @@ -254,7 +254,7 @@ for (int i = 0; i < m_link_ptr_vector.size(); i++) { average_link_utilization += (double(m_link_ptr_vector[i]->getLinkUtilization())) / - (double(curCycle() - m_ruby_start)); + (double(curCycle() - g_ruby_start)); vector vc_load = m_link_ptr_vector[i]->getVcLoad(); for (int j = 0; j < vc_load.size(); j++) { @@ -273,7 +273,7 @@ continue; average_vc_load[i] = double(average_vc_load[i]) / - (double(curCycle() - m_ruby_start)); + (double(curCycle() - g_ruby_start)); out << "Average VC Load [" << i << "] = " << average_vc_load[i] << " flits/cycle " << endl; } diff -r 112382ddf96d -r 0c08519fc657 src/mem/ruby/network/garnet/flexible-pipeline/NetworkInterface.cc --- a/src/mem/ruby/network/garnet/flexible-pipeline/NetworkInterface.cc Wed Apr 17 16:09:37 2013 -0500 +++ b/src/mem/ruby/network/garnet/flexible-pipeline/NetworkInterface.cc Fri Apr 19 17:29:36 2013 -0500 @@ -68,7 +68,6 @@ for (int i = 0; i < m_num_vcs; i++) { m_out_vc_state.push_back(new OutVcState(i)); - m_out_vc_state[i]->setState(IDLE_, m_net_ptr->curCycle()); } } diff -r 112382ddf96d -r 0c08519fc657 src/mem/ruby/network/garnet/flexible-pipeline/OutVcState.cc --- a/src/mem/ruby/network/garnet/flexible-pipeline/OutVcState.cc Wed Apr 17 16:09:37 2013 -0500 +++ b/src/mem/ruby/network/garnet/flexible-pipeline/OutVcState.cc Fri Apr 19 17:29:36 2013 -0500 @@ -31,6 +31,7 @@ #include "mem/ruby/network/garnet/flexible-pipeline/OutVcState.hh" OutVcState::OutVcState(int id) + : m_time(0) { m_id = id; m_vc_state = IDLE_; diff -r 112382ddf96d -r 0c08519fc657 src/mem/ruby/network/orion/NetworkPower.cc --- a/src/mem/ruby/network/orion/NetworkPower.cc Wed Apr 17 16:09:37 2013 -0500 +++ b/src/mem/ruby/network/orion/NetworkPower.cc Fri Apr 19 17:29:36 2013 -0500 @@ -39,7 +39,7 @@ { //Network Activities from garnet calculate_performance_numbers(); - double sim_cycles = curCycle() - m_network_ptr->getRubyStartTime(); + double sim_cycles = curCycle() - g_ruby_start; // Number of virtual networks/message classes declared in Ruby // maybe greater than active virtual networks. @@ -245,8 +245,7 @@ channel_width_bits, orion_cfg_ptr); - double sim_cycles = - (double)(m_net_ptr->curCycle() - m_net_ptr->getRubyStartTime()); + double sim_cycles = (double)(m_net_ptr->curCycle() - g_ruby_start); // Dynamic Power // Assume half the bits flipped on every link activity diff -r 112382ddf96d -r 0c08519fc657 src/mem/ruby/profiler/Profiler.cc --- a/src/mem/ruby/profiler/Profiler.cc Wed Apr 17 16:09:37 2013 -0500 +++ b/src/mem/ruby/profiler/Profiler.cc Fri Apr 19 17:29:36 2013 -0500 @@ -515,11 +515,7 @@ m_cycles_executed_at_start.resize(m_num_of_sequencers); for (int i = 0; i < m_num_of_sequencers; i++) { - if (g_system_ptr == NULL) { - m_cycles_executed_at_start[i] = 0; - } else { - m_cycles_executed_at_start[i] = g_system_ptr->curCycle(); - } + m_cycles_executed_at_start[i] = g_system_ptr->curCycle(); } m_busyBankCount = 0; diff -r 112382ddf96d -r 0c08519fc657 src/mem/ruby/system/System.hh --- a/src/mem/ruby/system/System.hh Wed Apr 17 16:09:37 2013 -0500 +++ b/src/mem/ruby/system/System.hh Fri Apr 19 17:29:36 2013 -0500 @@ -134,8 +134,6 @@ RubySystem(const RubySystem& obj); RubySystem& operator=(const RubySystem& obj); - void init(); - void readCompressedTrace(std::string filename, uint8_t *&raw_data, uint64& uncompressed_trace_size); diff -r 112382ddf96d -r 0c08519fc657 src/mem/ruby/system/System.cc --- a/src/mem/ruby/system/System.cc Wed Apr 17 16:09:37 2013 -0500 +++ b/src/mem/ruby/system/System.cc Fri Apr 19 17:29:36 2013 -0500 @@ -94,13 +94,6 @@ } void -RubySystem::init() -{ - m_profiler_ptr->clearStats(); - m_network_ptr->clearStats(); -} - -void RubySystem::registerNetwork(Network* network_ptr) { m_network_ptr = network_ptr; @@ -311,12 +304,6 @@ void RubySystem::unserialize(Checkpoint *cp, const string §ion) { - // - // The main purpose for clearing stats in the unserialize process is so - // that the profiler can correctly set its start time to the unserialized - // value of curTick() - // - resetStats(); uint8_t *uncompressed_trace = NULL; if (m_mem_vec_ptr != NULL) { @@ -397,6 +384,8 @@ setCurTick(curtick_original); resetClock(); } + + resetStats(); } void @@ -417,6 +406,8 @@ for (uint32_t cntrl = 0; cntrl < m_abs_cntrl_vec.size(); cntrl++) { m_abs_cntrl_vec[cntrl]->clearStats(); } + + g_ruby_start = curCycle(); } bool