gem5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Types | Public Member Functions | Public Attributes | Static Public Attributes | List of all members
TraceCPU::ElasticDataGen::GraphNode Class Reference

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

Public Types

typedef std::array< NodeSeqNum,
maxRobDep
RobDepArray
 Typedef for the array containing the ROB dependencies. More...
 
typedef std::array< NodeSeqNum,
TheISA::MaxInstSrcRegs > 
RegDepArray
 Typedef for the array 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...
 
void clearRegDep ()
 Initialize register dependency array to all zeroes. More...
 
void clearRobDep ()
 Initialize register dependency array to all zeroes. 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 modelled 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 asid
 The address space id which is set if the virtual address is set. More...
 
uint32_t size
 Size of request if any. More...
 
Request::Flags flags
 Request flags if any. More...
 
Addr pc
 Instruction PC. More...
 
RobDepArray robDep
 Array of order dependencies. More...
 
uint8_t numRobDep
 Number of order dependencies. More...
 
uint64_t compDelay
 Computational delay. More...
 
RegDepArray regDep
 Array of register dependencies (incoming) if any. More...
 
uint8_t numRegDep
 Number of register dependencies. More...
 
std::vector< GraphNode * > dependents
 A vector of nodes dependent (outgoing) on this node. More...
 

Static Public Attributes

static const uint8_t maxRobDep = 2
 The maximum no. 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 578 of file trace_cpu.hh.

Member Typedef Documentation

typedef std::array<NodeSeqNum, TheISA::MaxInstSrcRegs> TraceCPU::ElasticDataGen::GraphNode::RegDepArray

Typedef for the array containing the register dependencies.

Definition at line 592 of file trace_cpu.hh.

Typedef for the array containing the ROB dependencies.

Definition at line 589 of file trace_cpu.hh.

Member Function Documentation

void TraceCPU::ElasticDataGen::GraphNode::clearRegDep ( )

Initialize register dependency array to all zeroes.

Definition at line 1413 of file trace_cpu.cc.

Referenced by TraceCPU::ElasticDataGen::InputStream::read().

void TraceCPU::ElasticDataGen::GraphNode::clearRobDep ( )

Initialize register dependency array to all zeroes.

Definition at line 1421 of file trace_cpu.cc.

Referenced by TraceCPU::ElasticDataGen::InputStream::read().

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

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

Definition at line 653 of file trace_cpu.hh.

References type.

bool TraceCPU::ElasticDataGen::GraphNode::isLoad ( ) const
inline
bool TraceCPU::ElasticDataGen::GraphNode::isStore ( ) const
inline
bool TraceCPU::ElasticDataGen::GraphNode::isStrictlyOrdered ( ) const
inline

Return true if node has a request which is strictly ordered.

Definition at line 671 of file trace_cpu.hh.

References flags, Flags< T >::isSet(), and Request::STRICT_ORDER.

Referenced by TraceCPU::ElasticDataGen::executeMemReq(), and TraceCPU::ElasticDataGen::HardwareResource::release().

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

Check for all dependencies on completed inst.

Definition at line 1429 of file trace_cpu.cc.

References M5_VAR_USED.

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

Remove completed instruction from register dependency array.

Definition at line 1377 of file trace_cpu.cc.

References DPRINTFR.

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

Remove completed instruction from order dependency array.

Definition at line 1396 of file trace_cpu.cc.

References DPRINTFR.

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

Return string specifying the type of the node.

Definition at line 1477 of file trace_cpu.cc.

References X86ISA::type.

Referenced by TraceCPU::ElasticDataGen::checkAndIssue().

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

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

Definition at line 1444 of file trace_cpu.cc.

References DPRINTFR, ArmISA::i, X86ISA::physAddr, and X86ISA::size().

Member Data Documentation

uint32_t TraceCPU::ElasticDataGen::GraphNode::asid

The address space id which is set if the virtual address is set.

Definition at line 610 of file trace_cpu.hh.

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

uint64_t TraceCPU::ElasticDataGen::GraphNode::compDelay

Computational delay.

Definition at line 628 of file trace_cpu.hh.

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

std::vector<GraphNode *> 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 644 of file trace_cpu.hh.

Request::Flags TraceCPU::ElasticDataGen::GraphNode::flags
const uint8_t TraceCPU::ElasticDataGen::GraphNode::maxRobDep = 2
static

The maximum no.

of ROB dependencies. There can be at most 2 order dependencies which could exist for a store. For a load and comp node there can be at most one order dependency.

Definition at line 586 of file trace_cpu.hh.

Referenced by TraceCPU::ElasticDataGen::InputStream::read().

uint8_t TraceCPU::ElasticDataGen::GraphNode::numRegDep
uint8_t TraceCPU::ElasticDataGen::GraphNode::numRobDep
Addr TraceCPU::ElasticDataGen::GraphNode::pc

Instruction PC.

Definition at line 619 of file trace_cpu.hh.

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

Addr TraceCPU::ElasticDataGen::GraphNode::physAddr

The address for the request if any.

Definition at line 604 of file trace_cpu.hh.

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

RegDepArray TraceCPU::ElasticDataGen::GraphNode::regDep

Array of register dependencies (incoming) if any.

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

Definition at line 634 of file trace_cpu.hh.

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

RobDepArray TraceCPU::ElasticDataGen::GraphNode::robDep

Array of order dependencies.

Definition at line 622 of file trace_cpu.hh.

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

NodeRobNum TraceCPU::ElasticDataGen::GraphNode::robNum
NodeSeqNum TraceCPU::ElasticDataGen::GraphNode::seqNum
uint32_t TraceCPU::ElasticDataGen::GraphNode::size

Size of request if any.

Definition at line 613 of file trace_cpu.hh.

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

RecordType TraceCPU::ElasticDataGen::GraphNode::type

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

Definition at line 601 of file trace_cpu.hh.

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

Addr TraceCPU::ElasticDataGen::GraphNode::virtAddr

The virtual address for the request if any.

Definition at line 607 of file trace_cpu.hh.

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


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

Generated on Fri Jun 9 2017 13:04:21 for gem5 by doxygen 1.8.6