|
gem5 [DEVELOP-FOR-25.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(), gem5::TraceCPU::ElasticDataGen::HardwareResource::release(), and writeElementAsTrace().
|
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(), gem5::TraceCPU::ElasticDataGen::HardwareResource::release(), and writeElementAsTrace().
|
inline |
Return true if node has a request which is strictly ordered.
Definition at line 617 of file trace_cpu.hh.
References flags, 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.
References regDep, removeRegDep(), removeRobDep(), and robDep.
| 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, regDep, and seqNum.
Referenced by removeDepOnInst().
| 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, robDep, and seqNum.
Referenced by removeDepOnInst().
| 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 type.
Referenced by gem5::TraceCPU::ElasticDataGen::checkAndIssue(), gem5::TraceCPU::ElasticDataGen::printReadyList(), and 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 compDelay, dependents, DPRINTFR, flags, isLoad(), isStore(), physAddr, regDep, robDep, seqNum, size, and typeToStr().
| uint64_t gem5::TraceCPU::ElasticDataGen::GraphNode::compDelay |
Computational delay.
Definition at line 582 of file trace_cpu.hh.
Referenced by gem5::TraceCPU::ElasticDataGen::checkAndIssue(), gem5::TraceCPU::ElasticDataGen::InputStream::read(), and writeElementAsTrace().
| 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(), gem5::TraceCPU::ElasticDataGen::execute(), and writeElementAsTrace().
| 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(), gem5::TraceCPU::ElasticDataGen::InputStream::read(), and writeElementAsTrace().
| 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(), gem5::TraceCPU::ElasticDataGen::InputStream::read(), and writeElementAsTrace().
| 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(), gem5::TraceCPU::ElasticDataGen::readNextWindow(), removeDepOnInst(), removeRegDep(), and writeElementAsTrace().
| 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(), gem5::TraceCPU::ElasticDataGen::readNextWindow(), removeDepOnInst(), removeRobDep(), and writeElementAsTrace().
| 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(), gem5::TraceCPU::ElasticDataGen::HardwareResource::release(), removeRegDep(), removeRobDep(), and writeElementAsTrace().
| 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(), gem5::TraceCPU::ElasticDataGen::InputStream::read(), and writeElementAsTrace().
| 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(), gem5::TraceCPU::ElasticDataGen::InputStream::read(), and typeToStr().
| 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().