From 3ed048e4f5854b260a29164da92ba16ad7881740 Mon Sep 17 00:00:00 2001 From: Tushar Krishna Date: Wed, 18 May 2011 03:06:07 -0400 Subject: slicc: added vnet_type field to identify response vnets from others Identifying response vnets versus other vnets will allow garnet to determine which vnets will carry data packets, and which will carry ctrl packets, and use appropriate buffer sizes (since data packets are larger than ctrl packets). This in turn allows the orion power model to accurately estimate buffer power. --- src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc | 10 ++++++++-- src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.hh | 6 ++++-- src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc | 6 ++++-- src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.hh | 6 ++++-- 4 files changed, 20 insertions(+), 8 deletions(-) (limited to 'src/mem/ruby/network/garnet') 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 17dba251d..dc24900c4 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc +++ b/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc @@ -227,14 +227,20 @@ GarnetNetwork_d::checkNetworkAllocation(NodeID id, bool ordered, } MessageBuffer* -GarnetNetwork_d::getToNetQueue(NodeID id, bool ordered, int network_num) +GarnetNetwork_d::getToNetQueue(NodeID id, bool ordered, int network_num, + std::string vnet_type) { + // TODO: + //if (vnet_type == "response") + // mark vnet as data vnet and use buffers_per_data_vc + checkNetworkAllocation(id, ordered, network_num); return m_toNetQueues[id][network_num]; } MessageBuffer* -GarnetNetwork_d::getFromNetQueue(NodeID id, bool ordered, int network_num) +GarnetNetwork_d::getFromNetQueue(NodeID id, bool ordered, int network_num, + std::string vnet_type) { checkNetworkAllocation(id, ordered, network_num); return m_fromNetQueues[id][network_num]; 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 6254bd383..f2b3bd4ef 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.hh +++ b/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.hh @@ -63,8 +63,10 @@ class GarnetNetwork_d : public BaseGarnetNetwork 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); + MessageBuffer* getToNetQueue(NodeID id, bool ordered, int network_num, + std::string vnet_type); + MessageBuffer* getFromNetQueue(NodeID id, bool ordered, int network_num, + std::string vnet_type); void clearStats(); void printStats(std::ostream& out) const; diff --git a/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc b/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc index 62ae2dbd6..2c0d9f3aa 100644 --- a/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc +++ b/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc @@ -192,14 +192,16 @@ GarnetNetwork::checkNetworkAllocation(NodeID id, bool ordered, } MessageBuffer* -GarnetNetwork::getToNetQueue(NodeID id, bool ordered, int network_num) +GarnetNetwork::getToNetQueue(NodeID id, bool ordered, int network_num, + std::string vnet_type) { checkNetworkAllocation(id, ordered, network_num); return m_toNetQueues[id][network_num]; } MessageBuffer* -GarnetNetwork::getFromNetQueue(NodeID id, bool ordered, int network_num) +GarnetNetwork::getFromNetQueue(NodeID id, bool ordered, int network_num, + std::string vnet_type) { checkNetworkAllocation(id, ordered, network_num); return m_fromNetQueues[id][network_num]; diff --git a/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.hh b/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.hh index 6e08330f3..5c7959131 100644 --- a/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.hh +++ b/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.hh @@ -60,8 +60,10 @@ class GarnetNetwork : public BaseGarnetNetwork int getNumPipeStages() {return m_number_of_pipe_stages; } // 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); + MessageBuffer* getToNetQueue(NodeID id, bool ordered, int network_num, + std::string vnet_type); + MessageBuffer* getFromNetQueue(NodeID id, bool ordered, int network_num, + std::string vnet_type); void clearStats(); void printStats(std::ostream& out) const; -- cgit v1.2.3