gem5 v24.0.0.0
|
The struct GraphNode stores an instruction in the trace file. More...
Public Types | |
typedef std::list< NodeSeqNum > | RobDepList |
Typedef for the list containing the ROB dependencies. | |
typedef std::list< NodeSeqNum > | RegDepList |
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. | |
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.
Typedef for the list containing the register dependencies.
Definition at line 549 of file trace_cpu.hh.
Typedef for the list containing the ROB dependencies.
Definition at line 546 of file trace_cpu.hh.
|
inline |
Is the node a compute (non load/store) node.
Definition at line 604 of file trace_cpu.hh.
References type.
|
inline |
Is the node a load.
Definition at line 598 of file trace_cpu.hh.
References type.
Referenced by gem5::TraceCPU::ElasticDataGen::execute(), gem5::TraceCPU::ElasticDataGen::executeMemReq(), gem5::TraceCPU::ElasticDataGen::HardwareResource::isAvailable(), gem5::TraceCPU::ElasticDataGen::HardwareResource::occupy(), and gem5::TraceCPU::ElasticDataGen::HardwareResource::release().
|
inline |
Is the node a store.
Definition at line 601 of file trace_cpu.hh.
References type.
Referenced by gem5::TraceCPU::ElasticDataGen::execute(), gem5::TraceCPU::ElasticDataGen::HardwareResource::isAvailable(), gem5::TraceCPU::ElasticDataGen::HardwareResource::occupy(), and gem5::TraceCPU::ElasticDataGen::HardwareResource::release().
|
inline |
Return true if node has a request which is strictly ordered.
Definition at line 617 of file trace_cpu.hh.
References flags, gem5::Flags< T >::isSet(), and gem5::Request::STRICT_ORDER.
Referenced by gem5::TraceCPU::ElasticDataGen::execute(), gem5::TraceCPU::ElasticDataGen::executeMemReq(), and gem5::TraceCPU::ElasticDataGen::HardwareResource::release().
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.
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.
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.
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().
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.
uint64_t gem5::TraceCPU::ElasticDataGen::GraphNode::compDelay |
Computational delay.
Definition at line 582 of file trace_cpu.hh.
Referenced by gem5::TraceCPU::ElasticDataGen::checkAndIssue(), and gem5::TraceCPU::ElasticDataGen::InputStream::read().
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().
Request::Flags gem5::TraceCPU::ElasticDataGen::GraphNode::flags |
Request flags if any.
Definition at line 573 of file trace_cpu.hh.
Referenced by gem5::TraceCPU::ElasticDataGen::executeMemReq(), isStrictlyOrdered(), and gem5::TraceCPU::ElasticDataGen::InputStream::read().
Addr gem5::TraceCPU::ElasticDataGen::GraphNode::pc |
Instruction PC.
Definition at line 576 of file trace_cpu.hh.
Referenced by gem5::TraceCPU::ElasticDataGen::executeMemReq(), and gem5::TraceCPU::ElasticDataGen::InputStream::read().
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().
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().
RobDepList gem5::TraceCPU::ElasticDataGen::GraphNode::robDep |
List of order dependencies.
Definition at line 579 of file trace_cpu.hh.
Referenced by gem5::TraceCPU::ElasticDataGen::checkAndIssue(), gem5::TraceCPU::ElasticDataGen::InputStream::read(), and gem5::TraceCPU::ElasticDataGen::readNextWindow().
NodeRobNum gem5::TraceCPU::ElasticDataGen::GraphNode::robNum |
ROB occupancy number.
Definition at line 555 of file trace_cpu.hh.
Referenced by gem5::TraceCPU::ElasticDataGen::checkAndIssue(), gem5::TraceCPU::ElasticDataGen::completeMemAccess(), gem5::TraceCPU::ElasticDataGen::execute(), gem5::TraceCPU::ElasticDataGen::HardwareResource::isAvailable(), gem5::TraceCPU::ElasticDataGen::HardwareResource::occupy(), and gem5::TraceCPU::ElasticDataGen::InputStream::read().
NodeSeqNum gem5::TraceCPU::ElasticDataGen::GraphNode::seqNum |
Instruction sequence number.
Definition at line 552 of file trace_cpu.hh.
Referenced by gem5::TraceCPU::ElasticDataGen::checkAndIssue(), gem5::TraceCPU::ElasticDataGen::completeMemAccess(), gem5::TraceCPU::ElasticDataGen::execute(), gem5::TraceCPU::ElasticDataGen::executeMemReq(), gem5::TraceCPU::ElasticDataGen::HardwareResource::isAvailable(), gem5::TraceCPU::ElasticDataGen::HardwareResource::occupy(), gem5::TraceCPU::ElasticDataGen::InputStream::read(), gem5::TraceCPU::ElasticDataGen::readNextWindow(), and gem5::TraceCPU::ElasticDataGen::HardwareResource::release().
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().
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().
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().