diff options
author | Tushar Krishna <tushar@csail.mit.edu> | 2011-02-06 22:14:17 -0800 |
---|---|---|
committer | Tushar Krishna <tushar@csail.mit.edu> | 2011-02-06 22:14:17 -0800 |
commit | a679e732cee821616c20cc13c22ad2877072ff14 (patch) | |
tree | d3225f0f3bc7f4f79fa3eeb7bf0fb40de19509aa /src/mem/ruby/network/garnet/fixed-pipeline/Router_d.cc | |
parent | 59163f824c71e4290399be7c1c4b6e70b799a388 (diff) | |
download | gem5-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.cc | 30 |
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 |