summaryrefslogtreecommitdiff
path: root/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc
diff options
context:
space:
mode:
authorBrandon Potter <brandon.potter@amd.com>2015-07-10 16:05:23 -0500
committerBrandon Potter <brandon.potter@amd.com>2015-07-10 16:05:23 -0500
commitc38f5098b152ea1e1dde96220d3f9e50d3411780 (patch)
tree921765f6aac17f76f5801deb2e14ea16f5ed8963 /src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc
parent9eda4bdc5a947883a2d55ab860d37c5cd80c3370 (diff)
downloadgem5-c38f5098b152ea1e1dde96220d3f9e50d3411780.tar.xz
ruby: replace g_ruby_start with per-RubySystem m_start_cycle
This patch begins the process of removing global variables from the Ruby source with the goal of eventually allowing users to create multiple Ruby instances in a single simulation. Currently, users cannot do so because several global variables and static members are referenced by the RubySystem object in a way that assumes that there will only ever be a single RubySystem. These need to be replaced with per-RubySystem equivalents. This specific patch replaces the global var g_ruby_start, which is used to calculate throughput statistics for Throttles in simple networks and links in Garnet networks, with a RubySystem instance var m_start_cycle.
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.cc10
1 files changed, 6 insertions, 4 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 35732edad..d16db76ca 100644
--- a/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc
+++ b/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc
@@ -40,6 +40,7 @@
#include "mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.hh"
#include "mem/ruby/network/garnet/fixed-pipeline/NetworkLink_d.hh"
#include "mem/ruby/network/garnet/fixed-pipeline/Router_d.hh"
+#include "mem/ruby/system/System.hh"
using namespace std;
using m5::stl_helpers::deletePointers;
@@ -223,15 +224,16 @@ GarnetNetwork_d::regStats()
void
GarnetNetwork_d::collateStats()
{
+ RubySystem *rs = params()->ruby_system;
+ double time_delta = double(curCycle() - rs->getStartCycle());
+
for (int i = 0; i < m_links.size(); i++) {
m_average_link_utilization +=
- (double(m_links[i]->getLinkUtilization())) /
- (double(curCycle() - g_ruby_start));
+ (double(m_links[i]->getLinkUtilization())) / time_delta;
vector<unsigned int> vc_load = m_links[i]->getVcLoad();
for (int j = 0; j < vc_load.size(); j++) {
- m_average_vc_load[j] +=
- ((double)vc_load[j] / (double)(curCycle() - g_ruby_start));
+ m_average_vc_load[j] += ((double)vc_load[j] / time_delta);
}
}