|
gem5
v21.1.0.2
|
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 66 of file pipe_data.hh.
| Enumerator | |
|---|---|
| NoBranch | |
| CorrectlyPredictedBranch | |
| UnpredictedBranch | |
| BranchPrediction | |
| BadlyPredictedBranchTarget | |
| BadlyPredictedBranch | |
| SuspendThread | |
| Interrupt | |
| HaltFetch | |
Definition at line 69 of file pipe_data.hh.
|
inline |
Definition at line 129 of file pipe_data.hh.
Referenced by bubble().
|
inline |
Definition at line 135 of file pipe_data.hh.
|
inlinestatic |
BubbleIF interface.
Definition at line 151 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 158 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 113 of file pipe_data.cc.
References BadlyPredictedBranch, BadlyPredictedBranchTarget, BranchPrediction, CorrectlyPredictedBranch, HaltFetch, Interrupt, NoBranch, reason, SuspendThread, and UnpredictedBranch.
|
inline |
Definition at line 152 of file pipe_data.hh.
References NoBranch, and reason.
Referenced by gem5::minor::Execute::commitInst(), gem5::minor::Fetch2::evaluate(), gem5::minor::Execute::evaluate(), gem5::minor::Fetch1::evaluate(), and reportData().
|
inline |
As static isStreamChange but on this branch data.
Definition at line 155 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 85 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::Fetch2::evaluate(), and gem5::minor::Fetch1::evaluate().
| void gem5::minor::BranchData::reportData | ( | std::ostream & | os | ) | const |
ReportIF interface.
Definition at line 141 of file pipe_data.cc.
References inst, isBubble(), newPredictionSeqNum, newStreamSeqNum, gem5::X86ISA::os, reason, and target.
| MinorDynInstPtr gem5::minor::BranchData::inst |
Instruction which caused this branch.
Definition at line 126 of file pipe_data.hh.
Referenced by gem5::minor::operator<<(), reportData(), and gem5::minor::Fetch2::updateBranchPrediction().
| InstSeqNum gem5::minor::BranchData::newPredictionSeqNum |
Definition at line 120 of file pipe_data.hh.
Referenced by gem5::minor::operator<<(), reportData(), and gem5::minor::Fetch1::updateExpectedSeqNums().
| InstSeqNum gem5::minor::BranchData::newStreamSeqNum |
Sequence number of new stream/prediction to be adopted.
Definition at line 119 of file pipe_data.hh.
Referenced by gem5::minor::Fetch1::evaluate(), gem5::minor::operator<<(), reportData(), and gem5::minor::Fetch1::updateExpectedSeqNums().
| Reason gem5::minor::BranchData::reason |
Explanation for this branch.
Definition at line 113 of file pipe_data.hh.
Referenced by gem5::minor::Fetch1::changeStream(), isBranch(), isBubble(), isStreamChange(), gem5::minor::operator<<(), reportData(), and gem5::minor::Fetch2::updateBranchPrediction().
| TheISA::PCState gem5::minor::BranchData::target |
Starting PC of that stream.
Definition at line 123 of file pipe_data.hh.
Referenced by gem5::minor::Fetch1::changeStream(), gem5::minor::operator<<(), gem5::minor::Fetch2::predictBranch(), reportData(), and gem5::minor::Fetch2::updateBranchPrediction().
| ThreadID gem5::minor::BranchData::threadId |
ThreadID associated with branch.
Definition at line 116 of file pipe_data.hh.
Referenced by gem5::minor::Fetch1::changeStream(), gem5::minor::Fetch2::evaluate(), gem5::minor::Fetch1::evaluate(), and gem5::minor::Fetch1::updateExpectedSeqNums().