changeset 8743998edfd3 in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=8743998edfd3
description:
        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:

 src/mem/ruby/network/BasicLink.py                              |   2 +-
 src/mem/ruby/network/garnet/BaseGarnetNetwork.cc               |  35 ++++++++++
 src/mem/ruby/network/garnet/BaseGarnetNetwork.hh               |  13 +++
 src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc  |  32 ---------
 src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.hh  |  13 ---
 src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc |  34 ---------
 src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.hh |  10 --
 7 files changed, 49 insertions(+), 90 deletions(-)

diffs (246 lines):

diff -r 89d0e7c17d1e -r 8743998edfd3 src/mem/ruby/network/BasicLink.py
--- a/src/mem/ruby/network/BasicLink.py Thu Apr 28 17:18:14 2011 -0700
+++ b/src/mem/ruby/network/BasicLink.py Thu Apr 28 17:18:14 2011 -0700
@@ -45,7 +45,7 @@
     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 -r 89d0e7c17d1e -r 8743998edfd3 
src/mem/ruby/network/garnet/BaseGarnetNetwork.cc
--- a/src/mem/ruby/network/garnet/BaseGarnetNetwork.cc  Thu Apr 28 17:18:14 
2011 -0700
+++ b/src/mem/ruby/network/garnet/BaseGarnetNetwork.cc  Thu Apr 28 17:18:14 
2011 -0700
@@ -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 @@
     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 @@
             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 -r 89d0e7c17d1e -r 8743998edfd3 
src/mem/ruby/network/garnet/BaseGarnetNetwork.hh
--- a/src/mem/ruby/network/garnet/BaseGarnetNetwork.hh  Thu Apr 28 17:18:14 
2011 -0700
+++ b/src/mem/ruby/network/garnet/BaseGarnetNetwork.hh  Thu Apr 28 17:18:14 
2011 -0700
@@ -60,6 +60,19 @@
     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 -r 89d0e7c17d1e -r 8743998edfd3 
src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc
--- a/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc     Thu Apr 
28 17:18:14 2011 -0700
+++ b/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc     Thu Apr 
28 17:18:14 2011 -0700
@@ -49,12 +49,6 @@
 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 @@
         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 -r 89d0e7c17d1e -r 8743998edfd3 
src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.hh
--- a/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.hh     Thu Apr 
28 17:18:14 2011 -0700
+++ b/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.hh     Thu Apr 
28 17:18:14 2011 -0700
@@ -125,24 +125,11 @@
     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 -r 89d0e7c17d1e -r 8743998edfd3 
src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc
--- a/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc    Thu Apr 
28 17:18:14 2011 -0700
+++ b/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc    Thu Apr 
28 17:18:14 2011 -0700
@@ -50,12 +50,6 @@
 {
     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 @@
         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 -r 89d0e7c17d1e -r 8743998edfd3 
src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.hh
--- a/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.hh    Thu Apr 
28 17:18:14 2011 -0700
+++ b/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.hh    Thu Apr 
28 17:18:14 2011 -0700
@@ -110,20 +110,10 @@
     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;
 };
 
_______________________________________________
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to