diff options
author | Tushar Krishna <tushar@csail.mit.edu> | 2011-05-18 03:06:07 -0400 |
---|---|---|
committer | Tushar Krishna <tushar@csail.mit.edu> | 2011-05-18 03:06:07 -0400 |
commit | 3ed048e4f5854b260a29164da92ba16ad7881740 (patch) | |
tree | f5d4658fc36724eec7cac67c1900caf39a64b219 /src/mem/ruby/network/garnet | |
parent | 26eaba4cb5a5933c17abe9efca8590610f1e36b4 (diff) | |
download | gem5-3ed048e4f5854b260a29164da92ba16ad7881740.tar.xz |
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.
Diffstat (limited to 'src/mem/ruby/network/garnet')
4 files changed, 20 insertions, 8 deletions
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; |