gem5  v20.1.0.0
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
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 62 of file pipe_data.hh.

Member Enumeration Documentation

◆ Reason

Enumerator
NoBranch 
CorrectlyPredictedBranch 
UnpredictedBranch 
BranchPrediction 
BadlyPredictedBranchTarget 
BadlyPredictedBranch 
SuspendThread 
Interrupt 
HaltFetch 

Definition at line 65 of file pipe_data.hh.

Constructor & Destructor Documentation

◆ BranchData() [1/2]

Minor::BranchData::BranchData ( )
inline

Definition at line 125 of file pipe_data.hh.

Referenced by bubble().

◆ BranchData() [2/2]

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 131 of file pipe_data.hh.

Member Function Documentation

◆ bubble()

static BranchData Minor::BranchData::bubble ( )
inlinestatic

BubbleIF interface.

Definition at line 147 of file pipe_data.hh.

References BranchData().

Referenced by Minor::Execute::evaluate().

◆ isBranch() [1/2]

bool Minor::BranchData::isBranch ( ) const
inline

As static isBranch but on this branch data.

Definition at line 154 of file pipe_data.hh.

References isBranch(), and reason.

Referenced by isBranch().

◆ isBranch() [2/2]

bool 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 109 of file pipe_data.cc.

References BadlyPredictedBranch, BadlyPredictedBranchTarget, BranchPrediction, CorrectlyPredictedBranch, HaltFetch, Interrupt, NoBranch, reason, SuspendThread, and UnpredictedBranch.

◆ isBubble()

bool Minor::BranchData::isBubble ( ) const
inline

◆ isStreamChange() [1/2]

bool Minor::BranchData::isStreamChange ( ) const
inline

As static isStreamChange but on this branch data.

Definition at line 151 of file pipe_data.hh.

References isStreamChange(), and reason.

Referenced by isStreamChange(), and Minor::Execute::updateBranchData().

◆ isStreamChange() [2/2]

bool 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 81 of file pipe_data.cc.

References BadlyPredictedBranch, BadlyPredictedBranchTarget, BranchPrediction, CorrectlyPredictedBranch, HaltFetch, Interrupt, NoBranch, reason, SuspendThread, and UnpredictedBranch.

Referenced by Minor::Execute::commit(), Minor::Fetch2::evaluate(), and Minor::Fetch1::evaluate().

◆ reportData()

void Minor::BranchData::reportData ( std::ostream &  os) const

ReportIF interface.

Definition at line 137 of file pipe_data.cc.

References inst, isBubble(), newPredictionSeqNum, newStreamSeqNum, X86ISA::os, reason, and target.

Member Data Documentation

◆ inst

MinorDynInstPtr Minor::BranchData::inst

Instruction which caused this branch.

Definition at line 122 of file pipe_data.hh.

Referenced by Minor::operator<<(), reportData(), and Minor::Fetch2::updateBranchPrediction().

◆ newPredictionSeqNum

InstSeqNum Minor::BranchData::newPredictionSeqNum

◆ newStreamSeqNum

InstSeqNum Minor::BranchData::newStreamSeqNum

Sequence number of new stream/prediction to be adopted.

Definition at line 115 of file pipe_data.hh.

Referenced by Minor::Fetch1::evaluate(), Minor::operator<<(), reportData(), and Minor::Fetch1::updateExpectedSeqNums().

◆ reason

Reason Minor::BranchData::reason

◆ target

TheISA::PCState Minor::BranchData::target

◆ threadId

ThreadID Minor::BranchData::threadId

ThreadID associated with branch.

Definition at line 112 of file pipe_data.hh.

Referenced by Minor::Fetch1::changeStream(), Minor::Fetch2::evaluate(), Minor::Fetch1::evaluate(), and Minor::Fetch1::updateExpectedSeqNums().


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

Generated on Wed Sep 30 2020 14:03:06 for gem5 by doxygen 1.8.17