gem5 v25.0.0.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?
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< 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.
QueuedInstfront ()
 Peek at the end element of the pipe.
const QueuedInstfront () 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_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?
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 Sat Oct 18 2025 08:06:59 for gem5 by doxygen 1.14.0