summaryrefslogtreecommitdiff
path: root/src/mem/ruby/network/garnet/fixed-pipeline/Router_d.cc
diff options
context:
space:
mode:
authorNilay Vaish <nilay@cs.wisc.edu>2014-10-11 15:02:23 -0500
committerNilay Vaish <nilay@cs.wisc.edu>2014-10-11 15:02:23 -0500
commita098fad174d8559037602b248b8e6f7f46bfebbb (patch)
tree0f8891b3c884b6bb167f7cf92205ffad5e583cd1 /src/mem/ruby/network/garnet/fixed-pipeline/Router_d.cc
parent25bb18f12b7983e46e5b0544de18445d3b60d41a (diff)
downloadgem5-a098fad174d8559037602b248b8e6f7f46bfebbb.tar.xz
ruby: network: garnet: add statistics for different activities
This patch adds some statistics to garnet that record the activity of certain structures in the on-chip network. These statistics, in a later patch, will be used for computing the energy consumed by the on-chip network.
Diffstat (limited to 'src/mem/ruby/network/garnet/fixed-pipeline/Router_d.cc')
-rw-r--r--src/mem/ruby/network/garnet/fixed-pipeline/Router_d.cc77
1 files changed, 56 insertions, 21 deletions
diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/Router_d.cc b/src/mem/ruby/network/garnet/fixed-pipeline/Router_d.cc
index 9f0b6c33f..126cf79e6 100644
--- a/src/mem/ruby/network/garnet/fixed-pipeline/Router_d.cc
+++ b/src/mem/ruby/network/garnet/fixed-pipeline/Router_d.cc
@@ -57,20 +57,6 @@ Router_d::Router_d(const Params *p)
m_input_unit.clear();
m_output_unit.clear();
-
- crossbar_count = 0;
- sw_local_arbit_count = 0;
- sw_global_arbit_count = 0;
- buf_read_count.resize(m_virtual_networks);
- buf_write_count.resize(m_virtual_networks);
- vc_local_arbit_count.resize(m_virtual_networks);
- vc_global_arbit_count.resize(m_virtual_networks);
- for (int i = 0; i < m_virtual_networks; i++) {
- buf_read_count[i] = 0;
- buf_write_count[i] = 0;
- vc_local_arbit_count[i] = 0;
- vc_global_arbit_count[i] = 0;
- }
}
Router_d::~Router_d()
@@ -158,21 +144,70 @@ Router_d::update_sw_winner(int inport, flit_d *t_flit)
}
void
+Router_d::regStats()
+{
+ m_buffer_reads
+ .name(name() + ".buffer_reads")
+ .flags(Stats::nozero)
+ ;
+
+ m_buffer_writes
+ .name(name() + ".buffer_writes")
+ .flags(Stats::nozero)
+ ;
+
+ m_crossbar_activity
+ .name(name() + ".crossbar_activity")
+ .flags(Stats::nozero)
+ ;
+
+ m_sw_local_arbiter_activity
+ .name(name() + ".sw_local_arbiter_activity")
+ .flags(Stats::nozero)
+ ;
+
+ m_sw_global_arbiter_activity
+ .name(name() + ".sw_global_arbiter_activity")
+ .flags(Stats::nozero)
+ ;
+
+ m_vc_local_arbiter_activity
+ .name(name() + ".vc_local_arbiter_activity")
+ .flags(Stats::nozero)
+ ;
+
+ m_vc_global_arbiter_activity
+ .name(name() + ".vc_global_arbiter_activity")
+ .flags(Stats::nozero)
+ ;
+}
+
+void
Router_d::collateStats()
{
for (int j = 0; j < m_virtual_networks; j++) {
for (int i = 0; i < m_input_unit.size(); i++) {
- buf_read_count[j] += m_input_unit[i]->get_buf_read_count(j);
- buf_write_count[j] += m_input_unit[i]->get_buf_write_count(j);
+ m_buffer_reads += m_input_unit[i]->get_buf_read_count(j);
+ m_buffer_writes += m_input_unit[i]->get_buf_write_count(j);
}
- vc_local_arbit_count[j] = m_vc_alloc->get_local_arbit_count(j);
- vc_global_arbit_count[j] = m_vc_alloc->get_global_arbit_count(j);
+ m_vc_local_arbiter_activity += m_vc_alloc->get_local_arbit_count(j);
+ m_vc_global_arbiter_activity += m_vc_alloc->get_global_arbit_count(j);
}
- sw_local_arbit_count = m_sw_alloc->get_local_arbit_count();
- sw_global_arbit_count = m_sw_alloc->get_global_arbit_count();
- crossbar_count = m_switch->get_crossbar_count();
+ m_sw_local_arbiter_activity = m_sw_alloc->get_local_arbit_count();
+ m_sw_global_arbiter_activity = m_sw_alloc->get_global_arbit_count();
+ m_crossbar_activity = m_switch->get_crossbar_count();
+}
+
+void
+Router_d::resetStats()
+{
+ for (int j = 0; j < m_virtual_networks; j++) {
+ for (int i = 0; i < m_input_unit.size(); i++) {
+ m_input_unit[i]->resetStats();
+ }
+ }
}
void