summaryrefslogtreecommitdiff
path: root/src/mem/ruby/network/garnet/fixed-pipeline/Router_d.cc
diff options
context:
space:
mode:
authorTushar Krishna <tushar@csail.mit.edu>2011-02-06 22:14:17 -0800
committerTushar Krishna <tushar@csail.mit.edu>2011-02-06 22:14:17 -0800
commita679e732cee821616c20cc13c22ad2877072ff14 (patch)
treed3225f0f3bc7f4f79fa3eeb7bf0fb40de19509aa /src/mem/ruby/network/garnet/fixed-pipeline/Router_d.cc
parent59163f824c71e4290399be7c1c4b6e70b799a388 (diff)
downloadgem5-a679e732cee821616c20cc13c22ad2877072ff14.tar.xz
garnet: added orion2.0 for network power calculation
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.cc30
1 files changed, 20 insertions, 10 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 44c3a5d64..4ee176653 100644
--- a/src/mem/ruby/network/garnet/fixed-pipeline/Router_d.cc
+++ b/src/mem/ruby/network/garnet/fixed-pipeline/Router_d.cc
@@ -60,13 +60,19 @@ Router_d::Router_d(int id, GarnetNetwork_d *network_ptr)
m_input_unit.clear();
m_output_unit.clear();
- buf_read_count = 0;
- buf_write_count = 0;
crossbar_count = 0;
- vc_local_arbit_count = 0;
- vc_global_arbit_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()
@@ -154,15 +160,19 @@ Router_d::update_sw_winner(int inport, flit_d *t_flit)
void
Router_d::calculate_performance_numbers()
{
- for (int i = 0; i < m_input_unit.size(); i++) {
- buf_read_count += m_input_unit[i]->get_buf_read_count();
- buf_write_count += m_input_unit[i]->get_buf_write_count();
+ 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);
+ }
+
+ 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);
}
- crossbar_count = m_switch->get_crossbar_count();
- vc_local_arbit_count = m_vc_alloc->get_local_arbit_count();
- vc_global_arbit_count = m_vc_alloc->get_global_arbit_count();
+
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();
}
void