gem5 v24.0.0.0
|
Dynamic instruction for Minor. More...
#include <dyn_inst.hh>
Public Member Functions | |
MinorDynInst (StaticInstPtr si, InstId id_=InstId(), Fault fault_=NoFault) | |
bool | isBubble () const |
The BubbleIF interface. | |
bool | isFault () const |
Is this a fault rather than instruction. | |
bool | isInst () const |
Is this a real instruction. | |
bool | isMemRef () const |
Is this a real mem ref instruction. | |
bool | isNoCostInst () const |
Is this an instruction that can be executed ‘for free’ and needn't spend time in an FU. | |
bool | isLastOpInInst () const |
Assuming this is not a fault, is this instruction either a whole instruction or the last microop from a macroop. | |
void | minorTraceInst (const Named &named_object) const |
Print (possibly verbose) instruction information for MinorTrace using the given Named object's name. | |
void | reportData (std::ostream &os) const |
ReportIF interface. | |
bool | readPredicate () const |
void | setPredicate (bool val) |
bool | readMemAccPredicate () const |
void | setMemAccPredicate (bool val) |
~MinorDynInst () | |
Public Member Functions inherited from gem5::RefCounted | |
RefCounted () | |
We initialize the reference count to zero and the first object to take ownership of it must increment it to one. | |
virtual | ~RefCounted () |
We make the destructor virtual because we're likely to have virtual functions on reference counted objects. | |
void | incref () const |
Increment the reference count. | |
void | decref () const |
Decrement the reference count and destroy the object if all references are gone. | |
Static Public Member Functions | |
static MinorDynInstPtr | bubble () |
There is a single bubble inst. | |
Public Attributes | |
const StaticInstPtr | staticInst |
InstId | id |
trace::InstRecord * | traceData = nullptr |
Trace information for this instruction's execution. | |
std::unique_ptr< PCStateBase > | pc |
The fetch address of this instruction. | |
Fault | fault |
This is actually a fault masquerading as an instruction. | |
bool | triedToPredict = false |
Tried to predict the destination of this inst (if a control instruction or a sys call) | |
bool | predictedTaken = false |
This instruction was predicted to change control flow and the following instructions will have a newer predictionSeqNum. | |
std::unique_ptr< PCStateBase > | predictedTarget |
Predicted branch target. | |
unsigned int | fuIndex = 0 |
Fields only set during execution. | |
bool | inLSQ = false |
This instruction is in the LSQ, not a functional unit. | |
Fault | translationFault |
Translation fault in case of a mem ref. | |
bool | inStoreBuffer = false |
The instruction has been sent to the store buffer. | |
bool | canEarlyIssue = false |
Can this instruction be executed out of order. | |
bool | predicate = true |
Flag controlling conditional execution of the instruction. | |
bool | memAccPredicate = true |
Flag controlling conditional execution of the memory access associated with the instruction (only meaningful for loads/stores) | |
InstSeqNum | instToWaitFor = 0 |
execSeqNum of the latest inst on which this inst depends. | |
Cycles | extraCommitDelay {0} |
Extra delay at the end of the pipeline. | |
TimingExpr * | extraCommitDelayExpr = nullptr |
Cycles | minimumCommitCycle {0} |
Once issued, extraCommitDelay becomes minimumCommitCycle to account for delay in absolute time. | |
std::vector< RegId > | flatDestRegIdx |
Flat register indices so that, when clearing the scoreboard, we have the same register indices as when the instruction was marked up. | |
Static Private Attributes | |
static MinorDynInstPtr | bubbleInst |
A prototypical bubble instruction. | |
Dynamic instruction for Minor.
MinorDynInst implements the BubbleIF interface Has two separate notions of sequence number for pre/post-micro-op decomposition: fetchSeqNum and execSeqNum
Definition at line 162 of file dyn_inst.hh.
|
inline |
Definition at line 240 of file dyn_inst.hh.
gem5::minor::MinorDynInst::~MinorDynInst | ( | ) |
Definition at line 227 of file dyn_inst.cc.
References traceData.
|
inlinestatic |
There is a single bubble inst.
Definition at line 250 of file dyn_inst.hh.
References bubbleInst.
Referenced by gem5::minor::QueuedInst::bubble(), gem5::minor::ForwardInstData::bubbleFill(), gem5::minor::Execute::commit(), gem5::minor::Execute::evaluate(), and gem5::minor::Execute::takeInterrupt().
|
inline |
The BubbleIF interface.
Definition at line 247 of file dyn_inst.hh.
Referenced by isInst(), and reportData().
|
inline |
Is this a fault rather than instruction.
Definition at line 253 of file dyn_inst.hh.
References fault, and gem5::NoFault.
Referenced by isInst(), minorTraceInst(), gem5::minor::operator<<(), and reportData().
|
inline |
Is this a real instruction.
Definition at line 256 of file dyn_inst.hh.
References isBubble(), and isFault().
Referenced by isMemRef(), and isNoCostInst().
bool gem5::minor::MinorDynInst::isLastOpInInst | ( | ) | const |
Assuming this is not a fault, is this instruction either a whole instruction or the last microop from a macroop.
Definition at line 87 of file dyn_inst.cc.
References gem5::StaticInst::isLastMicroop(), gem5::StaticInst::isMicroop(), and staticInst.
|
inline |
Is this a real mem ref instruction.
Definition at line 259 of file dyn_inst.hh.
References isInst(), gem5::StaticInst::isMemRef(), and staticInst.
bool gem5::minor::MinorDynInst::isNoCostInst | ( | ) | const |
Is this an instruction that can be executed ‘for free’ and needn't spend time in an FU.
Definition at line 94 of file dyn_inst.cc.
References isInst(), gem5::StaticInst::opClass(), and staticInst.
void gem5::minor::MinorDynInst::minorTraceInst | ( | const Named & | named_object | ) | const |
Print (possibly verbose) instruction information for MinorTrace using the given Named object's name.
Definition at line 173 of file dyn_inst.cc.
References gem5::ccprintf(), gem5::StaticInst::destRegIdx(), gem5::StaticInst::disassemble(), fault, flags, gem5::StaticInst::getEMI(), isFault(), gem5::StaticInst::isMacroop(), gem5::minor::minorInst(), gem5::StaticInst::numDestRegs(), gem5::StaticInst::numSrcRegs(), gem5::StaticInst::opClass(), pc, predictedTaken, gem5::StaticInst::printFlags(), gem5::minor::printRegName(), gem5::StaticInst::srcRegIdx(), and staticInst.
|
inline |
Definition at line 280 of file dyn_inst.hh.
References memAccPredicate.
|
inline |
Definition at line 276 of file dyn_inst.hh.
References predicate.
void gem5::minor::MinorDynInst::reportData | ( | std::ostream & | os | ) | const |
ReportIF interface.
Definition at line 100 of file dyn_inst.cc.
References id, isBubble(), isFault(), gem5::NoFault, gem5::X86ISA::os, and translationFault.
|
inline |
Definition at line 282 of file dyn_inst.hh.
References memAccPredicate, and gem5::X86ISA::val.
|
inline |
Definition at line 278 of file dyn_inst.hh.
References predicate, and gem5::X86ISA::val.
|
staticprivate |
A prototypical bubble instruction.
You must call MinorDynInst::init to initialise this
Definition at line 167 of file dyn_inst.hh.
Referenced by bubble().
bool gem5::minor::MinorDynInst::canEarlyIssue = false |
Can this instruction be executed out of order.
In this model, this only happens with mem refs that need to be issued early to allow other instructions to fill the fetch delay
Definition at line 211 of file dyn_inst.hh.
Cycles gem5::minor::MinorDynInst::extraCommitDelay {0} |
Extra delay at the end of the pipeline.
Definition at line 227 of file dyn_inst.hh.
TimingExpr* gem5::minor::MinorDynInst::extraCommitDelayExpr = nullptr |
Definition at line 228 of file dyn_inst.hh.
Fault gem5::minor::MinorDynInst::fault |
This is actually a fault masquerading as an instruction.
Definition at line 181 of file dyn_inst.hh.
Referenced by isFault(), minorTraceInst(), and gem5::minor::operator<<().
std::vector<RegId> gem5::minor::MinorDynInst::flatDestRegIdx |
Flat register indices so that, when clearing the scoreboard, we have the same register indices as when the instruction was marked up.
Definition at line 237 of file dyn_inst.hh.
unsigned int gem5::minor::MinorDynInst::fuIndex = 0 |
Fields only set during execution.
FU this instruction is issued to
Definition at line 197 of file dyn_inst.hh.
InstId gem5::minor::MinorDynInst::id |
Definition at line 172 of file dyn_inst.hh.
Referenced by gem5::minor::operator<<(), and reportData().
bool gem5::minor::MinorDynInst::inLSQ = false |
This instruction is in the LSQ, not a functional unit.
Definition at line 200 of file dyn_inst.hh.
bool gem5::minor::MinorDynInst::inStoreBuffer = false |
The instruction has been sent to the store buffer.
Definition at line 206 of file dyn_inst.hh.
InstSeqNum gem5::minor::MinorDynInst::instToWaitFor = 0 |
execSeqNum of the latest inst on which this inst depends.
This can be used as a sanity check for dependency ordering where slightly out of order execution is required (notably initiateAcc for memory ops)
Definition at line 224 of file dyn_inst.hh.
bool gem5::minor::MinorDynInst::memAccPredicate = true |
Flag controlling conditional execution of the memory access associated with the instruction (only meaningful for loads/stores)
Definition at line 218 of file dyn_inst.hh.
Referenced by readMemAccPredicate(), and setMemAccPredicate().
Cycles gem5::minor::MinorDynInst::minimumCommitCycle {0} |
Once issued, extraCommitDelay becomes minimumCommitCycle to account for delay in absolute time.
Definition at line 232 of file dyn_inst.hh.
std::unique_ptr<PCStateBase> gem5::minor::MinorDynInst::pc |
The fetch address of this instruction.
Definition at line 178 of file dyn_inst.hh.
Referenced by minorTraceInst(), and gem5::minor::operator<<().
bool gem5::minor::MinorDynInst::predicate = true |
Flag controlling conditional execution of the instruction.
Definition at line 214 of file dyn_inst.hh.
Referenced by readPredicate(), and setPredicate().
bool gem5::minor::MinorDynInst::predictedTaken = false |
This instruction was predicted to change control flow and the following instructions will have a newer predictionSeqNum.
Definition at line 189 of file dyn_inst.hh.
Referenced by minorTraceInst().
std::unique_ptr<PCStateBase> gem5::minor::MinorDynInst::predictedTarget |
Predicted branch target.
Definition at line 192 of file dyn_inst.hh.
const StaticInstPtr gem5::minor::MinorDynInst::staticInst |
Definition at line 170 of file dyn_inst.hh.
Referenced by isLastOpInInst(), isMemRef(), isNoCostInst(), minorTraceInst(), and gem5::minor::operator<<().
trace::InstRecord* gem5::minor::MinorDynInst::traceData = nullptr |
Trace information for this instruction's execution.
Definition at line 175 of file dyn_inst.hh.
Referenced by ~MinorDynInst().
Fault gem5::minor::MinorDynInst::translationFault |
Translation fault in case of a mem ref.
Definition at line 203 of file dyn_inst.hh.
Referenced by gem5::minor::operator<<(), and reportData().
bool gem5::minor::MinorDynInst::triedToPredict = false |
Tried to predict the destination of this inst (if a control instruction or a sys call)
Definition at line 185 of file dyn_inst.hh.