summaryrefslogtreecommitdiff
path: root/src/mem/ruby/network/garnet/flexible-pipeline
diff options
context:
space:
mode:
Diffstat (limited to 'src/mem/ruby/network/garnet/flexible-pipeline')
-rw-r--r--src/mem/ruby/network/garnet/flexible-pipeline/NetworkLink.hh1
-rw-r--r--src/mem/ruby/network/garnet/flexible-pipeline/Router.hh1
-rw-r--r--src/mem/ruby/network/garnet/flexible-pipeline/flit.hh23
-rw-r--r--src/mem/ruby/network/garnet/flexible-pipeline/flitBuffer.cc18
-rw-r--r--src/mem/ruby/network/garnet/flexible-pipeline/flitBuffer.hh4
5 files changed, 25 insertions, 22 deletions
diff --git a/src/mem/ruby/network/garnet/flexible-pipeline/NetworkLink.hh b/src/mem/ruby/network/garnet/flexible-pipeline/NetworkLink.hh
index c23d55b48..9f1311dce 100644
--- a/src/mem/ruby/network/garnet/flexible-pipeline/NetworkLink.hh
+++ b/src/mem/ruby/network/garnet/flexible-pipeline/NetworkLink.hh
@@ -37,7 +37,6 @@
#include "mem/ruby/network/garnet/NetworkHeader.hh"
#include "mem/ruby/network/garnet/flexible-pipeline/FlexibleConsumer.hh"
#include "mem/ruby/network/garnet/flexible-pipeline/flitBuffer.hh"
-#include "mem/gems_common/PrioHeap.hh"
#include "mem/ruby/common/NetDest.hh"
class GarnetNetwork;
diff --git a/src/mem/ruby/network/garnet/flexible-pipeline/Router.hh b/src/mem/ruby/network/garnet/flexible-pipeline/Router.hh
index b6ebb601f..16b19204a 100644
--- a/src/mem/ruby/network/garnet/flexible-pipeline/Router.hh
+++ b/src/mem/ruby/network/garnet/flexible-pipeline/Router.hh
@@ -37,7 +37,6 @@
#include "mem/ruby/network/garnet/NetworkHeader.hh"
#include "mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.hh"
#include "mem/ruby/network/garnet/flexible-pipeline/FlexibleConsumer.hh"
-#include "mem/gems_common/PrioHeap.hh"
#include "mem/ruby/network/garnet/flexible-pipeline/NetworkLink.hh"
#include "mem/ruby/common/NetDest.hh"
#include "mem/ruby/network/garnet/flexible-pipeline/flitBuffer.hh"
diff --git a/src/mem/ruby/network/garnet/flexible-pipeline/flit.hh b/src/mem/ruby/network/garnet/flexible-pipeline/flit.hh
index 1cc8806e9..5aa01c5e7 100644
--- a/src/mem/ruby/network/garnet/flexible-pipeline/flit.hh
+++ b/src/mem/ruby/network/garnet/flexible-pipeline/flit.hh
@@ -52,6 +52,16 @@ public:
flit_type get_type();
void print(std::ostream& out) const;
+ static bool
+ greater(flit* n1, flit* n2)
+ {
+ if (n1->get_time() == n2->get_time())
+ //ASSERT(n1->flit_id != n2->flit_id);
+ return (n1->get_id() > n2->get_id());
+ else
+ return (n1->get_time() > n2->get_time());
+ }
+
private:
/************Data Members*************/
int m_id;
@@ -64,19 +74,6 @@ private:
};
-inline extern bool node_less_then_eq(flit* n1, flit* n2);
-
-inline extern
-bool node_less_then_eq(flit* n1, flit* n2)
-{
- if (n1->get_time() == n2->get_time()) {
-// ASSERT(n1->flit_id != n2->flit_id);
- return (n1->get_id() <= n2->get_id());
- } else {
- return (n1->get_time() <= n2->get_time());
- }
-}
-
inline std::ostream&
operator<<(std::ostream& out, const flit& obj)
{
diff --git a/src/mem/ruby/network/garnet/flexible-pipeline/flitBuffer.cc b/src/mem/ruby/network/garnet/flexible-pipeline/flitBuffer.cc
index 7f41d6f8c..82eb08902 100644
--- a/src/mem/ruby/network/garnet/flexible-pipeline/flitBuffer.cc
+++ b/src/mem/ruby/network/garnet/flexible-pipeline/flitBuffer.cc
@@ -28,8 +28,12 @@
* Authors: Niket Agarwal
*/
+#include <algorithm>
+
#include "mem/ruby/network/garnet/flexible-pipeline/flitBuffer.hh"
+using namespace std;
+
flitBuffer::flitBuffer()
{
max_size = INFINITE_;
@@ -49,7 +53,7 @@ bool flitBuffer::isReady()
{
if(m_buffer.size() != 0 )
{
- flit *t_flit = m_buffer.peekMin();
+ flit *t_flit = m_buffer.front();
if(t_flit->get_time() <= g_eventQueue_ptr->getTime())
return true;
}
@@ -60,7 +64,7 @@ bool flitBuffer::isReadyForNext()
{
if(m_buffer.size() != 0 )
{
- flit *t_flit = m_buffer.peekMin();
+ flit *t_flit = m_buffer.front();
if(t_flit->get_time() <= (g_eventQueue_ptr->getTime() + 1))
return true;
}
@@ -79,17 +83,21 @@ void flitBuffer::setMaxSize(int maximum)
flit* flitBuffer:: getTopFlit()
{
- return m_buffer.extractMin();
+ flit *f = m_buffer.front();
+ pop_heap(m_buffer.begin(), m_buffer.end(), flit::greater);
+ m_buffer.pop_back();
+ return f;
}
flit* flitBuffer::peekTopFlit()
{
- return m_buffer.peekMin();
+ return m_buffer.front();
}
void flitBuffer::insert(flit *flt)
{
- m_buffer.insert(flt);
+ m_buffer.push_back(flt);
+ push_heap(m_buffer.begin(), m_buffer.end(), flit::greater);
}
void flitBuffer::print(std::ostream& out) const
diff --git a/src/mem/ruby/network/garnet/flexible-pipeline/flitBuffer.hh b/src/mem/ruby/network/garnet/flexible-pipeline/flitBuffer.hh
index 646cd99c7..a5ec25590 100644
--- a/src/mem/ruby/network/garnet/flexible-pipeline/flitBuffer.hh
+++ b/src/mem/ruby/network/garnet/flexible-pipeline/flitBuffer.hh
@@ -32,9 +32,9 @@
#define FLIT_BUFFER_H
#include <iostream>
+#include <vector>
#include "mem/ruby/network/garnet/NetworkHeader.hh"
-#include "mem/gems_common/PrioHeap.hh"
#include "mem/ruby/network/garnet/flexible-pipeline/flit.hh"
class flitBuffer {
@@ -54,7 +54,7 @@ public:
/**********Data Members*********/
private:
- PrioHeap <flit *> m_buffer;
+ std::vector<flit *> m_buffer;
int size, max_size;
};