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 --- .../network/garnet/fixed-pipeline/InputUnit_d.hh | 18 +++++----- .../garnet/fixed-pipeline/NetworkInterface_d.cc | 9 ++--- .../network/garnet/fixed-pipeline/NetworkLink_d.hh | 3 +- .../network/garnet/fixed-pipeline/OutVcState_d.hh | 6 ++-- .../network/garnet/fixed-pipeline/OutputUnit_d.cc | 2 +- .../network/garnet/fixed-pipeline/OutputUnit_d.hh | 6 ++-- .../network/garnet/fixed-pipeline/SWallocator_d.cc | 6 ++-- .../ruby/network/garnet/fixed-pipeline/Switch_d.cc | 2 +- .../garnet/fixed-pipeline/VirtualChannel_d.cc | 12 +++---- .../garnet/fixed-pipeline/VirtualChannel_d.hh | 22 ++++++------ .../network/garnet/fixed-pipeline/flitBuffer_d.cc | 4 +-- .../network/garnet/fixed-pipeline/flitBuffer_d.hh | 4 +-- .../ruby/network/garnet/fixed-pipeline/flit_d.cc | 4 +-- .../ruby/network/garnet/fixed-pipeline/flit_d.hh | 41 +++++++++------------- 14 files changed, 67 insertions(+), 72 deletions(-) (limited to 'src/mem/ruby/network/garnet/fixed-pipeline') diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/InputUnit_d.hh b/src/mem/ruby/network/garnet/fixed-pipeline/InputUnit_d.hh index 07c6bec3a..de2e3d67f 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/InputUnit_d.hh +++ b/src/mem/ruby/network/garnet/fixed-pipeline/InputUnit_d.hh @@ -56,18 +56,18 @@ class InputUnit_d : public Consumer inline int get_inlink_id() { return m_in_link->get_id(); } inline void - set_vc_state(VC_state_type state, int vc, Time curTime) + set_vc_state(VC_state_type state, int vc, Cycles curTime) { m_vcs[vc]->set_state(state, curTime); } inline void - set_enqueue_time(int invc, Time time) + set_enqueue_time(int invc, Cycles time) { m_vcs[invc]->set_enqueue_time(time); } - inline Time + inline Cycles get_enqueue_time(int invc) { return m_vcs[invc]->get_enqueue_time(); @@ -86,7 +86,7 @@ class InputUnit_d : public Consumer } inline void - increment_credit(int in_vc, bool free_signal, Time curTime) + increment_credit(int in_vc, bool free_signal, Cycles curTime) { flit_d *t_flit = new flit_d(in_vc, free_signal, curTime); creditQueue->insert(t_flit); @@ -100,14 +100,14 @@ class InputUnit_d : public Consumer } inline void - updateRoute(int vc, int outport, Time curTime) + updateRoute(int vc, int outport, Cycles curTime) { m_vcs[vc]->set_outport(outport); m_vcs[vc]->set_state(VC_AB_, curTime); } inline void - grant_vc(int in_vc, int out_vc, Time curTime) + grant_vc(int in_vc, int out_vc, Cycles curTime) { m_vcs[in_vc]->grant_vc(out_vc, curTime); } @@ -125,20 +125,20 @@ class InputUnit_d : public Consumer } inline bool - need_stage(int vc, VC_state_type state, flit_stage stage, Time curTime) + need_stage(int vc, VC_state_type state, flit_stage stage, Cycles curTime) { return m_vcs[vc]->need_stage(state, stage, curTime); } inline bool need_stage_nextcycle(int vc, VC_state_type state, flit_stage stage, - Time curTime) + Cycles curTime) { return m_vcs[vc]->need_stage_nextcycle(state, stage, curTime); } inline bool - isReady(int invc, Time curTime) + isReady(int invc, Cycles curTime) { return m_vcs[invc]->isReady(curTime); } 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 c58b38c52..3d915598e 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.cc +++ b/src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.cc @@ -255,9 +255,10 @@ NetworkInterface_d::wakeup() 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; @@ -321,7 +322,7 @@ NetworkInterface_d::scheduleOutputLink() m_out_vc_state[vc]->decrement_credit(); // Just removing the flit flit_d *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 outNetLink->scheduleEvent(Cycles(1)); diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/NetworkLink_d.hh b/src/mem/ruby/network/garnet/fixed-pipeline/NetworkLink_d.hh index 14f6a6527..de54de921 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/NetworkLink_d.hh +++ b/src/mem/ruby/network/garnet/fixed-pipeline/NetworkLink_d.hh @@ -62,7 +62,8 @@ class NetworkLink_d : public ClockedObject, public Consumer double calculate_power(); - inline bool isReady(Time curTime) { return linkBuffer->isReady(curTime); } + inline bool isReady(Cycles curTime) + { return linkBuffer->isReady(curTime); } inline flit_d* peekLink() { return linkBuffer->peekTopFlit(); } inline flit_d* consumeLink() { return linkBuffer->getTopFlit(); } void init_net_ptr(GarnetNetwork_d* net_ptr) diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/OutVcState_d.hh b/src/mem/ruby/network/garnet/fixed-pipeline/OutVcState_d.hh index 237f54340..07b197cf5 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/OutVcState_d.hh +++ b/src/mem/ruby/network/garnet/fixed-pipeline/OutVcState_d.hh @@ -46,12 +46,12 @@ class OutVcState_d void set_inport(int port) { m_in_port = port; } void set_invc(int vc) { m_in_vc = vc; } inline bool - isInState(VC_state_type state, Time request_time) + isInState(VC_state_type state, Cycles request_time) { return ((m_vc_state == state) && (request_time >= m_time) ); } inline void - setState(VC_state_type state, Time time) + setState(VC_state_type state, Cycles time) { m_vc_state = state; m_time = time; @@ -63,7 +63,7 @@ class OutVcState_d private: GarnetNetwork_d *m_network_ptr; int m_id ; - Time m_time; + Cycles m_time; VC_state_type m_vc_state; int m_in_port; int m_in_vc; diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/OutputUnit_d.cc b/src/mem/ruby/network/garnet/fixed-pipeline/OutputUnit_d.cc index 7422a5165..684973863 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/OutputUnit_d.cc +++ b/src/mem/ruby/network/garnet/fixed-pipeline/OutputUnit_d.cc @@ -102,7 +102,7 @@ OutputUnit_d::set_credit_link(CreditLink_d *credit_link) void OutputUnit_d::update_vc(int vc, int in_port, int in_vc) { - m_outvc_state[vc]->setState(ACTIVE_, m_router->curCycle() + 1); + m_outvc_state[vc]->setState(ACTIVE_, m_router->curCycle() + Cycles(1)); m_outvc_state[vc]->set_inport(in_port); m_outvc_state[vc]->set_invc(in_vc); m_router->update_incredit(in_port, in_vc, diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/OutputUnit_d.hh b/src/mem/ruby/network/garnet/fixed-pipeline/OutputUnit_d.hh index 4b5b851e2..3610e4a19 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/OutputUnit_d.hh +++ b/src/mem/ruby/network/garnet/fixed-pipeline/OutputUnit_d.hh @@ -69,13 +69,13 @@ class OutputUnit_d : public Consumer } inline void - set_vc_state(VC_state_type state, int vc, Time curTime) + set_vc_state(VC_state_type state, int vc, Cycles curTime) { - m_outvc_state[vc]->setState(state, curTime + 1); + m_outvc_state[vc]->setState(state, curTime + Cycles(1)); } inline bool - is_vc_idle(int vc, Time curTime) + is_vc_idle(int vc, Cycles curTime) { return (m_outvc_state[vc]->isInState(IDLE_, curTime)); } diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/SWallocator_d.cc b/src/mem/ruby/network/garnet/fixed-pipeline/SWallocator_d.cc index 49f2e8c57..b12c5416c 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/SWallocator_d.cc +++ b/src/mem/ruby/network/garnet/fixed-pipeline/SWallocator_d.cc @@ -181,7 +181,8 @@ SWallocator_d::arbitrate_outports() t_flit->advance_stage(ST_, m_router->curCycle()); t_flit->set_vc(outvc); t_flit->set_outport(outport); - t_flit->set_time(m_router->curCycle() + 1); + t_flit->set_time(m_router->curCycle() + Cycles(1)); + m_output_unit[outport]->decrement_credit(outvc); m_router->update_sw_winner(inport, t_flit); m_global_arbiter_activity++; @@ -200,7 +201,8 @@ SWallocator_d::arbitrate_outports() m_input_unit[inport]->set_vc_state(IDLE_, invc, m_router->curCycle()); - m_input_unit[inport]->set_enqueue_time(invc, INFINITE_); + m_input_unit[inport]->set_enqueue_time(invc, + Cycles(INFINITE_)); } else { // Send a credit back // but do not indicate that the VC is idle diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/Switch_d.cc b/src/mem/ruby/network/garnet/fixed-pipeline/Switch_d.cc index 0b2c3a227..357dbc0f1 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/Switch_d.cc +++ b/src/mem/ruby/network/garnet/fixed-pipeline/Switch_d.cc @@ -74,7 +74,7 @@ Switch_d::wakeup() if (t_flit->is_stage(ST_, m_router->curCycle())) { int outport = t_flit->get_outport(); t_flit->advance_stage(LT_, m_router->curCycle()); - t_flit->set_time(m_router->curCycle() + 1); + t_flit->set_time(m_router->curCycle() + Cycles(1)); // This will take care of waking up the Network Link m_output_unit[outport]->insert_flit(t_flit); diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/VirtualChannel_d.cc b/src/mem/ruby/network/garnet/fixed-pipeline/VirtualChannel_d.cc index 4fd2ebbbf..50437ef9f 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/VirtualChannel_d.cc +++ b/src/mem/ruby/network/garnet/fixed-pipeline/VirtualChannel_d.cc @@ -30,13 +30,13 @@ #include "mem/ruby/network/garnet/fixed-pipeline/VirtualChannel_d.hh" -VirtualChannel_d::VirtualChannel_d(int id, Time curTime) +VirtualChannel_d::VirtualChannel_d(int id, Cycles curTime) + : m_enqueue_time(INFINITE_) { m_id = id; m_input_buffer = new flitBuffer_d(); m_vc_state.first = IDLE_; m_vc_state.second = curTime; - m_enqueue_time = INFINITE_; } VirtualChannel_d::~VirtualChannel_d() @@ -51,18 +51,18 @@ VirtualChannel_d::set_outport(int outport) } void -VirtualChannel_d::grant_vc(int out_vc, Time curTime) +VirtualChannel_d::grant_vc(int out_vc, Cycles curTime) { m_output_vc = out_vc; m_vc_state.first = ACTIVE_; - m_vc_state.second = curTime + 1; + m_vc_state.second = curTime + Cycles(1); flit_d *t_flit = m_input_buffer->peekTopFlit(); t_flit->advance_stage(SA_, curTime); } bool VirtualChannel_d::need_stage(VC_state_type state, flit_stage stage, - Time curTime) + Cycles curTime) { if ((m_vc_state.first == state) && (curTime >= m_vc_state.second)) { if (m_input_buffer->isReady(curTime)) { @@ -75,7 +75,7 @@ VirtualChannel_d::need_stage(VC_state_type state, flit_stage stage, bool VirtualChannel_d::need_stage_nextcycle(VC_state_type state, flit_stage stage, - Time curTime) + Cycles curTime) { if ((m_vc_state.first == state) && ((curTime + 1) >= m_vc_state.second)) { if (m_input_buffer->isReadyForNext(curTime)) { diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/VirtualChannel_d.hh b/src/mem/ruby/network/garnet/fixed-pipeline/VirtualChannel_d.hh index 6217be1d0..9d90d9f44 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/VirtualChannel_d.hh +++ b/src/mem/ruby/network/garnet/fixed-pipeline/VirtualChannel_d.hh @@ -39,17 +39,17 @@ class VirtualChannel_d { public: - VirtualChannel_d(int id, Time curTime); + VirtualChannel_d(int id, Cycles curTime); ~VirtualChannel_d(); - bool need_stage(VC_state_type state, flit_stage stage, Time curTime); + bool need_stage(VC_state_type state, flit_stage stage, Cycles curTime); bool need_stage_nextcycle(VC_state_type state, flit_stage stage, - Time curTime); + Cycles curTime); void set_outport(int outport); - void grant_vc(int out_vc, Time curTime); + void grant_vc(int out_vc, Cycles curTime); - inline Time get_enqueue_time() { return m_enqueue_time; } - inline void set_enqueue_time(Time time) { m_enqueue_time = time; } + inline Cycles get_enqueue_time() { return m_enqueue_time; } + inline void set_enqueue_time(Cycles time) { m_enqueue_time = time; } inline VC_state_type get_state() { return m_vc_state.first; } inline int get_outvc() { return m_output_vc; } inline bool has_credits() { return (m_credit_count > 0); } @@ -57,7 +57,7 @@ class VirtualChannel_d inline void update_credit(int credit) { m_credit_count = credit; } inline void increment_credit() { m_credit_count++; } - inline bool isReady(Time curTime) + inline bool isReady(Cycles curTime) { return m_input_buffer->isReady(curTime); } @@ -69,10 +69,10 @@ class VirtualChannel_d } inline void - set_state(VC_state_type m_state, Time curTime) + set_state(VC_state_type m_state, Cycles curTime) { m_vc_state.first = m_state; - m_vc_state.second = curTime + 1; + m_vc_state.second = curTime + Cycles(1); } inline flit_d* @@ -90,9 +90,9 @@ class VirtualChannel_d private: int m_id; flitBuffer_d *m_input_buffer; - std::pair m_vc_state; // I/R/V/A/C + std::pair m_vc_state; // I/R/V/A/C int route; - Time m_enqueue_time; + Cycles m_enqueue_time; int m_output_vc; int m_credit_count; }; diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/flitBuffer_d.cc b/src/mem/ruby/network/garnet/fixed-pipeline/flitBuffer_d.cc index e31989a54..5b03a5d21 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/flitBuffer_d.cc +++ b/src/mem/ruby/network/garnet/fixed-pipeline/flitBuffer_d.cc @@ -47,7 +47,7 @@ flitBuffer_d::isEmpty() } bool -flitBuffer_d::isReady(Time curTime) +flitBuffer_d::isReady(Cycles curTime) { if (m_buffer.size() != 0 ) { flit_d *t_flit = peekTopFlit(); @@ -58,7 +58,7 @@ flitBuffer_d::isReady(Time curTime) } bool -flitBuffer_d::isReadyForNext(Time curTime) +flitBuffer_d::isReadyForNext(Cycles curTime) { if (m_buffer.size() != 0 ) { flit_d *t_flit = peekTopFlit(); diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/flitBuffer_d.hh b/src/mem/ruby/network/garnet/fixed-pipeline/flitBuffer_d.hh index eb7729bef..444cfae5c 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/flitBuffer_d.hh +++ b/src/mem/ruby/network/garnet/fixed-pipeline/flitBuffer_d.hh @@ -44,8 +44,8 @@ class flitBuffer_d flitBuffer_d(); flitBuffer_d(int maximum_size); - bool isReady(Time curTime); - bool isReadyForNext(Time curTime); + bool isReady(Cycles curTime); + bool isReadyForNext(Cycles curTime); bool isEmpty(); void print(std::ostream& out) const; bool isFull(); diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/flit_d.cc b/src/mem/ruby/network/garnet/fixed-pipeline/flit_d.cc index 07aea133f..fd502f984 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/flit_d.cc +++ b/src/mem/ruby/network/garnet/fixed-pipeline/flit_d.cc @@ -31,7 +31,7 @@ #include "mem/ruby/network/garnet/fixed-pipeline/flit_d.hh" flit_d::flit_d(int id, int vc, int vnet, int size, MsgPtr msg_ptr, - Time curTime) + Cycles curTime) { m_size = size; m_msg_ptr = msg_ptr; @@ -55,7 +55,7 @@ flit_d::flit_d(int id, int vc, int vnet, int size, MsgPtr msg_ptr, m_type = BODY_; } -flit_d::flit_d(int vc, bool is_free_signal, Time curTime) +flit_d::flit_d(int vc, bool is_free_signal, Cycles curTime) { m_id = 0; m_vc = vc; diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/flit_d.hh b/src/mem/ruby/network/garnet/fixed-pipeline/flit_d.hh index 9dd4af10e..1fda303fa 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/flit_d.hh +++ b/src/mem/ruby/network/garnet/fixed-pipeline/flit_d.hh @@ -34,24 +34,24 @@ #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" class flit_d { public: - flit_d(int id, int vc, int vnet, int size, MsgPtr msg_ptr, Time curTime); - flit_d(int vc, bool is_free_signal, Time curTime); + flit_d(int id, int vc, int vnet, int size, MsgPtr msg_ptr, Cycles curTime); + flit_d(int vc, bool is_free_signal, Cycles curTime); void set_outport(int port) { m_outport = port; } int get_outport() {return m_outport; } void print(std::ostream& out) const; bool is_free_signal() { return m_is_free_signal; } int get_size() { return m_size; } - Time get_enqueue_time() { return m_enqueue_time; } + Cycles get_enqueue_time() { return m_enqueue_time; } int get_id() { return m_id; } - Time get_time() { return m_time; } - void set_time(Time time) { m_time = time; } + Cycles get_time() { return m_time; } + void set_time(Cycles time) { m_time = time; } int get_vnet() { return m_vnet; } int get_vc() { return m_vc; } void set_vc(int vc) { m_vc = vc; } @@ -59,43 +59,34 @@ class flit_d flit_type get_type() { return m_type; } bool - is_stage(flit_stage t_stage, Time curTime) + is_stage(flit_stage t_stage, Cycles curTime) { return (m_stage.first == t_stage && curTime >= m_stage.second); } bool - is_next_stage(flit_stage t_stage, Time curTime) + is_next_stage(flit_stage t_stage, Cycles curTime) { return (m_stage.first == t_stage && (curTime + 1) >= m_stage.second); } void - advance_stage(flit_stage t_stage, Time curTime) + advance_stage(flit_stage t_stage, Cycles curTime) { m_stage.first = t_stage; - m_stage.second = curTime + 1; + m_stage.second = curTime + Cycles(1); } - std::pair + std::pair get_stage() { return m_stage; } - void - set_delay(int delay) - { - src_delay = delay; - } - - int - get_delay() - { - return src_delay; - } + void set_delay(Cycles delay) { src_delay = delay; } + Cycles get_delay() { return src_delay; } static bool greater(flit_d* n1, flit_d* n2) @@ -114,12 +105,12 @@ class flit_d int m_vc; int m_size; bool m_is_free_signal; - Time m_enqueue_time, m_time; + Cycles m_enqueue_time, m_time; flit_type m_type; MsgPtr m_msg_ptr; int m_outport; - int src_delay; - std::pair m_stage; + Cycles src_delay; + std::pair m_stage; }; inline std::ostream& -- cgit v1.2.3