gem5 [DEVELOP-FOR-25.1]
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< QueuedInst, ReportTraitsAdaptor< QueuedInst > > gem5::FuncUnit gem5::minor::MinorBuffer< ElemType, ReportTraits, BubbleTraits > 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?
MinorFUTiming * findTiming (const StaticInstPtr &inst)
 Find the extra timing information for this instruction.
void advance ()
 Step the pipeline.
Public Member Functions inherited from gem5::minor::SelfStallingPipeline< QueuedInst, ReportTraitsAdaptor< QueuedInst > >
 SelfStallingPipeline (const std::string &name, const std::string &data_name, unsigned depth)
void push (QueuedInst &elem)
 Write an element to the back of the pipeline.
QueuedInst & front ()
 Peek at the end element of the pipe.
const QueuedInst & 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, BubbleTraits >
 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 (std::string_view name_)
virtual ~Named ()=default
virtual std::string name () const
Public Member Functions inherited from gem5::TimeBuffer< ElemType >
 TimeBuffer (int p, int f)
 ~TimeBuffer ()
void id (int id)
void advance ()
ElemType * access (int idx)
ElemType & operator[] (int idx)
wire getWire (int idx)
wire zero ()
unsigned getSize ()
int getPast () const
int getFuture () const
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_OpClasses > capabilities ()
unsigned & opLatency (OpClass capability)
bool isPipelined (OpClass capability)

Public Attributes

const MinorFU & description
 Functional unit description that this pipeline implements.
ClockedObject & timeSource
 An FUPipeline needs access to curCycle, use this timing source.
std::bitset< Num_OpClasses > capabilityList
 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?
Public Attributes inherited from gem5::minor::SelfStallingPipeline< QueuedInst, ReportTraitsAdaptor< QueuedInst > >
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< QueuedInst, ReportTraitsAdaptor< QueuedInst > >
TimeBuffer< QueuedInst >::wire pushWire
 Wire at the input end of the pipeline (for convenience)
TimeBuffer< QueuedInst >::wire popWire
 Wire at the output end of the pipeline (for convenience)
Protected Attributes inherited from gem5::minor::MinorBuffer< ElemType, ReportTraits, BubbleTraits >
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 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 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(), cyclesBeforeInsert(), and FUPipeline().

◆ 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(), cyclesBeforeInsert(), and FUPipeline().


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

Generated on Mon Oct 27 2025 04:13:20 for gem5 by doxygen 1.14.0