gem5 v24.0.0.0
|
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. | |
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< 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_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? 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 |
A functional unit configured from a MinorFU object.
Definition at line 232 of file func_unit.hh.
gem5::minor::FUPipeline::FUPipeline | ( | const std::string & | name, |
const MinorFU & | description_, | ||
ClockedObject & | timeSource_ ) |
Definition at line 86 of file func_unit.cc.
References gem5::FuncUnit::addCapability(), cantForwardFromFUIndices, gem5::MinorFU::cantForwardFromFUIndices, description, DPRINTFS, gem5::ArmISA::i, gem5::MinorFUTiming::mask, gem5::MinorFUTiming::match, gem5::MinorFU::opClasses, gem5::MinorOpClassSet::opClasses, gem5::MinorFU::opLat, gem5::MinorFUTiming::srcRegsRelativeLats, and gem5::MinorFU::timings.
void gem5::minor::FUPipeline::advance | ( | ) |
Step the pipeline.
Allow multiple steps?
Definition at line 158 of file func_unit.cc.
References gem5::minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >::advance(), gem5::minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >::alreadyPushed(), gem5::Clocked::curCycle(), description, gem5::MinorFU::issueLat, nextInsertCycle, gem5::minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >::stalled, and timeSource.
Referenced by gem5::minor::Execute::evaluate().
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.
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.
MinorFUTiming * gem5::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 176 of file func_unit.cc.
References description, gem5::MinorFUTiming::description, gem5::StaticInst::disassemble(), DPRINTFS, gem5::StaticInst::getEMI(), gem5::ArmISA::i, gem5::MinorFUTiming::mask, gem5::MinorFUTiming::match, gem5::StaticInst::opClass(), gem5::MinorFUTiming::provides(), and gem5::MinorFU::timings.
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().
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.
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().
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().
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().