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:
Daniel R. Carvalho
2020-01-09 22:33:32 +01:00
committed by Daniel Carvalho
parent 27f915e4d9
commit f378fd5a70
2 changed files with 17 additions and 24 deletions

View File

@@ -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);
}

View File

@@ -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;