diff options
Diffstat (limited to 'src/mem/ruby/network/garnet/flexible-pipeline')
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; }; |