gem5 [DEVELOP-FOR-25.0]
Loading...
Searching...
No Matches
gem5::TraceCPU::FixedRetryGen Class Reference

Generator to read protobuf trace containing memory requests at fixed timestamps, perform flow control and issue memory requests. More...

#include <trace_cpu.hh>

Classes

struct  FixedRetryGenStatGroup
 
class  InputStream
 The InputStream encapsulates a trace file and the internal buffers and populates TraceElements based on the input. More...
 
struct  TraceElement
 This struct stores a line in the trace file. More...
 

Public Member Functions

 FixedRetryGen (TraceCPU &_owner, const std::string &_name, RequestPort &_port, RequestorID requestor_id, const std::string &trace_file)
 
Tick init ()
 Called from TraceCPU init().
 
bool tryNext ()
 This tries to send current or retry packet and returns true if successfull.
 
const std::string & name () const
 Returns name of the FixedRetryGen instance.
 
bool send (Addr addr, unsigned size, const MemCmd &cmd, Request::FlagsType flags, Addr pc)
 Creates a new request assigning the request parameters passed by the arguments.
 
void exit ()
 Exit the FixedRetryGen.
 
bool nextExecute ()
 Reads a line of the trace file.
 
bool isTraceComplete ()
 Returns the traceComplete variable which is set when end of the input trace file is reached.
 
int64_t tickDelta ()
 

Protected Attributes

gem5::TraceCPU::FixedRetryGen::FixedRetryGenStatGroup fixedStats
 

Private Attributes

TraceCPUowner
 Reference of the TraceCPU.
 
RequestPortport
 Reference of the port to be used to issue memory requests.
 
const RequestorID requestorId
 RequestorID used for the requests being sent.
 
InputStream trace
 Input stream used for reading the input trace file.
 
std::string genName
 String to store the name of the FixedRetryGen.
 
PacketPtr retryPkt
 PacketPtr used to store the packet to retry.
 
int64_t delta
 Stores the difference in the send ticks of the current and last packets.
 
bool traceComplete
 Set to true when end of trace is reached.
 
TraceElement currElement
 Store an element read from the trace to send as the next packet.
 

Detailed Description

Generator to read protobuf trace containing memory requests at fixed timestamps, perform flow control and issue memory requests.

If L1 cache port sends packet succesfully, determine the tick to send the next packet else wait for retry from cache.

Definition at line 312 of file trace_cpu.hh.

Constructor & Destructor Documentation

◆ FixedRetryGen()

gem5::TraceCPU::FixedRetryGen::FixedRetryGen ( TraceCPU & _owner,
const std::string & _name,
RequestPort & _port,
RequestorID requestor_id,
const std::string & trace_file )
inline

Member Function Documentation

◆ exit()

void gem5::TraceCPU::FixedRetryGen::exit ( )

Exit the FixedRetryGen.

Definition at line 1045 of file trace_cpu.cc.

References trace.

◆ init()

Tick gem5::TraceCPU::FixedRetryGen::init ( )

Called from TraceCPU init().

Reads the first message from the input trace file and returns the send tick.

Returns
Tick when first packet must be sent

Definition at line 983 of file trace_cpu.cc.

References currElement, DPRINTF, gem5::MaxTick, nextExecute(), and panic.

◆ isTraceComplete()

bool gem5::TraceCPU::FixedRetryGen::isTraceComplete ( )
inline

Returns the traceComplete variable which is set when end of the input trace file is reached.

Returns
bool true if traceComplete is set, false otherwise.

Definition at line 459 of file trace_cpu.hh.

References traceComplete.

◆ name()

const std::string & gem5::TraceCPU::FixedRetryGen::name ( ) const
inline

Returns name of the FixedRetryGen instance.

Definition at line 423 of file trace_cpu.hh.

References genName.

Referenced by FixedRetryGen().

◆ nextExecute()

bool gem5::TraceCPU::FixedRetryGen::nextExecute ( )

Reads a line of the trace file.

Returns the tick when the next request should be generated. If the end of the file has been reached, it returns false.

Returns
bool false id end of file has been reached

Definition at line 1051 of file trace_cpu.cc.

References currElement, gem5::curTick(), DPRINTF, fixedStats, trace, and traceComplete.

