From 3230a0b89f9952ecd0cf9dbe216ffb6b757dcace Mon Sep 17 00:00:00 2001 From: Nilay Vaish Date: Fri, 14 Aug 2015 19:28:44 -0500 Subject: [PATCH] ruby: simple network: store Switch* in PerfectSwitch and Throttle --- src/mem/ruby/network/simple/PerfectSwitch.cc | 3 +-- src/mem/ruby/network/simple/PerfectSwitch.hh | 3 ++- src/mem/ruby/network/simple/Throttle.cc | 26 ++++---------------- src/mem/ruby/network/simple/Throttle.hh | 12 ++++----- 4 files changed, 14 insertions(+), 30 deletions(-) diff --git a/src/mem/ruby/network/simple/PerfectSwitch.cc b/src/mem/ruby/network/simple/PerfectSwitch.cc index 9de2dc2e3..697357ccb 100644 --- a/src/mem/ruby/network/simple/PerfectSwitch.cc +++ b/src/mem/ruby/network/simple/PerfectSwitch.cc @@ -49,9 +49,8 @@ operator<(const LinkOrder& l1, const LinkOrder& l2) } PerfectSwitch::PerfectSwitch(SwitchID sid, Switch *sw, uint32_t virt_nets) - : Consumer(sw) + : Consumer(sw), m_switch_id(sid), m_switch(sw) { - m_switch_id = sid; m_round_robin_start = 0; m_wakeups_wo_switch = 0; m_virtual_networks = virt_nets; diff --git a/src/mem/ruby/network/simple/PerfectSwitch.hh b/src/mem/ruby/network/simple/PerfectSwitch.hh index bf515a777..1cc986964 100644 --- a/src/mem/ruby/network/simple/PerfectSwitch.hh +++ b/src/mem/ruby/network/simple/PerfectSwitch.hh @@ -87,7 +87,8 @@ class PerfectSwitch : public Consumer void operateVnet(int vnet); void operateMessageBuffer(MessageBuffer *b, int incoming, int vnet); - SwitchID m_switch_id; + const SwitchID m_switch_id; + Switch * const m_switch; // vector of queues from the components std::vector > m_in; diff --git a/src/mem/ruby/network/simple/Throttle.cc b/src/mem/ruby/network/simple/Throttle.cc index 785e09aa2..c97531e58 100644 --- a/src/mem/ruby/network/simple/Throttle.cc +++ b/src/mem/ruby/network/simple/Throttle.cc @@ -31,6 +31,7 @@ #include "base/cast.hh" #include "base/cprintf.hh" #include "debug/RubyNetwork.hh" +#include "mem/ruby/network/simple/Switch.hh" #include "mem/ruby/network/simple/Throttle.hh" #include "mem/ruby/network/MessageBuffer.hh" #include "mem/ruby/network/Network.hh" @@ -48,27 +49,10 @@ static int network_message_to_size(Message* net_msg_ptr); Throttle::Throttle(int sID, RubySystem *rs, NodeID node, Cycles link_latency, int link_bandwidth_multiplier, int endpoint_bandwidth, - ClockedObject *em) - : Consumer(em), m_ruby_system(rs) + Switch *em) + : Consumer(em), m_switch_id(sID), m_switch(em), m_node(node), + m_ruby_system(rs) { - init(node, link_latency, link_bandwidth_multiplier, endpoint_bandwidth); - m_sID = sID; -} - -Throttle::Throttle(RubySystem *rs, NodeID node, Cycles link_latency, - int link_bandwidth_multiplier, int endpoint_bandwidth, - ClockedObject *em) - : Consumer(em), m_ruby_system(rs) -{ - init(node, link_latency, link_bandwidth_multiplier, endpoint_bandwidth); - m_sID = 0; -} - -void -Throttle::init(NodeID node, Cycles link_latency, - int link_bandwidth_multiplier, int endpoint_bandwidth) -{ - m_node = node; m_vnets = 0; assert(link_bandwidth_multiplier > 0); @@ -98,7 +82,7 @@ Throttle::addLinks(const vector& in_vec, // Set consumer and description in_ptr->setConsumer(this); - string desc = "[Queue to Throttle " + to_string(m_sID) + " " + + string desc = "[Queue to Throttle " + to_string(m_switch_id) + " " + to_string(m_node) + "]"; } } diff --git a/src/mem/ruby/network/simple/Throttle.hh b/src/mem/ruby/network/simple/Throttle.hh index 85bf9691a..405593bb1 100644 --- a/src/mem/ruby/network/simple/Throttle.hh +++ b/src/mem/ruby/network/simple/Throttle.hh @@ -47,20 +47,18 @@ #include "mem/ruby/system/System.hh" class MessageBuffer; +class Switch; class Throttle : public Consumer { public: Throttle(int sID, RubySystem *rs, NodeID node, Cycles link_latency, int link_bandwidth_multiplier, int endpoint_bandwidth, - ClockedObject *em); - Throttle(RubySystem *rs, NodeID node, Cycles link_latency, - int link_bandwidth_multiplier, int endpoint_bandwidth, - ClockedObject *em); + Switch *em); ~Throttle() {} std::string name() - { return csprintf("Throttle-%i", m_sID); } + { return csprintf("Throttle-%i", m_switch_id); } void addLinks(const std::vector& in_vec, const std::vector& out_vec); @@ -97,8 +95,10 @@ class Throttle : public Consumer unsigned int m_vnets; std::vector m_units_remaining; - int m_sID; + const int m_switch_id; + Switch *m_switch; NodeID m_node; + int m_link_bandwidth_multiplier; Cycles m_link_latency; int m_wakeups_wo_switch;