summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNilay Vaish <nilay@cs.wisc.edu>2014-02-20 17:28:01 -0600
committerNilay Vaish <nilay@cs.wisc.edu>2014-02-20 17:28:01 -0600
commitf8f8b7e5c2382dac32a8109c56f1aaad7e6a5fd7 (patch)
treeebc3d4f4de1ff44452ff1d2a9040cd28c532977f
parent896654746adeebc264150692a9dda4e3fa48a6a3 (diff)
downloadgem5-f8f8b7e5c2382dac32a8109c56f1aaad7e6a5fd7.tar.xz
ruby: network: garnet: fixed: removes next cycle functions
At several places, there are functions that take a cycle value as input and performs some computation. Along with each such function, another function was being defined that simply added one more cycle to input and computed the same function. This patch removes this second copy of the function. Places where these functions were being called have been updated to use the original function with argument being current cycle + 1.
-rw-r--r--src/mem/ruby/network/garnet/fixed-pipeline/InputUnit_d.hh11
-rw-r--r--src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.cc2
-rw-r--r--src/mem/ruby/network/garnet/fixed-pipeline/SWallocator_d.cc5
-rw-r--r--src/mem/ruby/network/garnet/fixed-pipeline/Switch_d.cc4
-rw-r--r--src/mem/ruby/network/garnet/fixed-pipeline/VCallocator_d.cc5
-rw-r--r--src/mem/ruby/network/garnet/fixed-pipeline/VirtualChannel_d.cc21
-rw-r--r--src/mem/ruby/network/garnet/fixed-pipeline/VirtualChannel_d.hh2
-rw-r--r--src/mem/ruby/network/garnet/fixed-pipeline/flitBuffer_d.cc11
-rw-r--r--src/mem/ruby/network/garnet/fixed-pipeline/flitBuffer_d.hh1
-rw-r--r--src/mem/ruby/network/garnet/fixed-pipeline/flit_d.hh7
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)
{