gem5 v24.0.0.0
Loading...
Searching...
No Matches
gem5::TraceCPU::ElasticDataGen::GraphNode Class Reference

The struct GraphNode stores an instruction in the trace file. More...

Public Types

typedef std::list< NodeSeqNumRobDepList
 Typedef for the list containing the ROB dependencies.
 
typedef std::list< NodeSeqNumRegDepList
 Typedef for the list containing the register dependencies.
 

Public Member Functions

bool isLoad () const
 Is the node a load.
 
bool isStore () const
 Is the node a store.
 
bool isComp () const
 Is the node a compute (non load/store) node.
 
bool removeRegDep (NodeSeqNum reg_dep)
 Remove completed instruction from register dependency array.
 
bool removeRobDep (NodeSeqNum rob_dep)
 Remove completed instruction from order dependency array.
 
bool removeDepOnInst (NodeSeqNum done_seq_num)
 Check for all dependencies on completed inst.
 
bool isStrictlyOrdered () const
 Return true if node has a request which is strictly ordered.
 
void writeElementAsTrace () const
 Write out element in trace-compatible format using debug flag TraceCPUData.
 
std::string typeToStr () const
 Return string specifying the type of the node.
 

Public Attributes

NodeSeqNum seqNum
 Instruction sequence number.
 
NodeRobNum robNum
 ROB occupancy number.
 
RecordType type
 Type of the node corresponding to the instruction modeled by it.
 
Addr physAddr
 The address for the request if any.
 
Addr virtAddr
 The virtual address for the request if any.
 
uint32_t size
 Size of request if any.
 
Request::Flags flags
 Request flags if any.
 
Addr pc
 Instruction PC.
 
RobDepList robDep
 List of order dependencies.
 
uint64_t compDelay
 Computational delay.
 
RegDepList regDep
 List of register dependencies (incoming) if any.
 
std::vector< GraphNode * > dependents
 A vector of nodes dependent (outgoing) on this node.
 

Detailed Description

The struct GraphNode stores an instruction in the trace file.

The format of the trace file favours constructing a dependency graph of the execution and this struct is used to encapsulate the request data as well as pointers to its dependent GraphNodes.

Definition at line 542 of file trace_cpu.hh.

Member Typedef Documentation

◆ RegDepList

Typedef for the list containing the register dependencies.

Definition at line 549 of file trace_cpu.hh.

◆ RobDepList

Typedef for the list containing the ROB dependencies.

Definition at line 546 of file trace_cpu.hh.

Member Function Documentation

◆ isComp()

bool gem5::TraceCPU::ElasticDataGen::GraphNode::isComp ( ) const
inline

Is the node a compute (non load/store) node.

Definition at line 604 of file trace_cpu.hh.

References type.

◆ isLoad()

◆ isStore()

bool gem5::TraceCPU::ElasticDataGen::GraphNode::isStore ( ) const
inline

◆ isStrictlyOrdered()

bool gem5::TraceCPU::ElasticDataGen::GraphNode::isStrictlyOrdered ( ) const
inline

◆ removeDepOnInst()

bool gem5::TraceCPU::ElasticDataGen::GraphNode::removeDepOnInst ( NodeSeqNum done_seq_num)

Check for all dependencies on completed inst.

Definition at line 1338 of file trace_cpu.cc.

◆ removeRegDep()

bool gem5::TraceCPU::ElasticDataGen::GraphNode::removeRegDep ( NodeSeqNum reg_dep)

Remove completed instruction from register dependency array.

Definition at line 1304 of file trace_cpu.cc.

References DPRINTFR.

◆ removeRobDep()

bool gem5::TraceCPU::ElasticDataGen::GraphNode::removeRobDep ( NodeSeqNum rob_dep)

Remove completed instruction from order dependency array.

Definition at line 1322 of file trace_cpu.cc.

References DPRINTFR.

◆ typeToStr()

std::string gem5::TraceCPU::ElasticDataGen::GraphNode::typeToStr ( ) const

Return string specifying the type of the node.

Definition at line 1384 of file trace_cpu.cc.

References gem5::X86ISA::type.

Referenced by gem5::TraceCPU::ElasticDataGen::checkAndIssue(), and gem5::TraceCPU::ElasticDataGen::printReadyList().

◆ writeElementAsTrace()

void gem5::TraceCPU::ElasticDataGen::GraphNode::writeElementAsTrace ( ) const

Write out element in trace-compatible format using debug flag TraceCPUData.

Definition at line 1353 of file trace_cpu.cc.

References DPRINTFR, flags, and gem5::X86ISA::physAddr.

Member Data Documentation

◆ compDelay

uint64_t gem5::TraceCPU::ElasticDataGen::GraphNode::compDelay

◆ dependents

std::vector<GraphNode *> gem5::TraceCPU::ElasticDataGen::GraphNode::dependents

A vector of nodes dependent (outgoing) on this node.

A sequential container is chosen because when dependents become free, they attempt to issue in program order.

Definition at line 595 of file trace_cpu.hh.

Referenced by gem5::TraceCPU::ElasticDataGen::completeMemAccess(), and gem5::TraceCPU::ElasticDataGen::execute().

◆ flags

Request::Flags gem5::TraceCPU::ElasticDataGen::GraphNode::flags

◆ pc

Addr gem5::TraceCPU::ElasticDataGen::GraphNode::pc

◆ physAddr

Addr gem5::TraceCPU::ElasticDataGen::GraphNode::physAddr

The address for the request if any.

Definition at line 564 of file trace_cpu.hh.

Referenced by gem5::TraceCPU::ElasticDataGen::executeMemReq(), and gem5::TraceCPU::ElasticDataGen::InputStream::read().

◆ regDep

RegDepList gem5::TraceCPU::ElasticDataGen::GraphNode::regDep

List of register dependencies (incoming) if any.

Maximum number of source registers used to set maximum size of the array

Definition at line 588 of file trace_cpu.hh.

Referenced by gem5::TraceCPU::ElasticDataGen::checkAndIssue(), gem5::TraceCPU::ElasticDataGen::InputStream::read(), and gem5::TraceCPU::ElasticDataGen::readNextWindow().

◆ robDep

RobDepList gem5::TraceCPU::ElasticDataGen::GraphNode::robDep

◆ robNum

◆ seqNum

◆ size

uint32_t gem5::TraceCPU::ElasticDataGen::GraphNode::size

Size of request if any.

Definition at line 570 of file trace_cpu.hh.

Referenced by gem5::TraceCPU::ElasticDataGen::executeMemReq(), and gem5::TraceCPU::ElasticDataGen::InputStream::read().

◆ type

RecordType gem5::TraceCPU::ElasticDataGen::GraphNode::type

Type of the node corresponding to the instruction modeled by it.

Definition at line 561 of file trace_cpu.hh.

Referenced by isComp(), isLoad(), isStore(), and gem5::TraceCPU::ElasticDataGen::InputStream::read().

◆ virtAddr

Addr gem5::TraceCPU::ElasticDataGen::GraphNode::virtAddr

The virtual address for the request if any.

Definition at line 567 of file trace_cpu.hh.

Referenced by gem5::TraceCPU::ElasticDataGen::executeMemReq(), and gem5::TraceCPU::ElasticDataGen::InputStream::read().


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

Generated on Tue Jun 18 2024 16:24:15 for gem5 by doxygen 1.11.0