summaryrefslogtreecommitdiff
path: root/src/mem/ruby/network/garnet/fixed-pipeline
diff options
context:
space:
mode:
Diffstat (limited to 'src/mem/ruby/network/garnet/fixed-pipeline')
-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)
{