gem5
|
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, TheISA::PCState target, MinorDynInstPtr inst_) | |
bool | isBubble () const |
bool | isStreamChange () const |
As static isStreamChange but on this branch data. More... | |
bool | isBranch () const |
As static isBranch but on this branch data. More... | |
void | reportData (std::ostream &os) const |
ReportIF interface. More... | |
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. More... | |
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. More... | |
static BranchData | bubble () |
BubbleIF interface. More... | |
Public Attributes | |
Reason | reason |
Explanation for this branch. More... | |
ThreadID | threadId |
ThreadID associated with branch. More... | |
InstSeqNum | newStreamSeqNum |
Sequence number of new stream/prediction to be adopted. More... | |
InstSeqNum | newPredictionSeqNum |
TheISA::PCState | target |
Starting PC of that stream. More... | |
MinorDynInstPtr | inst |
Instruction which caused this branch. More... | |
Forward data betwen Execute and Fetch1 carrying change-of-address/stream information.
Definition at line 64 of file pipe_data.hh.
Enumerator | |
---|---|
NoBranch | |
CorrectlyPredictedBranch | |
UnpredictedBranch | |
BranchPrediction | |
BadlyPredictedBranchTarget | |
BadlyPredictedBranch | |
SuspendThread | |
Interrupt | |
HaltFetch |
Definition at line 67 of file pipe_data.hh.
|
inline |
Definition at line 127 of file pipe_data.hh.
Referenced by bubble().
|
inline |
Definition at line 133 of file pipe_data.hh.
|
inlinestatic |
BubbleIF interface.
Definition at line 149 of file pipe_data.hh.
References BranchData().
Referenced by Minor::Execute::evaluate().
|
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 111 of file pipe_data.cc.
References BadlyPredictedBranch, BadlyPredictedBranchTarget, BranchPrediction, CorrectlyPredictedBranch, HaltFetch, Interrupt, NoBranch, SuspendThread, and UnpredictedBranch.
|
inline |
As static isBranch but on this branch data.
Definition at line 156 of file pipe_data.hh.
References isBranch(), and reason.
Referenced by isBranch().
|
inline |
Definition at line 150 of file pipe_data.hh.
References NoBranch, and reason.
Referenced by Minor::Execute::commitInst(), Minor::Fetch2::evaluate(), Minor::Execute::evaluate(), Minor::Fetch1::evaluate(), and reportData().
|
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 83 of file pipe_data.cc.
References BadlyPredictedBranch, BadlyPredictedBranchTarget, BranchPrediction, CorrectlyPredictedBranch, HaltFetch, Interrupt, NoBranch, SuspendThread, and UnpredictedBranch.
Referenced by Minor::Execute::commit(), Minor::Fetch2::evaluate(), and Minor::Fetch1::evaluate().
|
inline |
As static isStreamChange but on this branch data.
Definition at line 153 of file pipe_data.hh.
References isStreamChange(), and reason.
Referenced by isStreamChange(), and Minor::Execute::updateBranchData().
void Minor::BranchData::reportData | ( | std::ostream & | os | ) | const |
ReportIF interface.
Definition at line 139 of file pipe_data.cc.
References inst, isBubble(), newPredictionSeqNum, newStreamSeqNum, reason, and target.
MinorDynInstPtr Minor::BranchData::inst |
Instruction which caused this branch.
Definition at line 124 of file pipe_data.hh.
Referenced by Minor::operator<<(), reportData(), and Minor::Fetch2::updateBranchPrediction().
InstSeqNum Minor::BranchData::newPredictionSeqNum |
Definition at line 118 of file pipe_data.hh.
Referenced by Minor::operator<<(), reportData(), and Minor::Fetch1::updateExpectedSeqNums().
InstSeqNum Minor::BranchData::newStreamSeqNum |
Sequence number of new stream/prediction to be adopted.
Definition at line 117 of file pipe_data.hh.
Referenced by Minor::Fetch1::evaluate(), Minor::operator<<(), reportData(), and Minor::Fetch1::updateExpectedSeqNums().
Reason Minor::BranchData::reason |
Explanation for this branch.
Definition at line 111 of file pipe_data.hh.
Referenced by Minor::Fetch1::changeStream(), isBranch(), isBubble(), isStreamChange(), Minor::operator<<(), reportData(), and Minor::Fetch2::updateBranchPrediction().
TheISA::PCState Minor::BranchData::target |
Starting PC of that stream.
Definition at line 121 of file pipe_data.hh.
Referenced by Minor::Fetch1::changeStream(), Minor::operator<<(), Minor::Fetch2::predictBranch(), reportData(), and Minor::Fetch2::updateBranchPrediction().
ThreadID Minor::BranchData::threadId |
ThreadID associated with branch.
Definition at line 114 of file pipe_data.hh.
Referenced by Minor::Fetch1::changeStream(), Minor::Fetch2::evaluate(), Minor::Fetch1::evaluate(), and Minor::Fetch1::updateExpectedSeqNums().