gem5
|
A functional unit configured from a MinorFU object. More...
#include <func_unit.hh>
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... | |
MinorFUTiming * | findTiming (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_OpClasses > | capabilities () |
unsigned & | opLatency (OpClass capability) |
bool | isPipelined (OpClass capability) |
Public Attributes | |
const MinorFU & | description |
Functional unit description that this pipeline implements. More... | |
ClockedObject & | timeSource |
An FUPipeline needs access to curCycle, use this timing source. More... | |
std::bitset< Num_OpClasses > | capabilityList |
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 |
A functional unit configured from a MinorFU object.
Definition at line 224 of file func_unit.hh.
Minor::FUPipeline::FUPipeline | ( | const std::string & | name, |
const MinorFU & | description_, | ||
ClockedObject & | timeSource_ | ||
) |
Definition at line 113 of file func_unit.cc.
References FuncUnit::addCapability(), MinorFU::cantForwardFromFUIndices, cantForwardFromFUIndices, description, DPRINTFS, DTRACE, ArmISA::i, ArmISA::j, MinorFUTiming::mask, MinorFUTiming::match, MinorOpClassSet::opClasses, MinorFU::opClasses, MinorFU::opLat, MinorFUTiming::srcRegsRelativeLats, and MinorFU::timings.
void Minor::FUPipeline::advance | ( | ) |
Step the pipeline.
Allow multiple steps?
Definition at line 185 of file func_unit.cc.
References Minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >::advance(), Minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >::alreadyPushed(), Clocked::curCycle(), description, MinorFU::issueLat, nextInsertCycle, Minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >::stalled, and timeSource.
Referenced by Minor::Execute::evaluate().
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().
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().