mem-garnet: Fix garnet stats
authorJavier Cano-Cano <javier.cano555@gmail.com>
Tue, 6 Jun 2017 14:10:26 +0000 (16:10 +0200)
committerJavier Cano-Cano <javier.cano555@gmail.com>
Thu, 15 Jun 2017 16:17:21 +0000 (16:17 +0000)
This patch fix some statistics that in presence of a resetStats
instruction were not  reseted. This bug makes impossible to obtain
reliable network statistics when the simulation doesn't start from tick
zero.

Change-Id: Ibec45f08d95bf0a533d94b70ec960719206ae945
Maintainer: Tushar Krishna <tushar@ece.gatech.edu>
Reviewed-on: https://gem5-review.googlesource.com/3700
Reviewed-by: Jieming Yin <bjm419@gmail.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>

src/mem/ruby/network/garnet2.0/CrossbarSwitch.cc
src/mem/ruby/network/garnet2.0/CrossbarSwitch.hh
src/mem/ruby/network/garnet2.0/NetworkLink.cc
src/mem/ruby/network/garnet2.0/NetworkLink.hh
src/mem/ruby/network/garnet2.0/Router.cc
src/mem/ruby/network/garnet2.0/SwitchAllocator.cc
src/mem/ruby/network/garnet2.0/SwitchAllocator.hh

index 340f56d61b0164f80741128383e8a9f7246b29b8..fbaf25b7d5e830ed07a6994fd40ff43cc0781b0b 100644 (file)
@@ -110,3 +110,9 @@ CrossbarSwitch::functionalWrite(Packet *pkt)
 
    return num_functional_writes;
 }
+
+void
+CrossbarSwitch::resetStats()
+{
+    m_crossbar_activity = 0;
+}
\ No newline at end of file
index 7aaeabf0c013df155e89ad297642e357c763e63a..bca3a92e401a4d09c0f883ccab5e06d24bffdb41 100644 (file)
@@ -59,6 +59,7 @@ class CrossbarSwitch : public Consumer
     inline double get_crossbar_activity() { return m_crossbar_activity; }
 
     uint32_t functionalWrite(Packet *pkt);
+    void resetStats();
 
   private:
     int m_num_vcs;
index 6010071f05f10361b722e3b3f7569e9972a33013..e718fb867afe65f376d49520a9db84d948218fba 100644 (file)
@@ -75,6 +75,16 @@ NetworkLink::wakeup()
     }
 }
 
+void
+NetworkLink::resetStats()
+{
+    for (int i = 0; i < m_vc_load.size(); i++) {
+        m_vc_load[i] = 0;
+    }
+
+    m_link_utilized = 0;
+}
+
 NetworkLink *
 NetworkLinkParams::create()
 {
index cb69b39adf80159a37bf2ea088cb82712c30d54b..10399ec37d394c9d87239c18b27db3b39860b8f7 100644 (file)
@@ -70,6 +70,7 @@ class NetworkLink : public ClockedObject, public Consumer
     inline flit* consumeLink()    { return linkBuffer->getTopFlit(); }
 
     uint32_t functionalWrite(Packet *);
+    void resetStats();
 
   private:
     const int m_id;
index 65a73009667602ef6a4a6315acfeebc7ce58a846..7266f998ad77116ac3be917b785150ed8daf6e24 100644 (file)
@@ -241,6 +241,9 @@ Router::resetStats()
             m_input_unit[i]->resetStats();
         }
     }
+
+    m_switch->resetStats();
+    m_sw_alloc->resetStats();
 }
 
 void
index 4619b0b8ad274d4c616564a7520e696ca72d229a..836f071fecef6793ca670cd8a0e241398cca749e 100644 (file)
@@ -387,3 +387,10 @@ SwitchAllocator::clear_request_vector()
         }
     }
 }
+
+void
+SwitchAllocator::resetStats()
+{
+    m_input_arbiter_activity = 0;
+    m_output_arbiter_activity = 0;
+}
\ No newline at end of file
index 162264e853af8651f35284ea5c466e1f35729468..7515b734ff6e82d0ef0f9fb02767aaf746ae66e0 100644 (file)
@@ -70,6 +70,8 @@ class SwitchAllocator : public Consumer
         return m_output_arbiter_activity;
     }
 
+    void resetStats();
+
   private:
     int m_num_inports, m_num_outports;
     int m_num_vcs, m_vc_per_vnet;