gem5  v22.1.0.0
Classes | Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
gem5::minor::Decode Class Reference

#include <decode.hh>

Inheritance diagram for gem5::minor::Decode:
gem5::Named

Classes

struct  DecodeThreadInfo
 Data members after this line are cycle-to-cycle state. More...
 

Public Member Functions

 Decode (const std::string &name, MinorCPU &cpu_, const BaseMinorCPUParams &params, Latch< ForwardInstData >::Output inp_, Latch< ForwardInstData >::Input out_, std::vector< InputBuffer< ForwardInstData >> &next_stage_input_buffer)
 
void evaluate ()
 Pass on input/buffer data to the output if you can. More...
 
void minorTrace () const
 
bool isDrained ()
 Is this stage drained? For Decoed, draining is initiated by Execute halting Fetch1 causing Fetch2 to naturally drain into Decode and on to Execute which is responsible for actually killing instructions. More...
 
- Public Member Functions inherited from gem5::Named
 Named (const std::string &name_)
 
virtual ~Named ()=default
 
virtual std::string name () const
 

Public Attributes

std::vector< InputBuffer< ForwardInstData > > inputBuffer
 

Protected Member Functions

const ForwardInstDatagetInput (ThreadID tid)
 Get a piece of data to work on, or 0 if there is no data. More...
 
void popInput (ThreadID tid)
 Pop an element off the input buffer, if there are any. More...
 
ThreadID getScheduledThread ()
 Use the current threading policy to determine the next thread to decode from. More...
 

Protected Attributes

MinorCPUcpu
 Pointer back to the containing CPU. More...
 
Latch< ForwardInstData >::Output inp
 Input port carrying macro instructions from Fetch2. More...
 
Latch< ForwardInstData >::Input out
 Output port carrying micro-op decomposed instructions to Execute. More...
 
std::vector< InputBuffer< ForwardInstData > > & nextStageReserve
 Interface to reserve space in the next stage. More...
 
unsigned int outputWidth
 Width of output of this stage/input of next in instructions. More...
 
bool processMoreThanOneInput
 If true, more than one input word can be processed each cycle if there is room in the output to contain its processed data. More...
 
std::vector< DecodeThreadInfodecodeInfo
 
ThreadID threadPriority
 

Detailed Description

Definition at line 67 of file decode.hh.

Constructor & Destructor Documentation

◆ Decode()

gem5::minor::Decode::Decode ( const std::string &  name,
MinorCPU cpu_,
const BaseMinorCPUParams &  params,
Latch< ForwardInstData >::Output  inp_,
Latch< ForwardInstData >::Input  out_,
std::vector< InputBuffer< ForwardInstData >> &  next_stage_input_buffer 
)

Definition at line 52 of file decode.cc.

References fatal, inputBuffer, gem5::Named::name(), outputWidth, and sc_dt::to_string().

Member Function Documentation

◆ evaluate()

void gem5::minor::Decode::evaluate ( )

◆ getInput()

const ForwardInstData * gem5::minor::Decode::getInput ( ThreadID  tid)
protected

Get a piece of data to work on, or 0 if there is no data.

Definition at line 86 of file decode.cc.

References inputBuffer, and gem5::minor::ForwardInstData::isBubble().

Referenced by evaluate(), and getScheduledThread().

◆ getScheduledThread()

ThreadID gem5::minor::Decode::getScheduledThread ( )
inlineprotected

Use the current threading policy to determine the next thread to decode from.

Definition at line 301 of file decode.cc.

References cpu, decodeInfo, getInput(), gem5::InvalidThreadID, panic, gem5::auxv::Random, gem5::MinorCPU::randomPriority(), gem5::MinorCPU::roundRobinPriority(), gem5::MinorCPU::threadPolicy, and threadPriority.

Referenced by evaluate().

◆ isDrained()

bool gem5::minor::Decode::isDrained ( )

Is this stage drained? For Decoed, draining is initiated by Execute halting Fetch1 causing Fetch2 to naturally drain into Decode and on to Execute which is responsible for actually killing instructions.

Definition at line 331 of file decode.cc.

References inp, and inputBuffer.

Referenced by gem5::minor::Pipeline::isDrained().

◆ minorTrace()

void gem5::minor::Decode::minorTrace ( ) const

Definition at line 342 of file decode.cc.

References data, decodeInfo, inputBuffer, gem5::minor::minorTrace(), and out.

Referenced by gem5::minor::Pipeline::minorTrace().

◆ popInput()

void gem5::minor::Decode::popInput ( ThreadID  tid)
protected

Pop an element off the input buffer, if there are any.

Definition at line 99 of file decode.cc.

References decodeInfo, and inputBuffer.

Referenced by evaluate().

Member Data Documentation

◆ cpu

MinorCPU& gem5::minor::Decode::cpu
protected

Pointer back to the containing CPU.

Definition at line 71 of file decode.hh.

Referenced by evaluate(), and getScheduledThread().

◆ decodeInfo

std::vector<DecodeThreadInfo> gem5::minor::Decode::decodeInfo
protected

Definition at line 128 of file decode.hh.

Referenced by evaluate(), getScheduledThread(), minorTrace(), and popInput().

◆ inp

Latch<ForwardInstData>::Output gem5::minor::Decode::inp
protected

Input port carrying macro instructions from Fetch2.

Definition at line 74 of file decode.hh.

Referenced by evaluate(), and isDrained().

◆ inputBuffer

std::vector<InputBuffer<ForwardInstData> > gem5::minor::Decode::inputBuffer

Definition at line 90 of file decode.hh.

Referenced by Decode(), evaluate(), getInput(), isDrained(), minorTrace(), and popInput().

◆ nextStageReserve

std::vector<InputBuffer<ForwardInstData> >& gem5::minor::Decode::nextStageReserve
protected

Interface to reserve space in the next stage.

Definition at line 79 of file decode.hh.

Referenced by evaluate().

◆ out

Latch<ForwardInstData>::Input gem5::minor::Decode::out
protected

Output port carrying micro-op decomposed instructions to Execute.

Definition at line 76 of file decode.hh.

Referenced by evaluate(), and minorTrace().

◆ outputWidth

unsigned int gem5::minor::Decode::outputWidth
protected

Width of output of this stage/input of next in instructions.

Definition at line 82 of file decode.hh.

Referenced by Decode(), and evaluate().

◆ processMoreThanOneInput

bool gem5::minor::Decode::processMoreThanOneInput
protected

If true, more than one input word can be processed each cycle if there is room in the output to contain its processed data.

Definition at line 86 of file decode.hh.

Referenced by evaluate().

◆ threadPriority

ThreadID gem5::minor::Decode::threadPriority
protected

Definition at line 129 of file decode.hh.

Referenced by getScheduledThread().


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

Generated on Wed Dec 21 2022 10:24:16 for gem5 by doxygen 1.9.1