gem5  v21.1.0.2
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
gem5::minor::BranchData Class Reference

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...
 

Detailed Description

Forward data betwen Execute and Fetch1 carrying change-of-address/stream information.

Definition at line 66 of file pipe_data.hh.

Member Enumeration Documentation

◆ Reason

Enumerator
NoBranch 
CorrectlyPredictedBranch 
UnpredictedBranch 
BranchPrediction 
BadlyPredictedBranchTarget 
BadlyPredictedBranch 
SuspendThread 
Interrupt 
HaltFetch 

Definition at line 69 of file pipe_data.hh.

Constructor & Destructor Documentation

◆ BranchData() [1/2]

gem5::minor::BranchData::BranchData ( )
inline

Definition at line 129 of file pipe_data.hh.

Referenced by bubble().

◆ BranchData() [2/2]

gem5::minor::BranchData::BranchData ( Reason  reason_,
ThreadID  thread_id,
InstSeqNum  new_stream_seq_num,
InstSeqNum  new_prediction_seq_num,
TheISA::PCState  target,
MinorDynInstPtr  inst_ 
)
inline

Definition at line 135 of file pipe_data.hh.

Member Function Documentation

◆ bubble()

static BranchData gem5::minor::BranchData::bubble ( )
inlinestatic

BubbleIF interface.

Definition at line 151 of file pipe_data.hh.

References BranchData().

Referenced by gem5::minor::Execute::evaluate().

◆ isBranch() [1/2]

bool gem5::minor::BranchData::isBranch ( ) const
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().

◆ isBranch() [2/2]

bool gem5::minor::BranchData::isBranch ( const BranchData::Reason  reason)
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.

◆ isBubble()

bool gem5::minor::BranchData::isBubble ( ) const
inline

◆ isStreamChange() [1/2]

bool gem5::minor::BranchData::isStreamChange ( ) const
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().

◆ isStreamChange() [2/2]

bool gem5::minor::BranchData::isStreamChange ( const BranchData::Reason  reason)
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().

◆ reportData()

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.

Member Data Documentation

◆ inst

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().

◆ newPredictionSeqNum

InstSeqNum gem5::minor::BranchData::newPredictionSeqNum

◆ newStreamSeqNum

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

Reason gem5::minor::BranchData::reason

◆ target

TheISA::PCState gem5::minor::BranchData::target

◆ threadId

ThreadID gem5::minor::BranchData::threadId

The documentation for this class was generated from the following files:

Generated on Tue Sep 21 2021 12:31:29 for gem5 by doxygen 1.8.17