diff options
author | Nilay Vaish <nilay@cs.wisc.edu> | 2014-10-11 15:02:23 -0500 |
---|---|---|
committer | Nilay Vaish <nilay@cs.wisc.edu> | 2014-10-11 15:02:23 -0500 |
commit | a098fad174d8559037602b248b8e6f7f46bfebbb (patch) | |
tree | 0f8891b3c884b6bb167f7cf92205ffad5e583cd1 /src/mem/ruby/network/garnet/fixed-pipeline/Router_d.cc | |
parent | 25bb18f12b7983e46e5b0544de18445d3b60d41a (diff) | |
download | gem5-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.cc | 77 |
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 |