From 26eaba4cb5a5933c17abe9efca8590610f1e36b4 Mon Sep 17 00:00:00 2001 From: Tushar Krishna Date: Wed, 18 May 2011 03:04:14 -0400 Subject: garnet: rename and rearrange config parameters. Renamed (message) class to vnet for consistency with rest of ruby. Moved some parameters specific to fixed/flexible garnet networks into their corresponding py files. --- src/mem/ruby/network/garnet/fixed-pipeline/GarnetLink_d.py | 4 ++-- .../ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc | 13 ++++++++----- .../ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.hh | 10 ++++++++-- .../ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.py | 3 ++- .../ruby/network/garnet/fixed-pipeline/GarnetRouter_d.py | 4 ++-- .../network/garnet/fixed-pipeline/NetworkInterface_d.cc | 2 +- src/mem/ruby/network/garnet/fixed-pipeline/NetworkLink_d.cc | 4 ++-- src/mem/ruby/network/garnet/fixed-pipeline/Router_d.cc | 2 +- 8 files changed, 26 insertions(+), 16 deletions(-) (limited to 'src/mem/ruby/network/garnet/fixed-pipeline') diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/GarnetLink_d.py b/src/mem/ruby/network/garnet/fixed-pipeline/GarnetLink_d.py index 363ff2e44..1fb7e0b7b 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/GarnetLink_d.py +++ b/src/mem/ruby/network/garnet/fixed-pipeline/GarnetLink_d.py @@ -37,8 +37,8 @@ class NetworkLink_d(SimObject): type = 'NetworkLink_d' link_id = Param.Int(Parent.link_id, "link id") link_latency = Param.Int(Parent.latency, "link latency") - vcs_per_class = Param.Int(Parent.vcs_per_class, - "virtual channels per message class") + vcs_per_vnet = Param.Int(Parent.vcs_per_vnet, + "virtual channels per virtual network") virt_nets = Param.Int(Parent.number_of_virtual_networks, "number of virtual networks") channel_width = Param.Int(Parent.bandwidth_factor, 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 c8b9fbea7..17dba251d 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc +++ b/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc @@ -49,6 +49,9 @@ using m5::stl_helpers::deletePointers; GarnetNetwork_d::GarnetNetwork_d(const Params *p) : BaseGarnetNetwork(p) { + m_buffers_per_data_vc = p->buffers_per_data_vc; + m_buffers_per_ctrl_vc = p->buffers_per_ctrl_vc; + // record the routers for (vector::const_iterator i = m_topology_ptr->params()->routers.begin(); @@ -254,9 +257,9 @@ GarnetNetwork_d::printStats(ostream& out) const { double average_link_utilization = 0; vector average_vc_load; - average_vc_load.resize(m_virtual_networks*m_vcs_per_class); + average_vc_load.resize(m_virtual_networks*m_vcs_per_vnet); - for (int i = 0; i < m_virtual_networks*m_vcs_per_class; i++) + for (int i = 0; i < m_virtual_networks*m_vcs_per_vnet; i++) { average_vc_load[i] = 0; } @@ -272,7 +275,7 @@ GarnetNetwork_d::printStats(ostream& out) const vector vc_load = m_link_ptr_vector[i]->getVcLoad(); for (int j = 0; j < vc_load.size(); j++) { - assert(vc_load.size() == m_vcs_per_class*m_virtual_networks); + assert(vc_load.size() == m_vcs_per_vnet*m_virtual_networks); average_vc_load[j] += vc_load[j]; } } @@ -282,8 +285,8 @@ GarnetNetwork_d::printStats(ostream& out) const << " flits/cycle" << endl; out << "-------------" << endl; - for (int i = 0; i < m_vcs_per_class*m_virtual_networks; i++) { - if (!m_in_use[i/m_vcs_per_class]) + for (int i = 0; i < m_vcs_per_vnet*m_virtual_networks; i++) { + if (!m_in_use[i/m_vcs_per_vnet]) continue; average_vc_load[i] = (double(average_vc_load[i]) / 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 b4e264be1..6254bd383 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.hh +++ b/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.hh @@ -59,6 +59,9 @@ class GarnetNetwork_d : public BaseGarnetNetwork int getNumNodes() { return m_nodes; } + int getBuffersPerDataVC() {return m_buffers_per_data_vc; } + int getBuffersPerCtrlVC() {return m_buffers_per_ctrl_vc; } + // returns the queue requested for the given component MessageBuffer* getToNetQueue(NodeID id, bool ordered, int network_num); MessageBuffer* getFromNetQueue(NodeID id, bool ordered, int network_num); @@ -71,14 +74,14 @@ class GarnetNetwork_d : public BaseGarnetNetwork void set_vnet_type(int vc, VNET_type vnet_type) { - int vnet = vc/getVCsPerClass(); + int vnet = vc/getVCsPerVnet(); m_vnet_type[vnet] = vnet_type; } VNET_type get_vnet_type(int vc) { - int vnet = vc/getVCsPerClass(); + int vnet = vc/getVCsPerVnet(); return m_vnet_type[vnet]; } @@ -130,6 +133,9 @@ class GarnetNetwork_d : public BaseGarnetNetwork std::vector m_link_ptr_vector; // All links in the network std::vector m_creditlink_ptr_vector; // All links in net std::vector m_ni_ptr_vector; // All NI's in Network + + int m_buffers_per_data_vc; + int m_buffers_per_ctrl_vc; }; inline std::ostream& diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.py b/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.py index ee7a4a480..a3a00525d 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.py +++ b/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.py @@ -33,4 +33,5 @@ from BaseGarnetNetwork import BaseGarnetNetwork class GarnetNetwork_d(BaseGarnetNetwork): type = 'GarnetNetwork_d' - + buffers_per_data_vc = Param.Int(4, "buffers per data virtual channel"); + buffers_per_ctrl_vc = Param.Int(1, "buffers per ctrl virtual channel"); diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/GarnetRouter_d.py b/src/mem/ruby/network/garnet/fixed-pipeline/GarnetRouter_d.py index c88568d2d..b2a01fb46 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/GarnetRouter_d.py +++ b/src/mem/ruby/network/garnet/fixed-pipeline/GarnetRouter_d.py @@ -35,8 +35,8 @@ from BasicRouter import BasicRouter class GarnetRouter_d(BasicRouter): type = 'GarnetRouter_d' cxx_class = 'Router_d' - vcs_per_class = Param.Int(Parent.vcs_per_class, - "virtual channels per message class") + vcs_per_vnet = Param.Int(Parent.vcs_per_vnet, + "virtual channels per virtual network") virt_nets = Param.Int(Parent.number_of_virtual_networks, "number of virtual networks") diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.cc b/src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.cc index 0dd51019c..558352253 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.cc +++ b/src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.cc @@ -47,7 +47,7 @@ NetworkInterface_d::NetworkInterface_d(int id, int virtual_networks, m_id = id; m_net_ptr = network_ptr; m_virtual_networks = virtual_networks; - m_vc_per_vnet = m_net_ptr->getVCsPerClass(); + m_vc_per_vnet = m_net_ptr->getVCsPerVnet(); m_num_vcs = m_vc_per_vnet*m_virtual_networks; m_vc_round_robin = 0; diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/NetworkLink_d.cc b/src/mem/ruby/network/garnet/fixed-pipeline/NetworkLink_d.cc index 38627b109..cc6ec6abf 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/NetworkLink_d.cc +++ b/src/mem/ruby/network/garnet/fixed-pipeline/NetworkLink_d.cc @@ -39,9 +39,9 @@ NetworkLink_d::NetworkLink_d(const Params *p) m_id = p->link_id; linkBuffer = new flitBuffer_d(); m_link_utilized = 0; - m_vc_load.resize(p->vcs_per_class * p->virt_nets); + m_vc_load.resize(p->vcs_per_vnet * p->virt_nets); - for (int i = 0; i < (p->vcs_per_class * p->virt_nets); i++) { + for (int i = 0; i < (p->vcs_per_vnet * p->virt_nets); i++) { m_vc_load[i] = 0; } } diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/Router_d.cc b/src/mem/ruby/network/garnet/fixed-pipeline/Router_d.cc index d8f460e2e..62ab5ce07 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/Router_d.cc +++ b/src/mem/ruby/network/garnet/fixed-pipeline/Router_d.cc @@ -47,7 +47,7 @@ Router_d::Router_d(const Params *p) : BasicRouter(p) { m_virtual_networks = p->virt_nets; - m_vc_per_vnet = p->vcs_per_class; + m_vc_per_vnet = p->vcs_per_vnet; m_num_vcs = m_virtual_networks * m_vc_per_vnet; m_routing_unit = new RoutingUnit_d(this); -- cgit v1.2.3