Referenced by init(), and tryNext().

◆ send()

bool gem5::TraceCPU::FixedRetryGen::send ( Addr addr,
unsigned size,
const MemCmd & cmd,
Request::FlagsType flags,
Addr pc )

Creates a new request assigning the request parameters passed by the arguments.

Calls the port's sendTimingReq() and returns true if the packet was sent succesfully. It is called by tryNext()

Parameters
addraddress of request
sizesize of request
cmdif it is a read or write request
flagsassociated request flags
pcinstruction PC that generated the request
Returns
true if packet was sent successfully

Definition at line 1082 of file trace_cpu.cc.

References gem5::X86ISA::addr, gem5::Packet::dataDynamic(), gem5::MemCmd::isWrite(), gem5::MipsISA::pc, port, requestorId, and retryPkt.

Referenced by tryNext().

◆ tickDelta()

int64_t gem5::TraceCPU::FixedRetryGen::tickDelta ( )
inline

Definition at line 461 of file trace_cpu.hh.

References delta.

◆ tryNext()

bool gem5::TraceCPU::FixedRetryGen::tryNext ( )

This tries to send current or retry packet and returns true if successfull.

It calls nextExecute() to read next message.

Returns
bool true if packet is sent successfully

Definition at line 998 of file trace_cpu.cc.

References currElement, delta, DPRINTF, fixedStats, nextExecute(), port, retryPkt, send(), and traceComplete.

Member Data Documentation

◆ currElement

TraceElement gem5::TraceCPU::FixedRetryGen::currElement
private

Store an element read from the trace to send as the next packet.

Definition at line 495 of file trace_cpu.hh.

Referenced by init(), nextExecute(), and tryNext().

◆ delta

int64_t gem5::TraceCPU::FixedRetryGen::delta
private

Stores the difference in the send ticks of the current and last packets.

Keeping this signed to check overflow to a negative value which will be caught by assert(delta > 0)

Definition at line 487 of file trace_cpu.hh.

Referenced by FixedRetryGen(), tickDelta(), and tryNext().

◆ fixedStats

gem5::TraceCPU::FixedRetryGen::FixedRetryGenStatGroup gem5::TraceCPU::FixedRetryGen::fixedStats
protected

Referenced by FixedRetryGen(), nextExecute(), and tryNext().

◆ genName

std::string gem5::TraceCPU::FixedRetryGen::genName
private

String to store the name of the FixedRetryGen.

Definition at line 477 of file trace_cpu.hh.

Referenced by FixedRetryGen(), and name().

◆ owner

TraceCPU& gem5::TraceCPU::FixedRetryGen::owner
private

Reference of the TraceCPU.

Definition at line 465 of file trace_cpu.hh.

Referenced by FixedRetryGen().

◆ port

RequestPort& gem5::TraceCPU::FixedRetryGen::port
private

Reference of the port to be used to issue memory requests.

Definition at line 468 of file trace_cpu.hh.

Referenced by FixedRetryGen(), send(), and tryNext().

◆ requestorId

const RequestorID gem5::TraceCPU::FixedRetryGen::requestorId
private

RequestorID used for the requests being sent.

Definition at line 471 of file trace_cpu.hh.

Referenced by FixedRetryGen(), and send().

◆ retryPkt

PacketPtr gem5::TraceCPU::FixedRetryGen::retryPkt
private

PacketPtr used to store the packet to retry.

Definition at line 480 of file trace_cpu.hh.

Referenced by FixedRetryGen(), send(), and tryNext().

◆ trace

InputStream gem5::TraceCPU::FixedRetryGen::trace
private

Input stream used for reading the input trace file.

Definition at line 474 of file trace_cpu.hh.

Referenced by exit(), FixedRetryGen(), and nextExecute().

◆ traceComplete

bool gem5::TraceCPU::FixedRetryGen::traceComplete
private

Set to true when end of trace is reached.

Definition at line 492 of file trace_cpu.hh.

Referenced by FixedRetryGen(), isTraceComplete(), nextExecute(), and tryNext().


The documentation for this class was generated from the following files:

Generated on Mon May 26 2025 09:19:26 for gem5 by doxygen 1.13.2