mem-garnet: Use static allocation in VirtualChannel
The input buffer does not need to be dynamically allocated. Change-Id: Ice64f40d2a7e16af325ddb6803e34b3eed2e99db Signed-off-by: Daniel R. Carvalho <odanrc@yahoo.com.br> Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/24253 Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com> Maintainer: Nikos Nikoleris <nikos.nikoleris@arm.com> Tested-by: kokoro <noreply+kokoro@google.com>
This commit is contained in:
committed by
Daniel Carvalho
parent
27f915e4d9
commit
f378fd5a70
@@ -1,6 +1,7 @@
|
||||
/*
|
||||
* Copyright (c) 2008 Princeton University
|
||||
* Copyright (c) 2020 Inria
|
||||
* Copyright (c) 2016 Georgia Institute of Technology
|
||||
* Copyright (c) 2008 Princeton University
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@@ -31,19 +32,9 @@
|
||||
#include "mem/ruby/network/garnet2.0/VirtualChannel.hh"
|
||||
|
||||
VirtualChannel::VirtualChannel(int id)
|
||||
: m_enqueue_time(INFINITE_)
|
||||
: m_id(id), inputBuffer(), m_vc_state(IDLE_, Cycles(0)), m_output_port(-1),
|
||||
m_enqueue_time(INFINITE_), m_output_vc(-1)
|
||||
{
|
||||
m_id = id;
|
||||
m_input_buffer = new flitBuffer();
|
||||
m_vc_state.first = IDLE_;
|
||||
m_vc_state.second = Cycles(0);
|
||||
m_output_vc = -1;
|
||||
m_output_port = -1;
|
||||
}
|
||||
|
||||
VirtualChannel::~VirtualChannel()
|
||||
{
|
||||
delete m_input_buffer;
|
||||
}
|
||||
|
||||
void
|
||||
@@ -67,9 +58,9 @@ VirtualChannel::set_active(Cycles curTime)
|
||||
bool
|
||||
VirtualChannel::need_stage(flit_stage stage, Cycles time)
|
||||
{
|
||||
if (m_input_buffer->isReady(time)) {
|
||||
if (inputBuffer.isReady(time)) {
|
||||
assert(m_vc_state.first == ACTIVE_ && m_vc_state.second <= time);
|
||||
flit *t_flit = m_input_buffer->peekTopFlit();
|
||||
flit *t_flit = inputBuffer.peekTopFlit();
|
||||
return(t_flit->is_stage(stage, time));
|
||||
}
|
||||
return false;
|
||||
@@ -78,5 +69,5 @@ VirtualChannel::need_stage(flit_stage stage, Cycles time)
|
||||
uint32_t
|
||||
VirtualChannel::functionalWrite(Packet *pkt)
|
||||
{
|
||||
return m_input_buffer->functionalWrite(pkt);
|
||||
return inputBuffer.functionalWrite(pkt);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/*
|
||||
* Copyright (c) 2008 Princeton University
|
||||
* Copyright (c) 2020 Inria
|
||||
* Copyright (c) 2016 Georgia Institute of Technology
|
||||
* Copyright (c) 2008 Princeton University
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@@ -40,7 +41,7 @@ class VirtualChannel
|
||||
{
|
||||
public:
|
||||
VirtualChannel(int id);
|
||||
~VirtualChannel();
|
||||
~VirtualChannel() = default;
|
||||
|
||||
bool need_stage(flit_stage stage, Cycles time);
|
||||
void set_idle(Cycles curTime);
|
||||
@@ -54,15 +55,16 @@ class VirtualChannel
|
||||
inline void set_enqueue_time(Cycles time) { m_enqueue_time = time; }
|
||||
inline VC_state_type get_state() { return m_vc_state.first; }
|
||||
|
||||
inline bool isReady(Cycles curTime)
|
||||
inline bool
|
||||
isReady(Cycles curTime)
|
||||
{
|
||||
return m_input_buffer->isReady(curTime);
|
||||
return inputBuffer.isReady(curTime);
|
||||
}
|
||||
|
||||
inline void
|
||||
insertFlit(flit *t_flit)
|
||||
{
|
||||
m_input_buffer->insert(t_flit);
|
||||
inputBuffer.insert(t_flit);
|
||||
}
|
||||
|
||||
inline void
|
||||
@@ -75,20 +77,20 @@ class VirtualChannel
|
||||
inline flit*
|
||||
peekTopFlit()
|
||||
{
|
||||
return m_input_buffer->peekTopFlit();
|
||||
return inputBuffer.peekTopFlit();
|
||||
}
|
||||
|
||||
inline flit*
|
||||
getTopFlit()
|
||||
{
|
||||
return m_input_buffer->getTopFlit();
|
||||
return inputBuffer.getTopFlit();
|
||||
}
|
||||
|
||||
uint32_t functionalWrite(Packet *pkt);
|
||||
|
||||
private:
|
||||
int m_id;
|
||||
flitBuffer *m_input_buffer;
|
||||
flitBuffer inputBuffer;
|
||||
std::pair<VC_state_type, Cycles> m_vc_state;
|
||||
int m_output_port;
|
||||
Cycles m_enqueue_time;
|
||||
|
||||
Reference in New Issue
Block a user