gem5  v22.1.0.0
Public Types | Public Member Functions | Public Attributes | List of all members
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. More...
 
typedef std::list< NodeSeqNumRegDepList
 Typedef for the list containing the register dependencies. More...
 

Public Member Functions

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

Public Attributes

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

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 557 of file trace_cpu.hh.

Member Typedef Documentation

◆ RegDepList

Typedef for the list containing the register dependencies.

Definition at line 564 of file trace_cpu.hh.

◆ RobDepList

Typedef for the list containing the ROB dependencies.

Definition at line 561 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 619 of file trace_cpu.hh.

References type.

◆ isLoad()

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

◆ 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 1330 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 1296 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 1314 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 1376 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 1345 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 610 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 579 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 603 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

NodeRobNum gem5::TraceCPU::ElasticDataGen::GraphNode::robNum

◆ seqNum

NodeSeqNum gem5::TraceCPU::ElasticDataGen::GraphNode::seqNum

◆ size

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

Size of request if any.

Definition at line 585 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 576 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 582 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 Wed Dec 21 2022 10:23:15 for gem5 by doxygen 1.9.1