Go to the documentation of this file.
44 #ifndef __CPU_MINOR_FUNC_UNIT_HH__
45 #define __CPU_MINOR_FUNC_UNIT_HH__
57 #include "params/MinorFU.hh"
58 #include "params/MinorFUPool.hh"
59 #include "params/MinorOpClass.hh"
60 #include "params/MinorOpClassSet.hh"
229 typedef SelfStallingPipeline<QueuedInst,
MinorOpClassSet * opClasses
Extra opClasses check (after the FU one)
A collection of MinorFUs.
Cycles extraAssumedLat
Extra delay that results should show in the scoreboard after leaving the pipeline.
FUPipeline(const std::string &name, const MinorFU &description_, ClockedObject &timeSource_)
void advance()
Step the pipeline.
Container class to box instructions in the FUs to make those queues have correct bubble behaviour whe...
std::string description
Textual description of the decode's purpose.
Extra timing capability to allow individual ops to have their source register dependency latencies tw...
MinorOpClass(const MinorOpClassParams ¶ms)
Cycles issueLat
Delay after issuing an operation before the next operation can be issued.
ClockedObject & timeSource
An FUPipeline needs access to curCycle, use this timing source.
std::vector< unsigned int > cantForwardFromFUIndices
FUs which this pipeline can't receive a forwarded (i.e.
bool provides(OpClass op_class)
Does this set support the given op class.
std::vector< MinorOpClass * > opClasses
Cycles nextInsertCycle
When can a new instruction be inserted into the pipeline? This is an absolute cycle time unless it is...
Cycles is a wrapper class for representing cycle counts, i.e.
SelfStallingPipeline< QueuedInst, ReportTraitsAdaptor< QueuedInst > > FUPipelineBase
Functional units have pipelines which stall when an inst gets to their ends allowing Execute::commit ...
...ReportTraits are trait classes with the same functionality as ReportIF, but with elements explicit...
void reportData(std::ostream &os) const
Report and bubble interfaces.
Wrapper for a matchable set of op classes.
const Params & params() const
A functional unit that can execute any of opClasses operations with a single op(eration)Lat(ency) and...
Boxing for MinorOpClass to get around a build problem with C++11 but also allow for future additions ...
static QueuedInst bubble()
static MinorDynInstPtr bubble()
There is a single bubble inst.
std::bitset< Num_OpClasses > capabilityList
Set of operation classes supported by this FU.
Abstract superclass for simulation objects.
bool provides(OpClass op_class)
Does the extra decode in this object support the given op class.
uint64_t mask
Mask off the ExtMachInst of an instruction before comparing with match.
TimingExpr * extraCommitLatExpr
GEM5_DEPRECATED_NAMESPACE(GuestABI, guest_abi)
std::vector< MinorFU * > funcUnits
The ClockedObject class extends the SimObject with a clock and accessor functions to relate ticks to ...
MinorFUTiming(const MinorFUTimingParams ¶ms)
A functional unit configured from a MinorFU object.
Cycles opLat
Delay from issuing the operation, to it reaching the end of the associated pipeline.
MinorFUPool(const MinorFUPoolParams ¶ms)
const MinorFU & description
Functional unit description that this pipeline implements.
MinorOpClassSet(const MinorOpClassSetParams ¶ms)
bool canInsert() const
Can an instruction be inserted now?
std::vector< Cycles > srcRegsRelativeLats
Cycle offsets from the scoreboard delivery times of register values for each of this instruction's so...
std::vector< bool > cantForwardFromFUIndices
FUs which this pipeline can't receive a forwarded (i.e.
Cycles extraCommitLat
Extra latency that the instruction should spend at the end of the pipeline.
MinorFU(const MinorFUParams ¶ms)
Cycles cyclesBeforeInsert()
How many cycles must from curCycle before insertion into the pipeline is allowed.
std::vector< bool > capabilityList
Convenience packing of opClasses into a bit vector for easier testing.
bool suppress
If true, instructions matching this mask/match should not be issued in this FU.
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
MinorOpClassSet * opClasses
A pipeline simulating class that will stall (not advance when advance() is called) if a non-bubble va...
std::vector< MinorFUTiming * > timings
Extra timing info to give timings to individual ops.
QueuedInst(MinorDynInstPtr inst_=MinorDynInst::bubble())
MinorFUTiming * findTiming(const StaticInstPtr &inst)
Find the extra timing information for this instruction.
Generated on Tue Sep 21 2021 12:25:00 for gem5 by doxygen 1.8.17