gem5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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 64 of file pipe_data.hh.

Member Enumeration Documentation

Enumerator
NoBranch 
CorrectlyPredictedBranch 
UnpredictedBranch 
BranchPrediction 
BadlyPredictedBranchTarget 
BadlyPredictedBranch 
SuspendThread 
Interrupt 
HaltFetch 

Definition at line 67 of file pipe_data.hh.

Constructor & Destructor Documentation

Minor::BranchData::BranchData ( )
inline

Definition at line 127 of file pipe_data.hh.

Referenced by bubble().

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

Member Function Documentation

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

BubbleIF interface.

Definition at line 149 of file pipe_data.hh.

References BranchData().

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

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

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

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

bool Minor::BranchData::isBubble ( ) const
inline
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 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().

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

Member Data Documentation

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
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
TheISA::PCState Minor::BranchData::target
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().


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

Generated on Fri Jun 9 2017 13:04:33 for gem5 by doxygen 1.8.6