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

A functional unit configured from a MinorFU object. More...

#include <func_unit.hh>

Inheritance diagram for gem5::minor::FUPipeline:
gem5::minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits > gem5::FuncUnit gem5::minor::MinorBuffer< ElemType, ReportTraits > gem5::Named gem5::TimeBuffer< ElemType >

Public Member Functions

 FUPipeline (const std::string &name, const MinorFU &description_, ClockedObject &timeSource_)
 
Cycles cyclesBeforeInsert ()
 How many cycles must from curCycle before insertion into the pipeline is allowed. More...
 
bool canInsert () const
 Can an instruction be inserted now? More...
 
MinorFUTimingfindTiming (const StaticInstPtr &inst)
 Find the extra timing information for this instruction. More...
 
void advance ()
 Step the pipeline. More...
 
- Public Member Functions inherited from gem5::minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >
 SelfStallingPipeline (const std::string &name, const std::string &data_name, unsigned depth)
 
void push (ElemType &elem)
 Write an element to the back of the pipeline. More...
 
ElemType & front ()
 Peek at the end element of the pipe. More...
 
const ElemType & front () const
 
bool alreadyPushed ()
 Have we already pushed onto this pipe without advancing. More...
 
bool isPopable ()
 There's data (not a bubble) at the end of the pipe. More...
 
void advance ()
 Try to advance the pipeline. More...
 
- Public Member Functions inherited from gem5::minor::MinorBuffer< ElemType, ReportTraits >
 MinorBuffer (const std::string &name, const std::string &data_name, int num_past, int num_future, int report_left=-1, int report_right=-1)
 
bool empty () const
 
void minorTrace () const
 Report buffer states from 'slot' 'from' to 'to'. More...
 
- Public Member Functions inherited from gem5::Named
 Named (const std::string &name_)
 
virtual ~Named ()=default
 
virtual std::string name () const
 
- Public Member Functions inherited from gem5::TimeBuffer< ElemType >
 TimeBuffer (int p, int f)
 
 TimeBuffer ()
 
 ~TimeBuffer ()
 
void id (int id)
 
int id ()
 
void advance ()
 
ElemType * access (int idx)
 
ElemType & operator[] (int idx)
 
const ElemType & operator[] (int idx) const
 
wire getWire (int idx)
 
wire zero ()
 
unsigned getSize ()
 
- Public Member Functions inherited from gem5::FuncUnit
 FuncUnit ()
 
 FuncUnit (const FuncUnit &fu)
 
void addCapability (OpClass cap, unsigned oplat, bool pipelined)
 
bool provides (OpClass capability)
 
std::bitset< Num_OpClassescapabilities ()
 
unsigned & opLatency (OpClass capability)
 
bool isPipelined (OpClass capability)
 

Public Attributes

const MinorFUdescription
 Functional unit description that this pipeline implements. More...
 
ClockedObjecttimeSource
 An FUPipeline needs access to curCycle, use this timing source. More...
 
std::bitset< Num_OpClassescapabilityList
 Set of operation classes supported by this FU. More...
 
std::vector< bool > cantForwardFromFUIndices
 FUs which this pipeline can't receive a forwarded (i.e. More...
 
Cycles nextInsertCycle
 When can a new instruction be inserted into the pipeline? This is an absolute cycle time unless it is 0 in which case the an instruction can be pushed straightaway. More...
 
- Public Attributes inherited from gem5::minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >
bool stalled
 If true, advance will not advance the pipeline. More...
 
unsigned int occupancy
 The number of slots with non-bubbles in them. More...
 
- Public Attributes inherited from gem5::FuncUnit
std::string name
 

Additional Inherited Members

- Protected Member Functions inherited from gem5::TimeBuffer< ElemType >
void valid (int idx) const
 
int calculateVectorIndex (int idx) const
 
- Protected Attributes inherited from gem5::minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >
TimeBuffer< ElemType >::wire pushWire
 Wire at the input end of the pipeline (for convenience) More...
 
TimeBuffer< ElemType >::wire popWire
 Wire at the output end of the pipeline (for convenience) More...
 
- Protected Attributes inherited from gem5::minor::MinorBuffer< ElemType, ReportTraits >
int reportLeft
 The range of elements that should appear in trace lines. More...
 
int reportRight
 
std::string dataName
 Name to use for the data in a MinorTrace line. More...
 
- Protected Attributes inherited from gem5::TimeBuffer< ElemType >
int past
 
int future
 
unsigned size
 
int _id
 
char * data
 
std::vector< char * > index
 
unsigned base
 

Detailed Description

A functional unit configured from a MinorFU object.

Definition at line 233 of file func_unit.hh.

Constructor & Destructor Documentation

◆ FUPipeline()

gem5::minor::FUPipeline::FUPipeline ( const std::string &  name,
const MinorFU description_,
ClockedObject timeSource_ 
)

Member Function Documentation

◆ advance()

void gem5::minor::FUPipeline::advance ( )

◆ canInsert()

bool gem5::minor::FUPipeline::canInsert ( ) const

Can an instruction be inserted now?

Definition at line 153 of file func_unit.cc.

References gem5::Clocked::curCycle(), nextInsertCycle, and timeSource.

◆ cyclesBeforeInsert()

Cycles gem5::minor::FUPipeline::cyclesBeforeInsert ( )

How many cycles must from curCycle before insertion into the pipeline is allowed.

Definition at line 144 of file func_unit.cc.

References gem5::Clocked::curCycle(), nextInsertCycle, and timeSource.

◆ findTiming()

MinorFUTiming * gem5::minor::FUPipeline::findTiming ( const StaticInstPtr inst)

Member Data Documentation

◆ cantForwardFromFUIndices

std::vector<bool> gem5::minor::FUPipeline::cantForwardFromFUIndices

FUs which this pipeline can't receive a forwarded (i.e.

relative latency != 0) result from

Definition at line 247 of file func_unit.hh.

Referenced by FUPipeline().

◆ capabilityList

std::bitset<Num_OpClasses> gem5::minor::FUPipeline::capabilityList

Set of operation classes supported by this FU.

Definition at line 243 of file func_unit.hh.

◆ description

const MinorFU& gem5::minor::FUPipeline::description

Functional unit description that this pipeline implements.

Definition at line 237 of file func_unit.hh.

Referenced by advance(), findTiming(), and FUPipeline().

◆ nextInsertCycle

Cycles gem5::minor::FUPipeline::nextInsertCycle

When can a new instruction be inserted into the pipeline? This is an absolute cycle time unless it is 0 in which case the an instruction can be pushed straightaway.

Definition at line 253 of file func_unit.hh.

Referenced by advance(), canInsert(), and cyclesBeforeInsert().

◆ timeSource

ClockedObject& gem5::minor::FUPipeline::timeSource

An FUPipeline needs access to curCycle, use this timing source.

Definition at line 240 of file func_unit.hh.

Referenced by advance(), canInsert(), and cyclesBeforeInsert().


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