ruby: simple network: store Switch* in PerfectSwitch and Throttle
This commit is contained in:
parent
cb133b5f2c
commit
3230a0b89f
4 changed files with 14 additions and 30 deletions
|
@ -49,9 +49,8 @@ operator<(const LinkOrder& l1, const LinkOrder& l2)
|
||||||
}
|
}
|
||||||
|
|
||||||
PerfectSwitch::PerfectSwitch(SwitchID sid, Switch *sw, uint32_t virt_nets)
|
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_round_robin_start = 0;
|
||||||
m_wakeups_wo_switch = 0;
|
m_wakeups_wo_switch = 0;
|
||||||
m_virtual_networks = virt_nets;
|
m_virtual_networks = virt_nets;
|
||||||
|
|
|
@ -87,7 +87,8 @@ class PerfectSwitch : public Consumer
|
||||||
void operateVnet(int vnet);
|
void operateVnet(int vnet);
|
||||||
void operateMessageBuffer(MessageBuffer *b, int incoming, 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
|
// vector of queues from the components
|
||||||
std::vector<std::vector<MessageBuffer*> > m_in;
|
std::vector<std::vector<MessageBuffer*> > m_in;
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
#include "base/cast.hh"
|
#include "base/cast.hh"
|
||||||
#include "base/cprintf.hh"
|
#include "base/cprintf.hh"
|
||||||
#include "debug/RubyNetwork.hh"
|
#include "debug/RubyNetwork.hh"
|
||||||
|
#include "mem/ruby/network/simple/Switch.hh"
|
||||||
#include "mem/ruby/network/simple/Throttle.hh"
|
#include "mem/ruby/network/simple/Throttle.hh"
|
||||||
#include "mem/ruby/network/MessageBuffer.hh"
|
#include "mem/ruby/network/MessageBuffer.hh"
|
||||||
#include "mem/ruby/network/Network.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,
|
Throttle::Throttle(int sID, RubySystem *rs, NodeID node, Cycles link_latency,
|
||||||
int link_bandwidth_multiplier, int endpoint_bandwidth,
|
int link_bandwidth_multiplier, int endpoint_bandwidth,
|
||||||
ClockedObject *em)
|
Switch *em)
|
||||||
: Consumer(em), m_ruby_system(rs)
|
: 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;
|
m_vnets = 0;
|
||||||
|
|
||||||
assert(link_bandwidth_multiplier > 0);
|
assert(link_bandwidth_multiplier > 0);
|
||||||
|
@ -98,7 +82,7 @@ Throttle::addLinks(const vector<MessageBuffer*>& in_vec,
|
||||||
|
|
||||||
// Set consumer and description
|
// Set consumer and description
|
||||||
in_ptr->setConsumer(this);
|
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) + "]";
|
to_string(m_node) + "]";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,20 +47,18 @@
|
||||||
#include "mem/ruby/system/System.hh"
|
#include "mem/ruby/system/System.hh"
|
||||||
|
|
||||||
class MessageBuffer;
|
class MessageBuffer;
|
||||||
|
class Switch;
|
||||||
|
|
||||||
class Throttle : public Consumer
|
class Throttle : public Consumer
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Throttle(int sID, RubySystem *rs, NodeID node, Cycles link_latency,
|
Throttle(int sID, RubySystem *rs, NodeID node, Cycles link_latency,
|
||||||
int link_bandwidth_multiplier, int endpoint_bandwidth,
|
int link_bandwidth_multiplier, int endpoint_bandwidth,
|
||||||
ClockedObject *em);
|
Switch *em);
|
||||||
Throttle(RubySystem *rs, NodeID node, Cycles link_latency,
|
|
||||||
int link_bandwidth_multiplier, int endpoint_bandwidth,
|
|
||||||
ClockedObject *em);
|
|
||||||
~Throttle() {}
|
~Throttle() {}
|
||||||
|
|
||||||
std::string name()
|
std::string name()
|
||||||
{ return csprintf("Throttle-%i", m_sID); }
|
{ return csprintf("Throttle-%i", m_switch_id); }
|
||||||
|
|
||||||
void addLinks(const std::vector<MessageBuffer*>& in_vec,
|
void addLinks(const std::vector<MessageBuffer*>& in_vec,
|
||||||
const std::vector<MessageBuffer*>& out_vec);
|
const std::vector<MessageBuffer*>& out_vec);
|
||||||
|
@ -97,8 +95,10 @@ class Throttle : public Consumer
|
||||||
unsigned int m_vnets;
|
unsigned int m_vnets;
|
||||||
std::vector<int> m_units_remaining;
|
std::vector<int> m_units_remaining;
|
||||||
|
|
||||||
int m_sID;
|
const int m_switch_id;
|
||||||
|
Switch *m_switch;
|
||||||
NodeID m_node;
|
NodeID m_node;
|
||||||
|
|
||||||
int m_link_bandwidth_multiplier;
|
int m_link_bandwidth_multiplier;
|
||||||
Cycles m_link_latency;
|
Cycles m_link_latency;
|
||||||
int m_wakeups_wo_switch;
|
int m_wakeups_wo_switch;
|
||||||
|
|
Loading…
Reference in a new issue