diff options
Diffstat (limited to 'src/mem/ruby/network/garnet/fixed-pipeline')
10 files changed, 16 insertions, 53 deletions
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 2c37996b3..836613d02 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/InputUnit_d.hh +++ b/src/mem/ruby/network/garnet/fixed-pipeline/InputUnit_d.hh @@ -125,16 +125,9 @@ class InputUnit_d : public Consumer } inline bool - need_stage(int vc, VC_state_type state, flit_stage stage, Cycles curTime) + need_stage(int vc, VC_state_type state, flit_stage stage, Cycles cTime) { - return m_vcs[vc]->need_stage(state, stage, curTime); - } - - inline bool - need_stage_nextcycle(int vc, VC_state_type state, flit_stage stage, - Cycles curTime) - { - return m_vcs[vc]->need_stage_nextcycle(state, stage, curTime); + return m_vcs[vc]->need_stage(state, stage, cTime); } inline bool 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 b48efb632..c4c64b5ea 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.cc +++ b/src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.cc @@ -361,7 +361,7 @@ NetworkInterface_d::checkReschedule() } } for (int vc = 0; vc < m_num_vcs; vc++) { - if (m_ni_buffers[vc]->isReadyForNext(m_net_ptr->curCycle())) { + if (m_ni_buffers[vc]->isReady(m_net_ptr->curCycle() + Cycles(1))) { scheduleEvent(Cycles(1)); return; } 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 e292745c1..cabf435f4 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/SWallocator_d.cc +++ b/src/mem/ruby/network/garnet/fixed-pipeline/SWallocator_d.cc @@ -218,10 +218,11 @@ SWallocator_d::arbitrate_outports() void SWallocator_d::check_for_wakeup() { + Cycles nextCycle = m_router->curCycle() + Cycles(1); + for (int i = 0; i < m_num_inports; i++) { for (int j = 0; j < m_num_vcs; j++) { - if (m_input_unit[i]->need_stage_nextcycle(j, ACTIVE_, SA_, - m_router->curCycle())) { + if (m_input_unit[i]->need_stage(j, ACTIVE_, SA_, nextCycle)) { scheduleEvent(Cycles(1)); return; } 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 f41dc884d..4b4a4f323 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/Switch_d.cc +++ b/src/mem/ruby/network/garnet/fixed-pipeline/Switch_d.cc @@ -88,8 +88,10 @@ Switch_d::wakeup() void Switch_d::check_for_wakeup() { + Cycles nextCycle = m_router->curCycle() + Cycles(1); + for (int inport = 0; inport < m_num_inports; inport++) { - if (m_switch_buffer[inport]->isReadyForNext(m_router->curCycle())) { + if (m_switch_buffer[inport]->isReady(nextCycle)) { scheduleEvent(Cycles(1)); break; } diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/VCallocator_d.cc b/src/mem/ruby/network/garnet/fixed-pipeline/VCallocator_d.cc index e9e2226a8..395b1a9c5 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/VCallocator_d.cc +++ b/src/mem/ruby/network/garnet/fixed-pipeline/VCallocator_d.cc @@ -256,10 +256,11 @@ VCallocator_d::get_vnet(int invc) void VCallocator_d::check_for_wakeup() { + Cycles nextCycle = m_router->curCycle() + Cycles(1); + for (int i = 0; i < m_num_inports; i++) { for (int j = 0; j < m_num_vcs; j++) { - if (m_input_unit[i]->need_stage_nextcycle(j, VC_AB_, VA_, - m_router->curCycle())) { + if (m_input_unit[i]->need_stage(j, VC_AB_, VA_, nextCycle)) { scheduleEvent(Cycles(1)); return; } 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 510a79e8d..109d2a3be 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/VirtualChannel_d.cc +++ b/src/mem/ruby/network/garnet/fixed-pipeline/VirtualChannel_d.cc @@ -62,25 +62,12 @@ VirtualChannel_d::grant_vc(int out_vc, Cycles curTime) bool VirtualChannel_d::need_stage(VC_state_type state, flit_stage stage, - Cycles curTime) + Cycles ct) { - if ((m_vc_state.first == state) && (curTime >= m_vc_state.second)) { - if (m_input_buffer->isReady(curTime)) { + if ((m_vc_state.first == state) && (ct >= m_vc_state.second)) { + if (m_input_buffer->isReady(ct)) { flit_d *t_flit = m_input_buffer->peekTopFlit(); - return(t_flit->is_stage(stage, curTime)) ; - } - } - return false; -} - -bool -VirtualChannel_d::need_stage_nextcycle(VC_state_type state, flit_stage stage, - Cycles curTime) -{ - if ((m_vc_state.first == state) && ((curTime + 1) >= m_vc_state.second)) { - if (m_input_buffer->isReadyForNext(curTime)) { - flit_d *t_flit = m_input_buffer->peekTopFlit(); - return(t_flit->is_next_stage(stage, curTime)) ; + return(t_flit->is_stage(stage, ct)) ; } } return false; 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 d19630305..b46a095e6 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/VirtualChannel_d.hh +++ b/src/mem/ruby/network/garnet/fixed-pipeline/VirtualChannel_d.hh @@ -43,8 +43,6 @@ class VirtualChannel_d ~VirtualChannel_d(); bool need_stage(VC_state_type state, flit_stage stage, Cycles curTime); - bool need_stage_nextcycle(VC_state_type state, flit_stage stage, - Cycles curTime); void set_outport(int outport); void grant_vc(int out_vc, Cycles curTime); 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 6a7d4be87..1305b1547 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/flitBuffer_d.cc +++ b/src/mem/ruby/network/garnet/fixed-pipeline/flitBuffer_d.cc @@ -57,17 +57,6 @@ flitBuffer_d::isReady(Cycles curTime) return false; } -bool -flitBuffer_d::isReadyForNext(Cycles curTime) -{ - if (m_buffer.size() != 0 ) { - flit_d *t_flit = peekTopFlit(); - if (t_flit->get_time() <= (curTime + 1)) - return true; - } - return false; -} - void flitBuffer_d::print(std::ostream& out) const { 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 2fe6e982b..bfa6cc9a9 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/flitBuffer_d.hh +++ b/src/mem/ruby/network/garnet/fixed-pipeline/flitBuffer_d.hh @@ -45,7 +45,6 @@ class flitBuffer_d flitBuffer_d(int maximum_size); 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.hh b/src/mem/ruby/network/garnet/fixed-pipeline/flit_d.hh index 87ea1152f..55187bd14 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/flit_d.hh +++ b/src/mem/ruby/network/garnet/fixed-pipeline/flit_d.hh @@ -65,13 +65,6 @@ class flit_d curTime >= m_stage.second); } - bool - 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, Cycles curTime) { |