summaryrefslogtreecommitdiff
path: root/src/mem/ruby
diff options
context:
space:
mode:
authorBrad Beckmann <Brad.Beckmann@amd.com>2011-04-28 17:18:14 -0700
committerBrad Beckmann <Brad.Beckmann@amd.com>2011-04-28 17:18:14 -0700
commit93a50fc3180d9444e5e0e6524e80d746febe225e (patch)
treede91d7a1c47366c60c56cb4d45543e6d5962e1b0 /src/mem/ruby
parent6c7429dbe34b2f4ad20e56d5054d5eb7b88acaca (diff)
downloadgem5-93a50fc3180d9444e5e0e6524e80d746febe225e.tar.xz
network: set the ExtLink bw to 16 bytes
Therefore all links by default are 16 bytes wide and thus work with Garnet's uniform link bandwidth assumption.
Diffstat (limited to 'src/mem/ruby')
-rw-r--r--src/mem/ruby/network/BasicLink.py2
-rw-r--r--src/mem/ruby/network/garnet/BaseGarnetNetwork.cc35
-rw-r--r--src/mem/ruby/network/garnet/BaseGarnetNetwork.hh13
-rw-r--r--src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc32
-rw-r--r--src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.hh13
-rw-r--r--src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc34
-rw-r--r--src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.hh10
7 files changed, 49 insertions, 90 deletions
diff --git a/src/mem/ruby/network/BasicLink.py b/src/mem/ruby/network/BasicLink.py
index fb73f9ac7..f73f5d977 100644
--- a/src/mem/ruby/network/BasicLink.py
+++ b/src/mem/ruby/network/BasicLink.py
@@ -45,7 +45,7 @@ class BasicExtLink(BasicLink):
type = 'BasicExtLink'
ext_node = Param.RubyController("External node")
int_node = Param.BasicRouter("ID of internal node")
- bandwidth_factor = 64
+ bandwidth_factor = 16
class BasicIntLink(BasicLink):
type = 'BasicIntLink'
diff --git a/src/mem/ruby/network/garnet/BaseGarnetNetwork.cc b/src/mem/ruby/network/garnet/BaseGarnetNetwork.cc
index 6c5e57103..2e3cc8b24 100644
--- a/src/mem/ruby/network/garnet/BaseGarnetNetwork.cc
+++ b/src/mem/ruby/network/garnet/BaseGarnetNetwork.cc
@@ -28,6 +28,7 @@
* Authors: Niket Agarwal
*/
+#include "mem/ruby/buffers/MessageBuffer.hh"
#include "mem/ruby/network/BasicLink.hh"
#include "mem/ruby/network/Topology.hh"
#include "mem/ruby/network/garnet/BaseGarnetNetwork.hh"
@@ -41,6 +42,12 @@ BaseGarnetNetwork::BaseGarnetNetwork(const Params *p)
m_buffers_per_data_vc = p->buffers_per_data_vc;
m_buffers_per_ctrl_vc = p->buffers_per_ctrl_vc;
+ m_ruby_start = 0;
+ m_flits_received = 0;
+ m_flits_injected = 0;
+ m_network_latency = 0.0;
+ m_queueing_latency = 0.0;
+
// Currently Garnet only supports uniform bandwidth for all
// links and network interfaces.
for (std::vector<BasicExtLink*>::const_iterator i =
@@ -59,6 +66,34 @@ BaseGarnetNetwork::BaseGarnetNetwork(const Params *p)
fatal("Garnet only supports uniform bw across all links and NIs\n");
}
}
+
+ // Allocate to and from queues
+
+ // Queues that are getting messages from protocol
+ m_toNetQueues.resize(m_nodes);
+
+ // Queues that are feeding the protocol
+ m_fromNetQueues.resize(m_nodes);
+
+ m_in_use.resize(m_virtual_networks);
+ m_ordered.resize(m_virtual_networks);
+ for (int i = 0; i < m_virtual_networks; i++) {
+ m_in_use[i] = false;
+ m_ordered[i] = false;
+ }
+
+ for (int node = 0; node < m_nodes; node++) {
+ // Setting number of virtual message buffers per Network Queue
+ m_toNetQueues[node].resize(m_virtual_networks);
+ m_fromNetQueues[node].resize(m_virtual_networks);
+
+ // Instantiating the Message Buffers that
+ // interact with the coherence protocol
+ for (int j = 0; j < m_virtual_networks; j++) {
+ m_toNetQueues[node][j] = new MessageBuffer();
+ m_fromNetQueues[node][j] = new MessageBuffer();
+ }
+ }
}
void
diff --git a/src/mem/ruby/network/garnet/BaseGarnetNetwork.hh b/src/mem/ruby/network/garnet/BaseGarnetNetwork.hh
index 4ff04b683..8e3115eb5 100644
--- a/src/mem/ruby/network/garnet/BaseGarnetNetwork.hh
+++ b/src/mem/ruby/network/garnet/BaseGarnetNetwork.hh
@@ -60,6 +60,19 @@ class BaseGarnetNetwork : public Network
int m_vcs_per_class;
int m_buffers_per_data_vc;
int m_buffers_per_ctrl_vc;
+
+ int m_flits_received;
+ int m_flits_injected;
+ double m_network_latency;
+ double m_queueing_latency;
+
+ std::vector<bool> m_in_use;
+ std::vector<bool> m_ordered;
+
+ std::vector<std::vector<MessageBuffer*> > m_toNetQueues;
+ std::vector<std::vector<MessageBuffer*> > m_fromNetQueues;
+
+ Time m_ruby_start;
};
#endif // __MEM_RUBY_NETWORK_GARNET_BASEGARNETNETWORK_HH__
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 5aa9ceca8..c8b9fbea7 100644
--- a/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc
+++ b/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc
@@ -49,12 +49,6 @@ using m5::stl_helpers::deletePointers;
GarnetNetwork_d::GarnetNetwork_d(const Params *p)
: BaseGarnetNetwork(p)
{
- m_ruby_start = 0;
- m_flits_received = 0;
- m_flits_injected = 0;
- m_network_latency = 0.0;
- m_queueing_latency = 0.0;
-
// record the routers
for (vector<BasicRouter*>::const_iterator i =
m_topology_ptr->params()->routers.begin();
@@ -62,32 +56,6 @@ GarnetNetwork_d::GarnetNetwork_d(const Params *p)
Router_d* router = safe_cast<Router_d*>(*i);
m_router_ptr_vector.push_back(router);
}
-
- // Queues that are getting messages from protocol
- m_toNetQueues.resize(m_nodes);
-
- // Queues that are feeding the protocol
- m_fromNetQueues.resize(m_nodes);
- m_in_use.resize(m_virtual_networks);
- m_ordered.resize(m_virtual_networks);
- for (int i = 0; i < m_virtual_networks; i++) {
- m_in_use[i] = false;
- m_ordered[i] = false;
- }
-
- for (int node = 0; node < m_nodes; node++) {
- // Setting how many vitual message buffers
- // will there be per Network Queue
- m_toNetQueues[node].resize(m_virtual_networks);
- m_fromNetQueues[node].resize(m_virtual_networks);
-
- // Instantiating the Message Buffers
- // that interact with the coherence protocol
- for (int j = 0; j < m_virtual_networks; j++) {
- m_toNetQueues[node][j] = new MessageBuffer();
- m_fromNetQueues[node][j] = new MessageBuffer();
- }
- }
}
void
diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.hh b/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.hh
index 7c6e5f8e1..b4e264be1 100644
--- a/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.hh
+++ b/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.hh
@@ -125,24 +125,11 @@ class GarnetNetwork_d : public BaseGarnetNetwork
GarnetNetwork_d& operator=(const GarnetNetwork_d& obj);
std::vector<VNET_type > m_vnet_type;
- // int m_virtual_networks;
- // int m_nodes;
- int m_flits_received, m_flits_injected;
- double m_network_latency, m_queueing_latency;
-
- std::vector<bool> m_in_use;
- std::vector<bool> m_ordered;
-
- std::vector<std::vector<MessageBuffer*> > m_toNetQueues;
- std::vector<std::vector<MessageBuffer*> > m_fromNetQueues;
std::vector<Router_d *> m_router_ptr_vector; // All Routers in Network
std::vector<NetworkLink_d *> m_link_ptr_vector; // All links in the network
std::vector<CreditLink_d *> m_creditlink_ptr_vector; // All links in net
std::vector<NetworkInterface_d *> m_ni_ptr_vector; // All NI's in Network
-
- // Topology* m_topology_ptr;
- Time m_ruby_start;
};
inline std::ostream&
diff --git a/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc b/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc
index 551e83fa3..d403633a8 100644
--- a/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc
+++ b/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc
@@ -50,12 +50,6 @@ GarnetNetwork::GarnetNetwork(const Params *p)
{
m_buffer_size = p->buffer_size;
- m_ruby_start = 0;
- m_flits_received = 0;
- m_flits_injected = 0;
- m_network_latency = 0.0;
- m_queueing_latency = 0.0;
-
// record the routers
for (vector<BasicRouter*>::const_iterator i =
m_topology_ptr->params()->routers.begin();
@@ -63,34 +57,6 @@ GarnetNetwork::GarnetNetwork(const Params *p)
Router* router = safe_cast<Router*>(*i);
m_router_ptr_vector.push_back(router);
}
-
- // Allocate to and from queues
-
- // Queues that are getting messages from protocol
- m_toNetQueues.resize(m_nodes);
-
- // Queues that are feeding the protocol
- m_fromNetQueues.resize(m_nodes);
-
- m_in_use.resize(m_virtual_networks);
- m_ordered.resize(m_virtual_networks);
- for (int i = 0; i < m_virtual_networks; i++) {
- m_in_use[i] = false;
- m_ordered[i] = false;
- }
-
- for (int node = 0; node < m_nodes; node++) {
- //Setting number of virtual message buffers per Network Queue
- m_toNetQueues[node].resize(m_virtual_networks);
- m_fromNetQueues[node].resize(m_virtual_networks);
-
- // Instantiating the Message Buffers that
- // interact with the coherence protocol
- for (int j = 0; j < m_virtual_networks; j++) {
- m_toNetQueues[node][j] = new MessageBuffer();
- m_fromNetQueues[node][j] = new MessageBuffer();
- }
- }
}
void
diff --git a/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.hh b/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.hh
index 943739041..a19e167a8 100644
--- a/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.hh
+++ b/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.hh
@@ -110,20 +110,10 @@ class GarnetNetwork : public BaseGarnetNetwork
GarnetNetwork(const GarnetNetwork& obj);
GarnetNetwork& operator=(const GarnetNetwork& obj);
- int m_flits_received, m_flits_injected;
- double m_network_latency, m_queueing_latency;
-
- std::vector<bool> m_in_use;
- std::vector<bool> m_ordered;
-
- std::vector<std::vector<MessageBuffer*> > m_toNetQueues;
- std::vector<std::vector<MessageBuffer*> > m_fromNetQueues;
-
std::vector<Router *> m_router_ptr_vector; // All Routers in Network
std::vector<NetworkLink *> m_link_ptr_vector; // All links in network
std::vector<NetworkInterface *> m_ni_ptr_vector; // All NI's in Network
- Time m_ruby_start;
int m_buffer_size;
};