gem5 v24.0.0.0
|
Forward data betwen Execute and Fetch1 carrying change-of-address/stream information. More...
#include <pipe_data.hh>
Public Types | |
enum | Reason { NoBranch , CorrectlyPredictedBranch , UnpredictedBranch , BranchPrediction , BadlyPredictedBranchTarget , BadlyPredictedBranch , SuspendThread , Interrupt , HaltFetch } |
Public Member Functions | |
BranchData () | |
BranchData (Reason reason_, ThreadID thread_id, InstSeqNum new_stream_seq_num, InstSeqNum new_prediction_seq_num, const PCStateBase &_target, MinorDynInstPtr inst_) | |
BranchData (const BranchData &other) | |
BranchData & | operator= (const BranchData &other) |
bool | isBubble () const |
bool | isStreamChange () const |
As static isStreamChange but on this branch data. | |
bool | isBranch () const |
As static isBranch but on this branch data. | |
void | reportData (std::ostream &os) const |
ReportIF interface. | |
Static Public Member Functions | |
static bool | isStreamChange (const BranchData::Reason reason) |
Is a request with this reason actually a request to change the PC rather than a bubble or branch prediction information. | |
static bool | isBranch (const BranchData::Reason reason) |
Is a request with this reason actually a 'real' branch, that is, a stream change that's not just an instruction to Fetch1 to halt or wake up. | |
static BranchData | bubble () |
BubbleIF interface. | |
Public Attributes | |
Reason | reason = NoBranch |
Explanation for this branch. | |
ThreadID | threadId = InvalidThreadID |
ThreadID associated with branch. | |
InstSeqNum | newStreamSeqNum = 0 |
Sequence number of new stream/prediction to be adopted. | |
InstSeqNum | newPredictionSeqNum = 0 |
std::unique_ptr< PCStateBase > | target |
Starting PC of that stream. | |
MinorDynInstPtr | inst = MinorDynInst::bubble() |
Instruction which caused this branch. | |
Forward data betwen Execute and Fetch1 carrying change-of-address/stream information.
Definition at line 65 of file pipe_data.hh.
Enumerator | |
---|---|
NoBranch | |
CorrectlyPredictedBranch | |
UnpredictedBranch | |
BranchPrediction | |
BadlyPredictedBranchTarget | |
BadlyPredictedBranch | |
SuspendThread | |
Interrupt | |
HaltFetch |
Definition at line 68 of file pipe_data.hh.
|
inline |
Definition at line 128 of file pipe_data.hh.
Referenced by bubble().
|
inline |
Definition at line 130 of file pipe_data.hh.
References gem5::ArmISA::set, and target.
|
inline |
Definition at line 141 of file pipe_data.hh.
References gem5::ArmISA::set, and target.
|
inlinestatic |
BubbleIF interface.
Definition at line 162 of file pipe_data.hh.
References BranchData().
Referenced by gem5::minor::Execute::evaluate().
|
inline |
As static isBranch but on this branch data.
Definition at line 169 of file pipe_data.hh.
References isBranch(), and reason.
Referenced by isBranch().
|
static |
Is a request with this reason actually a 'real' branch, that is, a stream change that's not just an instruction to Fetch1 to halt or wake up.
Definition at line 112 of file pipe_data.cc.
References BadlyPredictedBranch, BadlyPredictedBranchTarget, BranchPrediction, CorrectlyPredictedBranch, HaltFetch, Interrupt, NoBranch, reason, SuspendThread, and UnpredictedBranch.
|
inline |
Definition at line 163 of file pipe_data.hh.
References NoBranch, and reason.
Referenced by gem5::minor::Execute::commitInst(), gem5::minor::Execute::evaluate(), gem5::minor::Fetch1::evaluate(), gem5::minor::Fetch2::evaluate(), and reportData().
|
inline |
As static isStreamChange but on this branch data.
Definition at line 166 of file pipe_data.hh.
References isStreamChange(), and reason.
Referenced by isStreamChange(), and gem5::minor::Execute::updateBranchData().
|
static |
Is a request with this reason actually a request to change the PC rather than a bubble or branch prediction information.
Definition at line 84 of file pipe_data.cc.
References BadlyPredictedBranch, BadlyPredictedBranchTarget, BranchPrediction, CorrectlyPredictedBranch, HaltFetch, Interrupt, NoBranch, reason, SuspendThread, and UnpredictedBranch.
Referenced by gem5::minor::Execute::commit(), gem5::minor::Fetch1::evaluate(), and gem5::minor::Fetch2::evaluate().
|
inline |
Definition at line 150 of file pipe_data.hh.
References inst, newPredictionSeqNum, newStreamSeqNum, reason, gem5::ArmISA::set, target, and threadId.
void gem5::minor::BranchData::reportData | ( | std::ostream & | os | ) | const |
ReportIF interface.
Definition at line 140 of file pipe_data.cc.
References inst, isBubble(), newPredictionSeqNum, newStreamSeqNum, gem5::X86ISA::os, reason, and target.
MinorDynInstPtr gem5::minor::BranchData::inst = MinorDynInst::bubble() |
Instruction which caused this branch.
Definition at line 125 of file pipe_data.hh.
Referenced by gem5::minor::operator<<(), operator=(), reportData(), and gem5::minor::Fetch2::updateBranchPrediction().
InstSeqNum gem5::minor::BranchData::newPredictionSeqNum = 0 |
Definition at line 119 of file pipe_data.hh.
Referenced by gem5::minor::operator<<(), operator=(), reportData(), and gem5::minor::Fetch1::updateExpectedSeqNums().
InstSeqNum gem5::minor::BranchData::newStreamSeqNum = 0 |
Sequence number of new stream/prediction to be adopted.
Definition at line 118 of file pipe_data.hh.
Referenced by gem5::minor::Fetch1::evaluate(), gem5::minor::operator<<(), operator=(), reportData(), and gem5::minor::Fetch1::updateExpectedSeqNums().
Explanation for this branch.
Definition at line 112 of file pipe_data.hh.
Referenced by gem5::minor::Fetch1::changeStream(), isBranch(), isBranch(), isBubble(), isStreamChange(), isStreamChange(), gem5::minor::operator<<(), operator=(), reportData(), and gem5::minor::Fetch2::updateBranchPrediction().
std::unique_ptr<PCStateBase> gem5::minor::BranchData::target |
Starting PC of that stream.
Definition at line 122 of file pipe_data.hh.
Referenced by BranchData(), BranchData(), gem5::minor::Fetch1::changeStream(), gem5::minor::operator<<(), operator=(), gem5::minor::Fetch2::predictBranch(), reportData(), and gem5::minor::Fetch2::updateBranchPrediction().
ThreadID gem5::minor::BranchData::threadId = InvalidThreadID |
ThreadID associated with branch.
Definition at line 115 of file pipe_data.hh.
Referenced by gem5::minor::Fetch1::changeStream(), gem5::minor::Fetch1::evaluate(), gem5::minor::Fetch2::evaluate(), operator=(), and gem5::minor::Fetch1::updateExpectedSeqNums().