summaryrefslogtreecommitdiff
path: root/src/mem/ruby/network/garnet/fixed-pipeline
diff options
context:
space:
mode:
authorNilay Vaish <nilay@cs.wisc.edu>2013-02-10 21:43:09 -0600
committerNilay Vaish <nilay@cs.wisc.edu>2013-02-10 21:43:09 -0600
commitf6e3ab7bd4d6c27fd400c718bfe225b09a3b486b (patch)
tree2caf127834234cf6e6bcaef279f179d08ce385da /src/mem/ruby/network/garnet/fixed-pipeline
parent9d6d6c67180533464fc839a8a6da182226cb3ee2 (diff)
downloadgem5-f6e3ab7bd4d6c27fd400c718bfe225b09a3b486b.tar.xz
ruby: replace Time with Cycles in garnet fixed and flexible
Diffstat (limited to 'src/mem/ruby/network/garnet/fixed-pipeline')
-rw-r--r--src/mem/ruby/network/garnet/fixed-pipeline/InputUnit_d.hh18
-rw-r--r--src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.cc9
-rw-r--r--src/mem/ruby/network/garnet/fixed-pipeline/NetworkLink_d.hh3
-rw-r--r--src/mem/ruby/network/garnet/fixed-pipeline/OutVcState_d.hh6
-rw-r--r--src/mem/ruby/network/garnet/fixed-pipeline/OutputUnit_d.cc2
-rw-r--r--src/mem/ruby/network/garnet/fixed-pipeline/OutputUnit_d.hh6
-rw-r--r--src/mem/ruby/network/garnet/fixed-pipeline/SWallocator_d.cc6
-rw-r--r--src/mem/ruby/network/garnet/fixed-pipeline/Switch_d.cc2
-rw-r--r--src/mem/ruby/network/garnet/fixed-pipeline/VirtualChannel_d.cc12
-rw-r--r--src/mem/ruby/network/garnet/fixed-pipeline/VirtualChannel_d.hh22
-rw-r--r--src/mem/ruby/network/garnet/fixed-pipeline/flitBuffer_d.cc4
-rw-r--r--src/mem/ruby/network/garnet/fixed-pipeline/flitBuffer_d.hh4
-rw-r--r--src/mem/ruby/network/garnet/fixed-pipeline/flit_d.cc4
-rw-r--r--src/mem/ruby/network/garnet/fixed-pipeline/flit_d.hh41
14 files changed, 67 insertions, 72 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 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<VC_state_type, Time> m_vc_state; // I/R/V/A/C
+ std::pair<VC_state_type, Cycles> 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 <cassert>
#include <iostream>
-#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<flit_stage, Time>
+ std::pair<flit_stage, Cycles>
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<flit_stage, Time> m_stage;
+ Cycles src_delay;
+ std::pair<flit_stage, Cycles> m_stage;
};
inline std::ostream&