44 #ifndef __CPU_MINOR_FUNC_UNIT_HH__ 45 #define __CPU_MINOR_FUNC_UNIT_HH__ 51 #include "params/MinorFU.hh" 52 #include "params/MinorFUPool.hh" 53 #include "params/MinorOpClass.hh" 54 #include "params/MinorOpClassSet.hh" 67 opClass(params->opClass)
86 bool provides(OpClass op_class) {
return capabilityList[op_class]; }
170 opClasses(params->opClasses),
171 opLat(params->opLat),
172 issueLat(params->issueLat),
173 cantForwardFromFUIndices(params->cantForwardFromFUIndices),
174 timings(params->timings)
187 funcUnits(params->funcUnits)
208 void reportData(std::ostream &
os)
const;
212 {
return QueuedInst(MinorDynInst::bubble()); }
251 Cycles cyclesBeforeInsert();
254 bool canInsert()
const;
...ReportTraits are trait classes with the same functionality as ReportIF, but with elements explicit...
Wrapper for a matchable set of op classes.
Container class to box instructions in the FUs to make those queues have correct bubble behaviour whe...
Cycles is a wrapper class for representing cycle counts, i.e.
MinorOpClassSet * opClasses
MinorOpClass(const MinorOpClassParams *params)
A collection of MinorFUs.
Cycles nextInsertCycle
When can a new instruction be inserted into the pipeline? This is an absolute cycle time unless it is...
Minor contains all the definitions within the MinorCPU apart from the CPU class itself.
A functional unit that can execute any of opClasses operations with a single op(eration)Lat(ency) and...
Cycles opLat
Delay from issuing the operation, to it reaching the end of the associated pipeline.
Cycles extraAssumedLat
Extra delay that results should show in the scoreboard after leaving the pipeline.
const MinorFU & description
Functional unit description that this pipeline implements.
bool provides(OpClass op_class)
Does this set support the given op class.
std::vector< MinorFU * > funcUnits
std::vector< MinorFUTiming * > timings
Extra timing info to give timings to individual ops.
The ClockedObject class extends the SimObject with a clock and accessor functions to relate ticks to ...
ClockedObject declaration and implementation.
ClockedObject & timeSource
An FUPipeline needs access to curCycle, use this timing source.
MinorFU(const MinorFUParams *params)
std::vector< Cycles > srcRegsRelativeLats
Cycle offsets from the scoreboard delivery times of register values for each of this instruction's so...
Classes for buffer, queue and FIFO behaviour.
Extra timing capability to allow individual ops to have their source register dependency latencies tw...
const Params * params() const
std::vector< bool > capabilityList
Convenience packing of opClasses into a bit vector for easier testing.
std::vector< unsigned int > cantForwardFromFUIndices
FUs which this pipeline can't receive a forwarded (i.e.
std::bitset< Num_OpClasses > capabilityList
Set of operation classes supported by this FU.
virtual const std::string name() const
bool suppress
If true, instructions matching this mask/match should not be issued in this FU.
bool provides(OpClass op_class)
Does the extra decode in this object support the given op class.
TimingExpr * extraCommitLatExpr
Boxing for MinorOpClass to get around a build problem with C++11 but also allow for future additions ...
The dynamic instruction and instruction/line id (sequence numbers) definition for Minor...
uint64_t mask
Mask off the ExtMachInst of an instruction before comparing with match.
A pipeline simulating class that will stall (not advance when advance() is called) if a non-bubble va...
QueuedInst(MinorDynInstPtr inst_=MinorDynInst::bubble())
MinorFUPool(const MinorFUPoolParams *params)
SelfStallingPipeline< QueuedInst, ReportTraitsAdaptor< QueuedInst > > FUPipelineBase
Functional units have pipelines which stall when an inst gets to their ends allowing Execute::commit ...
std::vector< MinorOpClass * > opClasses
MinorOpClassSet * opClasses
Extra opClasses check (after the FU one)
Cycles extraCommitLat
Extra latency that the instruction should spend at the end of the pipeline.
std::vector< bool > cantForwardFromFUIndices
FUs which this pipeline can't receive a forwarded (i.e.
Cycles issueLat
Delay after issuing an operation before the next operation can be issued.
Abstract superclass for simulation objects.
A functional unit configured from a MinorFU object.
static QueuedInst bubble()
std::string description
Textual description of the decode's purpose.