gem5 v24.0.0.0
Loading...
Searching...
No Matches
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.
 
bool canInsert () const
 Can an instruction be inserted now?
 
MinorFUTimingfindTiming (const StaticInstPtr &inst)
 Find the extra timing information for this instruction.
 
void advance ()
 Step the pipeline.
 
- 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.
 
ElemType & front ()
 Peek at the end element of the pipe.
 
const ElemType & front () const
 
bool alreadyPushed ()
 Have we already pushed onto this pipe without advancing.
 
bool isPopable ()
 There's data (not a bubble) at the end of the pipe.
 
void advance ()
 Try to advance the pipeline.
 
- 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'.
 
- 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.
 
ClockedObjecttimeSource
 An FUPipeline needs access to curCycle, use this timing source.
 
std::bitset< Num_OpClassescapabilityList
 Set of operation classes supported by this FU.
 
std::vector< bool > cantForwardFromFUIndices
 FUs which this pipeline can't receive a forwarded (i.e.
 
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.
 
- Public Attributes inherited from gem5::minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >
bool stalled
 If true, advance will not advance the pipeline.
 
unsigned int occupancy
 The number of slots with non-bubbles in them.
 
- 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)
 
TimeBuffer< ElemType >::wire popWire
 Wire at the output end of the pipeline (for convenience)
 
- Protected Attributes inherited from gem5::minor::MinorBuffer< ElemType, ReportTraits >
int reportLeft
 The range of elements that should appear in trace lines.
 
int reportRight
 
std::string dataName
 Name to use for the data in a MinorTrace line.
 
- 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 232 of file func_unit.hh.

Constructor & Destructor Documentation

◆ FUPipeline()

Member Function Documentation

◆ advance()

◆ canInsert()

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

Can an instruction be inserted now?

Definition at line 152 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 143 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 246 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 242 of file func_unit.hh.

◆ description

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

Functional unit description that this pipeline implements.

Definition at line 236 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 252 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 239 of file func_unit.hh.

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


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

Generated on Tue Jun 18 2024 16:24:20 for gem5 by doxygen 1.11.0