summaryrefslogtreecommitdiff
path: root/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc
diff options
context:
space:
mode:
authorNilay Vaish <nilay@cs.wisc.edu>2013-09-06 16:21:35 -0500
committerNilay Vaish <nilay@cs.wisc.edu>2013-09-06 16:21:35 -0500
commit90bfbd9793e64b29d09f4ca4ee610ee08f82ea75 (patch)
treee14b49f9632b25cde8a32b5e5787a36a376e6dff /src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc
parente9ae8b7d29e83fa2cad55006d2c6dc58115965cc (diff)
downloadgem5-90bfbd9793e64b29d09f4ca4ee610ee08f82ea75.tar.xz
ruby: network: convert to gem5 style stats
Diffstat (limited to 'src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc')
-rw-r--r--src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc103
1 files changed, 52 insertions, 51 deletions
diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc b/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc
index 238006881..8db57267e 100644
--- a/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc
+++ b/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc
@@ -221,81 +221,82 @@ GarnetNetwork_d::checkNetworkAllocation(NodeID id, bool ordered,
}
void
-GarnetNetwork_d::printLinkStats(ostream& out) const
+GarnetNetwork_d::regStats()
{
- double average_link_utilization = 0;
- vector<double> average_vc_load;
- average_vc_load.resize(m_virtual_networks*m_vcs_per_vnet);
+ BaseGarnetNetwork::regStats();
+ regLinkStats();
+ regPowerStats();
+}
- for (int i = 0; i < m_virtual_networks*m_vcs_per_vnet; i++) {
- average_vc_load[i] = 0;
- }
+void
+GarnetNetwork_d::regLinkStats()
+{
+ m_average_link_utilization.name(name() + ".avg_link_utilization");
+
+ m_average_vc_load
+ .init(m_virtual_networks * m_vcs_per_vnet)
+ .name(name() + ".avg_vc_load")
+ .flags(Stats::pdf | Stats::total | Stats::nozero | Stats::oneline)
+ ;
+}
+
+void
+GarnetNetwork_d::regPowerStats()
+{
+ m_dynamic_link_power.name(name() + ".link_dynamic_power");
+ m_static_link_power.name(name() + ".link_static_power");
+
+ m_total_link_power.name(name() + ".link_total_power");
+ m_total_link_power = m_dynamic_link_power + m_static_link_power;
+
+ m_dynamic_router_power.name(name() + ".router_dynamic_power");
+ m_static_router_power.name(name() + ".router_static_power");
+ m_clk_power.name(name() + ".clk_power");
+
+ m_total_router_power.name(name() + ".router_total_power");
+ m_total_router_power = m_dynamic_router_power +
+ m_static_router_power +
+ m_clk_power;
+}
+
+void
+GarnetNetwork_d::collateStats()
+{
+ collateLinkStats();
+ collatePowerStats();
+}
- out << endl;
+void
+GarnetNetwork_d::collateLinkStats()
+{
for (int i = 0; i < m_links.size(); i++) {
- average_link_utilization +=
+ m_average_link_utilization +=
(double(m_links[i]->getLinkUtilization())) /
(double(curCycle() - g_ruby_start));
- vector<int> vc_load = m_links[i]->getVcLoad();
+ vector<unsigned int> vc_load = m_links[i]->getVcLoad();
for (int j = 0; j < vc_load.size(); j++) {
- assert(vc_load.size() == m_vcs_per_vnet*m_virtual_networks);
- average_vc_load[j] += vc_load[j];
+ m_average_vc_load[j] +=
+ ((double)vc_load[j] / (double)(curCycle() - g_ruby_start));
}
}
- average_link_utilization =
- average_link_utilization/m_links.size();
- out << "Average Link Utilization :: " << average_link_utilization
- << " flits/cycle" << endl;
- out << "-------------" << endl;
-
- for (int i = 0; i < m_vcs_per_vnet*m_virtual_networks; i++) {
- if (!m_in_use[i/m_vcs_per_vnet])
- continue;
-
- average_vc_load[i] = (double(average_vc_load[i])) /
- (double(curCycle() - g_ruby_start));
- out << "Average VC Load [" << i << "] = " << average_vc_load[i]
- << " flits/cycle " << endl;
- }
- out << "-------------" << endl;
- out << endl;
}
void
-GarnetNetwork_d::printPowerStats(ostream& out) const
+GarnetNetwork_d::collatePowerStats()
{
- out << "Network Power" << endl;
- out << "-------------" << endl;
- double m_total_link_power = 0.0;
- double m_dynamic_link_power = 0.0;
- double m_static_link_power = 0.0;
- double m_total_router_power = 0.0;
- double m_dynamic_router_power = 0.0;
- double m_static_router_power = 0.0;
- double m_clk_power = 0.0;
-
for (int i = 0; i < m_links.size(); i++) {
- m_total_link_power += m_links[i]->calculate_power();
+ m_links[i]->calculate_power();
m_dynamic_link_power += m_links[i]->get_dynamic_power();
m_static_link_power += m_links[i]->get_static_power();
}
for (int i = 0; i < m_routers.size(); i++) {
- m_total_router_power += m_routers[i]->calculate_power();
+ m_routers[i]->calculate_power();
m_dynamic_router_power += m_routers[i]->get_dynamic_power();
m_static_router_power += m_routers[i]->get_static_power();
m_clk_power += m_routers[i]->get_clk_power();
}
- out << "Link Dynamic Power = " << m_dynamic_link_power << " W" << endl;
- out << "Link Static Power = " << m_static_link_power << " W" << endl;
- out << "Total Link Power = " << m_total_link_power << " W " << endl;
- out << "Router Dynamic Power = " << m_dynamic_router_power << " W" << endl;
- out << "Router Clock Power = " << m_clk_power << " W" << endl;
- out << "Router Static Power = " << m_static_router_power << " W" << endl;
- out << "Total Router Power = " << m_total_router_power << " W " <<endl;
- out << "-------------" << endl;
- out << endl;
}
void