gem5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Public Attributes | List of all members
Minor::FUPipeline Class Reference

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

#include <func_unit.hh>

Inheritance diagram for Minor::FUPipeline:
Minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits > FuncUnit Minor::MinorBuffer< ElemType, ReportTraits > Named 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 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 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 Named
 Named (const std::string &name_)
 
const std::string & name () const
 
- Public Member Functions inherited from 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 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 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 FuncUnit
std::string name
 

Additional Inherited Members

- Protected Member Functions inherited from TimeBuffer< ElemType >
void valid (int idx) const
 
int calculateVectorIndex (int idx) const
 
- Protected Attributes inherited from 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 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 Named
const std::string _name
 
- Protected Attributes inherited from 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 224 of file func_unit.hh.

Constructor & Destructor Documentation

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

Member Function Documentation

void Minor::FUPipeline::advance ( )
bool Minor::FUPipeline::canInsert ( ) const

Can an instruction be inserted now?

Definition at line 179 of file func_unit.cc.

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

Referenced by Minor::Execute::issue().

Cycles Minor::FUPipeline::cyclesBeforeInsert ( )

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

Definition at line 170 of file func_unit.cc.

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

Referenced by Minor::Execute::issue().

MinorFUTiming * Minor::FUPipeline::findTiming ( const StaticInstPtr inst)

Find the extra timing information for this instruction.

Returns NULL if no decode info. is found

Definition at line 203 of file func_unit.cc.

References MinorFUTiming::description, description, StaticInst::disassemble(), DPRINTFS, ArmISA::i, StaticInst::machInst, MinorFUTiming::mask, MinorFUTiming::match, Named::name(), StaticInst::opClass(), MinorFUTiming::provides(), and MinorFU::timings.

Referenced by Minor::Execute::issue().

Member Data Documentation

std::vector<bool> Minor::FUPipeline::cantForwardFromFUIndices

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

relative latency != 0) result from

Definition at line 238 of file func_unit.hh.

Referenced by FUPipeline(), and Minor::Execute::issue().

std::bitset<Num_OpClasses> Minor::FUPipeline::capabilityList

Set of operation classes supported by this FU.

Definition at line 234 of file func_unit.hh.

const MinorFU& Minor::FUPipeline::description

Functional unit description that this pipeline implements.

Definition at line 228 of file func_unit.hh.

Referenced by advance(), findTiming(), FUPipeline(), and Minor::Execute::issue().

Cycles 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 244 of file func_unit.hh.

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

ClockedObject& Minor::FUPipeline::timeSource

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

Definition at line 231 of file func_unit.hh.

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


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

Generated on Fri Jun 9 2017 13:04:33 for gem5 by doxygen 1.8.6