diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mem/ruby/network/garnet2.0/NetworkInterface.cc | 5 | ||||
-rw-r--r-- | src/mem/ruby/network/garnet2.0/SwitchAllocator.cc | 8 |
2 files changed, 6 insertions, 7 deletions
diff --git a/src/mem/ruby/network/garnet2.0/NetworkInterface.cc b/src/mem/ruby/network/garnet2.0/NetworkInterface.cc index b3d89cab8..4e692704d 100644 --- a/src/mem/ruby/network/garnet2.0/NetworkInterface.cc +++ b/src/mem/ruby/network/garnet2.0/NetworkInterface.cc @@ -437,9 +437,6 @@ void NetworkInterface::scheduleOutputLink() { int vc = m_vc_round_robin; - m_vc_round_robin++; - if (m_vc_round_robin == m_num_vcs) - m_vc_round_robin = 0; for (int i = 0; i < m_num_vcs; i++) { vc++; @@ -470,6 +467,8 @@ NetworkInterface::scheduleOutputLink() if (!is_candidate_vc) continue; + m_vc_round_robin = vc; + m_out_vc_state[vc]->decrement_credit(); // Just removing the flit flit *t_flit = m_ni_out_vcs[vc]->getTopFlit(); diff --git a/src/mem/ruby/network/garnet2.0/SwitchAllocator.cc b/src/mem/ruby/network/garnet2.0/SwitchAllocator.cc index 836f071fe..1e9d0e6f7 100644 --- a/src/mem/ruby/network/garnet2.0/SwitchAllocator.cc +++ b/src/mem/ruby/network/garnet2.0/SwitchAllocator.cc @@ -136,8 +136,8 @@ SwitchAllocator::arbitrate_inports() m_port_requests[outport][inport] = true; m_vc_winners[outport][inport]= invc; - // Update Round Robin pointer - m_round_robin_invc[inport]++; + // Update Round Robin pointer to the next VC + m_round_robin_invc[inport] = invc + 1; if (m_round_robin_invc[inport] >= m_num_vcs) m_round_robin_invc[inport] = 0; @@ -252,7 +252,7 @@ SwitchAllocator::arbitrate_outports() m_port_requests[outport][inport] = false; // Update Round Robin pointer - m_round_robin_inport[outport]++; + m_round_robin_inport[outport] = inport + 1; if (m_round_robin_inport[outport] >= m_num_inports) m_round_robin_inport[outport] = 0; @@ -393,4 +393,4 @@ SwitchAllocator::resetStats() { m_input_arbiter_activity = 0; m_output_arbiter_activity = 0; -}
\ No newline at end of file +} |