From f6e3ab7bd4d6c27fd400c718bfe225b09a3b486b Mon Sep 17 00:00:00 2001 From: Nilay Vaish Date: Sun, 10 Feb 2013 21:43:09 -0600 Subject: ruby: replace Time with Cycles in garnet fixed and flexible --- .../garnet/flexible-pipeline/FlexibleConsumer.hh | 6 +++--- .../network/garnet/flexible-pipeline/InVcState.cc | 6 +++--- .../network/garnet/flexible-pipeline/InVcState.hh | 10 +++++----- .../garnet/flexible-pipeline/NetworkInterface.cc | 18 ++++++++++-------- .../garnet/flexible-pipeline/NetworkInterface.hh | 6 +++--- .../network/garnet/flexible-pipeline/NetworkLink.cc | 6 +++--- .../network/garnet/flexible-pipeline/NetworkLink.hh | 6 +++--- .../network/garnet/flexible-pipeline/OutVcState.cc | 6 +++--- .../network/garnet/flexible-pipeline/OutVcState.hh | 10 +++++----- .../ruby/network/garnet/flexible-pipeline/Router.cc | 20 +++++++++++--------- .../ruby/network/garnet/flexible-pipeline/Router.hh | 4 ++-- .../ruby/network/garnet/flexible-pipeline/flit.cc | 12 ++++++------ .../ruby/network/garnet/flexible-pipeline/flit.hh | 18 +++++++++--------- .../network/garnet/flexible-pipeline/flitBuffer.cc | 4 ++-- .../network/garnet/flexible-pipeline/flitBuffer.hh | 4 ++-- 15 files changed, 70 insertions(+), 66 deletions(-) (limited to 'src/mem/ruby/network/garnet/flexible-pipeline') diff --git a/src/mem/ruby/network/garnet/flexible-pipeline/FlexibleConsumer.hh b/src/mem/ruby/network/garnet/flexible-pipeline/FlexibleConsumer.hh index 23a1a91be..f0fe26314 100644 --- a/src/mem/ruby/network/garnet/flexible-pipeline/FlexibleConsumer.hh +++ b/src/mem/ruby/network/garnet/flexible-pipeline/FlexibleConsumer.hh @@ -40,10 +40,10 @@ class FlexibleConsumer : public Consumer public: FlexibleConsumer(ClockedObject *em) : Consumer(em) {} virtual bool isBufferNotFull(int vc, int inport) { return true; } - virtual void grant_vc(int out_port, int vc, Time grant_time) {} - virtual void release_vc(int out_port, int vc, Time release_time) {} + virtual void grant_vc(int out_port, int vc, Cycles grant_time) {} + virtual void release_vc(int out_port, int vc, Cycles release_time) {} virtual void request_vc(int vc, int in_port, NetDest destination, - Time request_time) {} + Cycles request_time) {} }; #endif // __MEM_RUBY_NETWORK_GARNET_FLEXIBLE_PIPELINE_FLEXIBLE_CONSUMER_HH__ diff --git a/src/mem/ruby/network/garnet/flexible-pipeline/InVcState.cc b/src/mem/ruby/network/garnet/flexible-pipeline/InVcState.cc index d688dc1fd..dc2d3f24a 100644 --- a/src/mem/ruby/network/garnet/flexible-pipeline/InVcState.cc +++ b/src/mem/ruby/network/garnet/flexible-pipeline/InVcState.cc @@ -37,7 +37,7 @@ InVcState::InVcState(int id) } bool -InVcState::isInState(VC_state_type state, Time request_time) +InVcState::isInState(VC_state_type state, Cycles request_time) { return ((m_vc_state == state) && (request_time >= m_time) ); } @@ -49,14 +49,14 @@ InVcState::setRoute(int route) } void -InVcState::setState(VC_state_type state, Time time) +InVcState::setState(VC_state_type state, Cycles time) { m_vc_state = state; m_time = time; } void -InVcState::grant_vc(int out_vc, Time grant_time) +InVcState::grant_vc(int out_vc, Cycles grant_time) { m_vc_state = ACTIVE_; m_time = grant_time; diff --git a/src/mem/ruby/network/garnet/flexible-pipeline/InVcState.hh b/src/mem/ruby/network/garnet/flexible-pipeline/InVcState.hh index e98bf3f7b..4f4f95f5c 100644 --- a/src/mem/ruby/network/garnet/flexible-pipeline/InVcState.hh +++ b/src/mem/ruby/network/garnet/flexible-pipeline/InVcState.hh @@ -31,7 +31,7 @@ #ifndef __MEM_RUBY_NETWORK_GARNET_FLEXIBLE_PIPELINE_IN_VC_STATE_HH__ #define __MEM_RUBY_NETWORK_GARNET_FLEXIBLE_PIPELINE_IN_VC_STATE_HH__ -#include "mem/ruby/common/TypeDefines.hh" +#include "base/types.hh" #include "mem/ruby/network/garnet/NetworkHeader.hh" class InVcState @@ -40,18 +40,18 @@ class InVcState InVcState(int id); void setRoute(int route); - void setState(VC_state_type state, Time time); + void setState(VC_state_type state, Cycles time); int get_outport(); int get_outvc(); - void grant_vc(int out_vc, Time grant_time); - bool isInState(VC_state_type state, Time time); + void grant_vc(int out_vc, Cycles grant_time); + bool isInState(VC_state_type state, Cycles time); private: int m_id; int m_route; int m_output_vc; VC_state_type m_vc_state; - Time m_time; + Cycles m_time; }; #endif // __MEM_RUBY_NETWORK_GARNET_FLEXIBLE_PIPELINE_IN_VC_STATE_HH__ diff --git a/src/mem/ruby/network/garnet/flexible-pipeline/NetworkInterface.cc b/src/mem/ruby/network/garnet/flexible-pipeline/NetworkInterface.cc index f0d59f4b4..ddb5da716 100644 --- a/src/mem/ruby/network/garnet/flexible-pipeline/NetworkInterface.cc +++ b/src/mem/ruby/network/garnet/flexible-pipeline/NetworkInterface.cc @@ -112,7 +112,7 @@ NetworkInterface::addNode(vector& in, void NetworkInterface::request_vc(int in_vc, int in_port, NetDest destination, - Time request_time) + Cycles request_time) { inNetLink->grant_vc_link(in_vc, request_time); } @@ -189,7 +189,7 @@ NetworkInterface::flitisizeMessage(MsgPtr msg_ptr, int vnet) // An output vc has been granted at the next hop to one of the vc's. // We have to update the state of the vc to reflect this void -NetworkInterface::grant_vc(int out_port, int vc, Time grant_time) +NetworkInterface::grant_vc(int out_port, int vc, Cycles grant_time) { assert(m_out_vc_state[vc]->isInState(VC_AB_, grant_time)); m_out_vc_state[vc]->grant_vc(grant_time); @@ -199,7 +199,7 @@ NetworkInterface::grant_vc(int out_port, int vc, Time grant_time) // The tail flit corresponding to this vc has been buffered at the next hop // and thus this vc is now free void -NetworkInterface::release_vc(int out_port, int vc, Time release_time) +NetworkInterface::release_vc(int out_port, int vc, Cycles release_time) { assert(m_out_vc_state[vc]->isInState(ACTIVE_, release_time)); m_out_vc_state[vc]->setState(IDLE_, release_time); @@ -274,13 +274,15 @@ NetworkInterface::wakeup() // signal the upstream router that this vc can be freed now inNetLink->release_vc_link(t_flit->get_vc(), - m_net_ptr->curCycle() + 1); + m_net_ptr->curCycle() + Cycles(1)); } + int vnet = t_flit->get_vnet(); m_net_ptr->increment_received_flits(vnet); - int network_delay = m_net_ptr->curCycle() - - t_flit->get_enqueue_time(); - int queueing_delay = t_flit->get_delay(); + Cycles network_delay = m_net_ptr->curCycle() - + t_flit->get_enqueue_time(); + Cycles queueing_delay = t_flit->get_delay(); + m_net_ptr->increment_network_latency(network_delay, vnet); m_net_ptr->increment_queueing_latency(queueing_delay, vnet); delete t_flit; @@ -312,7 +314,7 @@ NetworkInterface::scheduleOutputLink() // Just removing the flit flit *t_flit = m_ni_buffers[vc]->getTopFlit(); - t_flit->set_time(m_net_ptr->curCycle() + 1); + t_flit->set_time(m_net_ptr->curCycle() + Cycles(1)); outSrcQueue->insert(t_flit); // schedule the out link diff --git a/src/mem/ruby/network/garnet/flexible-pipeline/NetworkInterface.hh b/src/mem/ruby/network/garnet/flexible-pipeline/NetworkInterface.hh index bcacb3f2e..a4dd36da6 100644 --- a/src/mem/ruby/network/garnet/flexible-pipeline/NetworkInterface.hh +++ b/src/mem/ruby/network/garnet/flexible-pipeline/NetworkInterface.hh @@ -59,8 +59,8 @@ class NetworkInterface : public FlexibleConsumer void wakeup(); void addNode(std::vector &inNode, std::vector &outNode); - void grant_vc(int out_port, int vc, Time grant_time); - void release_vc(int out_port, int vc, Time release_time); + void grant_vc(int out_port, int vc, Cycles grant_time); + void release_vc(int out_port, int vc, Cycles release_time); bool isBufferNotFull(int vc, int inport) @@ -68,7 +68,7 @@ class NetworkInterface : public FlexibleConsumer return true; } void request_vc(int in_vc, int in_port, NetDest destination, - Time request_time); + Cycles request_time); void print(std::ostream& out) const; diff --git a/src/mem/ruby/network/garnet/flexible-pipeline/NetworkLink.cc b/src/mem/ruby/network/garnet/flexible-pipeline/NetworkLink.cc index b9faef28d..cdcd5a622 100644 --- a/src/mem/ruby/network/garnet/flexible-pipeline/NetworkLink.cc +++ b/src/mem/ruby/network/garnet/flexible-pipeline/NetworkLink.cc @@ -78,7 +78,7 @@ NetworkLink::setSource(FlexibleConsumer *source) } void -NetworkLink::request_vc_link(int vc, NetDest destination, Time request_time) +NetworkLink::request_vc_link(int vc, NetDest destination, Cycles request_time) { link_consumer->request_vc(vc, m_in_port, destination, request_time); } @@ -90,13 +90,13 @@ NetworkLink::isBufferNotFull_link(int vc) } void -NetworkLink::grant_vc_link(int vc, Time grant_time) +NetworkLink::grant_vc_link(int vc, Cycles grant_time) { link_source->grant_vc(m_out_port, vc, grant_time); } void -NetworkLink::release_vc_link(int vc, Time release_time) +NetworkLink::release_vc_link(int vc, Cycles release_time) { link_source->release_vc(m_out_port, vc, release_time); } diff --git a/src/mem/ruby/network/garnet/flexible-pipeline/NetworkLink.hh b/src/mem/ruby/network/garnet/flexible-pipeline/NetworkLink.hh index 3bee9f659..7003114a1 100644 --- a/src/mem/ruby/network/garnet/flexible-pipeline/NetworkLink.hh +++ b/src/mem/ruby/network/garnet/flexible-pipeline/NetworkLink.hh @@ -64,9 +64,9 @@ class NetworkLink : public ClockedObject, public FlexibleConsumer void setOutPort(int port); void wakeup(); bool isReady(); - void grant_vc_link(int vc, Time grant_time); - void release_vc_link(int vc, Time release_time); - void request_vc_link(int vc, NetDest destination, Time request_time); + void grant_vc_link(int vc, Cycles grant_time); + void release_vc_link(int vc, Cycles release_time); + void request_vc_link(int vc, NetDest destination, Cycles request_time); bool isBufferNotFull_link(int vc); void setSource(FlexibleConsumer *source); double getLinkUtilization(); diff --git a/src/mem/ruby/network/garnet/flexible-pipeline/OutVcState.cc b/src/mem/ruby/network/garnet/flexible-pipeline/OutVcState.cc index c1696a551..e08f7f93a 100644 --- a/src/mem/ruby/network/garnet/flexible-pipeline/OutVcState.cc +++ b/src/mem/ruby/network/garnet/flexible-pipeline/OutVcState.cc @@ -37,20 +37,20 @@ OutVcState::OutVcState(int id) } bool -OutVcState::isInState(VC_state_type state, Time request_time) +OutVcState::isInState(VC_state_type state, Cycles request_time) { return ((m_vc_state == state) && (request_time >= m_time)); } void -OutVcState::grant_vc(Time grant_time) +OutVcState::grant_vc(Cycles grant_time) { m_time = grant_time; m_vc_state = ACTIVE_; } void -OutVcState::setState(VC_state_type state, Time time) +OutVcState::setState(VC_state_type state, Cycles time) { m_vc_state = state; m_time = time; diff --git a/src/mem/ruby/network/garnet/flexible-pipeline/OutVcState.hh b/src/mem/ruby/network/garnet/flexible-pipeline/OutVcState.hh index 03ea14076..3462ee7bf 100644 --- a/src/mem/ruby/network/garnet/flexible-pipeline/OutVcState.hh +++ b/src/mem/ruby/network/garnet/flexible-pipeline/OutVcState.hh @@ -31,7 +31,7 @@ #ifndef __MEM_RUBY_NETWORK_GARNET_FLEXIBLE_PIPELINE_OUT_VC_STATE_HH__ #define __MEM_RUBY_NETWORK_GARNET_FLEXIBLE_PIPELINE_OUT_VC_STATE_HH__ -#include "mem/ruby/common/TypeDefines.hh" +#include "base/types.hh" #include "mem/ruby/network/garnet/NetworkHeader.hh" class OutVcState @@ -39,13 +39,13 @@ class OutVcState public: OutVcState(int id); - bool isInState(VC_state_type state, Time request_time); - void setState(VC_state_type state, Time time); - void grant_vc(Time grant_time); + bool isInState(VC_state_type state, Cycles request_time); + void setState(VC_state_type state, Cycles time); + void grant_vc(Cycles grant_time); private: int m_id ; - Time m_time; + Cycles m_time; VC_state_type m_vc_state; }; diff --git a/src/mem/ruby/network/garnet/flexible-pipeline/Router.cc b/src/mem/ruby/network/garnet/flexible-pipeline/Router.cc index 71ee1d0bf..98317818b 100644 --- a/src/mem/ruby/network/garnet/flexible-pipeline/Router.cc +++ b/src/mem/ruby/network/garnet/flexible-pipeline/Router.cc @@ -227,7 +227,7 @@ Router::get_valid_vcs(int invc) } void -Router::grant_vc(int out_port, int vc, Time grant_time) +Router::grant_vc(int out_port, int vc, Cycles grant_time) { assert(m_out_vc_state[out_port][vc]->isInState(VC_AB_, grant_time)); m_out_vc_state[out_port][vc]->grant_vc(grant_time); @@ -235,7 +235,7 @@ Router::grant_vc(int out_port, int vc, Time grant_time) } void -Router::release_vc(int out_port, int vc, Time release_time) +Router::release_vc(int out_port, int vc, Cycles release_time) { assert(m_out_vc_state[out_port][vc]->isInState(ACTIVE_, release_time)); m_out_vc_state[out_port][vc]->setState(IDLE_, release_time); @@ -269,7 +269,7 @@ Router::routeCompute(flit *m_flit, int inport) assert(m_net_ptr->getNumPipeStages() >= 1); // Subtract 1 as 1 cycle will be consumed in scheduling the output link - m_flit->set_time(curCycle() + (m_net_ptr->getNumPipeStages() - 1)); + m_flit->set_time(curCycle() + Cycles((m_net_ptr->getNumPipeStages() - 1))); m_flit->set_vc(outvc); m_router_buffers[outport][outvc]->insert(m_flit); @@ -282,9 +282,10 @@ Router::routeCompute(flit *m_flit, int inport) NetDest destination = nm->getInternalDestination(); if (m_net_ptr->getNumPipeStages() > 1) { - m_out_vc_state[outport][outvc]->setState(VC_AB_, curCycle() + 1); + m_out_vc_state[outport][outvc]->setState(VC_AB_, curCycle() + + Cycles(1)); m_out_link[outport]->request_vc_link(outvc, destination, - curCycle() + 1); + curCycle() + Cycles(1)); } else { m_out_vc_state[outport][outvc]->setState(VC_AB_, curCycle()); m_out_link[outport]->request_vc_link(outvc, destination, @@ -293,8 +294,8 @@ Router::routeCompute(flit *m_flit, int inport) } if ((m_flit->get_type() == TAIL_) || (m_flit->get_type() == HEAD_TAIL_)) { - m_in_vc_state[inport][invc]->setState(IDLE_, curCycle() + 1); - m_in_link[inport]->release_vc_link(invc, curCycle() + 1); + m_in_vc_state[inport][invc]->setState(IDLE_, curCycle() + Cycles(1)); + m_in_link[inport]->release_vc_link(invc, curCycle() + Cycles(1)); } } @@ -361,7 +362,7 @@ Router::scheduleOutputLinks() flit *t_flit = m_router_buffers[port][vc_tolookat]->getTopFlit(); - t_flit->set_time(curCycle() + 1 ); + t_flit->set_time(curCycle() + Cycles(1)); m_out_src_queue[port]->insert(t_flit); m_out_link[port]->scheduleEvent(Cycles(1)); break; // done for this port @@ -397,7 +398,8 @@ Router::check_arbiter_reschedule() { for (int port = 0; port < m_in_link.size(); port++) { for (int vc = 0; vc < m_num_vcs; vc++) { - if (m_in_vc_state[port][vc]->isInState(VC_AB_, curCycle() + 1)) { + if (m_in_vc_state[port][vc]->isInState(VC_AB_, curCycle() + + Cycles(1))) { m_vc_arbiter->scheduleEvent(Cycles(1)); return; } diff --git a/src/mem/ruby/network/garnet/flexible-pipeline/Router.hh b/src/mem/ruby/network/garnet/flexible-pipeline/Router.hh index aa31fd939..e3f193045 100644 --- a/src/mem/ruby/network/garnet/flexible-pipeline/Router.hh +++ b/src/mem/ruby/network/garnet/flexible-pipeline/Router.hh @@ -62,8 +62,8 @@ class Router : public BasicRouter, public FlexibleConsumer void request_vc(int in_vc, int in_port, NetDest destination, Cycles request_time); bool isBufferNotFull(int vc, int inport); - void grant_vc(int out_port, int vc, Time grant_time); - void release_vc(int out_port, int vc, Time release_time); + void grant_vc(int out_port, int vc, Cycles grant_time); + void release_vc(int out_port, int vc, Cycles release_time); void vc_arbitrate(); int get_vnet(int vc); diff --git a/src/mem/ruby/network/garnet/flexible-pipeline/flit.cc b/src/mem/ruby/network/garnet/flexible-pipeline/flit.cc index 6e858199b..7cf68560f 100644 --- a/src/mem/ruby/network/garnet/flexible-pipeline/flit.cc +++ b/src/mem/ruby/network/garnet/flexible-pipeline/flit.cc @@ -30,7 +30,7 @@ #include "mem/ruby/network/garnet/flexible-pipeline/flit.hh" -flit::flit(int id, int vc, int vnet, int size, MsgPtr msg_ptr, Time curTime) +flit::flit(int id, int vc, int vnet, int size, MsgPtr msg_ptr, Cycles curTime) { m_size = size; m_msg_ptr = msg_ptr; @@ -64,20 +64,20 @@ flit::get_id() return m_id; } -Time +Cycles flit::get_time() { return m_time; } -Time +Cycles flit::get_enqueue_time() { return m_enqueue_time; } void -flit::set_time(Time time) +flit::set_time(Cycles time) { m_time = time; } @@ -113,12 +113,12 @@ flit::get_type() } void -flit::set_delay(int delay) +flit::set_delay(Cycles delay) { src_delay = delay; } -int +Cycles flit::get_delay() { return src_delay; diff --git a/src/mem/ruby/network/garnet/flexible-pipeline/flit.hh b/src/mem/ruby/network/garnet/flexible-pipeline/flit.hh index 4e5b2fb8b..ff4afbc08 100644 --- a/src/mem/ruby/network/garnet/flexible-pipeline/flit.hh +++ b/src/mem/ruby/network/garnet/flexible-pipeline/flit.hh @@ -31,7 +31,7 @@ #include #include -#include "mem/ruby/common/TypeDefines.hh" +#include "base/types.hh" #include "mem/ruby/network/garnet/NetworkHeader.hh" #include "mem/ruby/slicc_interface/Message.hh" @@ -41,20 +41,20 @@ class flit { public: - flit(int id, int vc, int vnet, int size, MsgPtr msg_ptr, Time curTime); + flit(int id, int vc, int vnet, int size, MsgPtr msg_ptr, Cycles curTime); int get_size(); int get_id(); - Time get_time(); - Time get_enqueue_time(); - void set_time(Time time); + Cycles get_time(); + Cycles get_enqueue_time(); + void set_time(Cycles time); int get_vnet(); int get_vc(); void set_vc(int vc); MsgPtr& get_msg_ptr(); flit_type get_type(); - void set_delay(int delay); - int get_delay(); + void set_delay(Cycles delay); + Cycles get_delay(); void print(std::ostream& out) const; static bool @@ -75,10 +75,10 @@ class flit int m_vnet; int m_vc; int m_size; - Time m_enqueue_time, m_time; + Cycles m_enqueue_time, m_time; flit_type m_type; MsgPtr m_msg_ptr; - int src_delay; + Cycles src_delay; }; inline std::ostream& diff --git a/src/mem/ruby/network/garnet/flexible-pipeline/flitBuffer.cc b/src/mem/ruby/network/garnet/flexible-pipeline/flitBuffer.cc index fd9922af7..7a8ea8c23 100644 --- a/src/mem/ruby/network/garnet/flexible-pipeline/flitBuffer.cc +++ b/src/mem/ruby/network/garnet/flexible-pipeline/flitBuffer.cc @@ -51,7 +51,7 @@ flitBuffer::isEmpty() } bool -flitBuffer::isReady(Time curTime) +flitBuffer::isReady(Cycles curTime) { if (m_buffer.size() != 0 ) { flit *t_flit = m_buffer.front(); @@ -62,7 +62,7 @@ flitBuffer::isReady(Time curTime) } bool -flitBuffer::isReadyForNext(Time curTime) +flitBuffer::isReadyForNext(Cycles curTime) { if (m_buffer.size() != 0 ) { flit *t_flit = m_buffer.front(); diff --git a/src/mem/ruby/network/garnet/flexible-pipeline/flitBuffer.hh b/src/mem/ruby/network/garnet/flexible-pipeline/flitBuffer.hh index 263dcb902..4b244a608 100644 --- a/src/mem/ruby/network/garnet/flexible-pipeline/flitBuffer.hh +++ b/src/mem/ruby/network/garnet/flexible-pipeline/flitBuffer.hh @@ -43,8 +43,8 @@ class flitBuffer flitBuffer(); flitBuffer(int maximum_size); - bool isReady(Time curTime); - bool isReadyForNext(Time curTime); + bool isReady(Cycles curTime); + bool isReadyForNext(Cycles curTime); bool isFull(); bool isEmpty(); void setMaxSize(int maximum); -- cgit v1.2.3