ruby: network: garnet: fixed: removes net_ptr from links
authorNilay Vaish <nilay@cs.wisc.edu>
Fri, 21 Feb 2014 14:02:04 +0000 (08:02 -0600)
committerNilay Vaish <nilay@cs.wisc.edu>
Fri, 21 Feb 2014 14:02:04 +0000 (08:02 -0600)
src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc
src/mem/ruby/network/garnet/fixed-pipeline/NetworkLink_d.hh
src/mem/ruby/network/orion/NetworkPower.cc

index 8db57267e955a10c3bf80cc5761186cf46d47a14..831c0b2fe13342afe15e41b970e0629e8f695d87 100644 (file)
@@ -90,13 +90,6 @@ GarnetNetwork_d::init()
     }
     m_topology_ptr->createLinks(this);
 
-    // initialize the link's network pointers
-   for (vector<NetworkLink_d*>::const_iterator i = m_links.begin();
-         i != m_links.end(); ++i) {
-        NetworkLink_d* net_link = safe_cast<NetworkLink_d*>(*i);
-        net_link->init_net_ptr(this);
-    }
-
     // FaultModel: declare each router to the fault model
     if(isFaultModelEnabled()){
         for (vector<Router_d*>::const_iterator i= m_routers.begin();
@@ -285,8 +278,9 @@ GarnetNetwork_d::collateLinkStats()
 void
 GarnetNetwork_d::collatePowerStats()
 {
+    double sim_cycles = (double)(curCycle() - g_ruby_start);
     for (int i = 0; i < m_links.size(); i++) {
-        m_links[i]->calculate_power();
+        m_links[i]->calculate_power(sim_cycles);
         m_dynamic_link_power += m_links[i]->get_dynamic_power();
         m_static_link_power += m_links[i]->get_static_power();
     }
index fcdd28b671083f0353943173004eca3b1ac0ecb9..6d1396023c95ed3335a798a0d2d25a2a32178b64 100644 (file)
@@ -56,7 +56,7 @@ class NetworkLink_d : public ClockedObject, public Consumer
     int get_id(){return m_id;}
     void wakeup();
 
-    void calculate_power();
+    void calculate_power(double);
     double get_dynamic_power() const { return m_power_dyn; }
     double get_static_power()const { return m_power_sta; }
 
@@ -69,7 +69,6 @@ class NetworkLink_d : public ClockedObject, public Consumer
     inline flit_d* peekLink()       { return linkBuffer->peekTopFlit(); }
     inline flit_d* consumeLink()    { return linkBuffer->getTopFlit(); }
 
-    void init_net_ptr(GarnetNetwork_d* net_ptr) { m_net_ptr = net_ptr; }
     uint32_t functionalWrite(Packet *);
 
   private:
@@ -77,7 +76,6 @@ class NetworkLink_d : public ClockedObject, public Consumer
     Cycles m_latency;
     int channel_width;
 
-    GarnetNetwork_d *m_net_ptr;
     flitBuffer_d *linkBuffer;
     Consumer *link_consumer;
     flitBuffer_d *link_srcQueue;
index f4a471986cea08c6688c67a3b20bbb5c4116b7be..cb2841f04b4665f1213b5b3260b11ad548805469 100644 (file)
@@ -211,7 +211,7 @@ Router_d::calculate_power()
 }
 
 void
-NetworkLink_d::calculate_power()
+NetworkLink_d::calculate_power(double sim_cycles)
 {
     OrionConfig* orion_cfg_ptr;
     OrionLink* orion_link_ptr;
@@ -232,8 +232,6 @@ NetworkLink_d::calculate_power()
         channel_width_bits,
         orion_cfg_ptr);
 
-    double sim_cycles = (double)(m_net_ptr->curCycle() - g_ruby_start);
-
     // Dynamic Power
     // Assume half the bits flipped on every link activity
     double link_dynamic_energy =