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"
228typedef SelfStallingPipeline<QueuedInst,
Defines global host-dependent types: Counter, Tick, and (indirectly) {int,uint}{8,...
Classes for buffer, queue and FIFO behaviour.
The ClockedObject class extends the SimObject with a clock and accessor functions to relate ticks to ...
Cycles is a wrapper class for representing cycle counts, i.e.
std::vector< MinorFU * > funcUnits
MinorFUPool(const MinorFUPoolParams ¶ms)
Extra timing capability to allow individual ops to have their source register dependency latencies tw...
TimingExpr * extraCommitLatExpr
std::vector< Cycles > srcRegsRelativeLats
Cycle offsets from the scoreboard delivery times of register values for each of this instruction's so...
std::string description
Textual description of the decode's purpose.
uint64_t mask
Mask off the ExtMachInst of an instruction before comparing with match.
bool provides(OpClass op_class)
Does the extra decode in this object support the given op class.
Cycles extraAssumedLat
Extra delay that results should show in the scoreboard after leaving the pipeline.
MinorOpClassSet * opClasses
Extra opClasses check (after the FU one)
bool suppress
If true, instructions matching this mask/match should not be issued in this FU.
Cycles extraCommitLat
Extra latency that the instruction should spend at the end of the pipeline.
MinorFUTiming(const MinorFUTimingParams ¶ms)
A functional unit that can execute any of opClasses operations with a single op(eration)Lat(ency) and...
MinorFU(const MinorFUParams ¶ms)
Cycles issueLat
Delay after issuing an operation before the next operation can be issued.
std::vector< unsigned int > cantForwardFromFUIndices
FUs which this pipeline can't receive a forwarded (i.e.
MinorOpClassSet * opClasses
Cycles opLat
Delay from issuing the operation, to it reaching the end of the associated pipeline.
std::vector< MinorFUTiming * > timings
Extra timing info to give timings to individual ops.
Wrapper for a matchable set of op classes.
std::vector< MinorOpClass * > opClasses
bool provides(OpClass op_class)
Does this set support the given op class.
std::vector< bool > capabilityList
Convenience packing of opClasses into a bit vector for easier testing.
MinorOpClassSet(const MinorOpClassSetParams ¶ms)
MinorOpClass(const MinorOpClassParams ¶ms)
const MinorFU & description
Functional unit description that this pipeline implements.
Cycles nextInsertCycle
When can a new instruction be inserted into the pipeline?
FUPipeline(const std::string &name, const MinorFU &description_, ClockedObject &timeSource_)
std::vector< bool > cantForwardFromFUIndices
FUs which this pipeline can't receive a forwarded (i.e.
Cycles cyclesBeforeInsert()
How many cycles must from curCycle before insertion into the pipeline is allowed.
bool canInsert() const
Can an instruction be inserted now?
void advance()
Step the pipeline.
MinorFUTiming * findTiming(const StaticInstPtr &inst)
Find the extra timing information for this instruction.
std::bitset< Num_OpClasses > capabilityList
Set of operation classes supported by this FU.
ClockedObject & timeSource
An FUPipeline needs access to curCycle, use this timing source.
static MinorDynInstPtr bubble()
There is a single bubble inst.
void reportData(std::ostream &os) const
Report and bubble interfaces.
QueuedInst(MinorDynInstPtr inst_=MinorDynInst::bubble())
static QueuedInst bubble()
...ReportTraits are trait classes with the same functionality as ReportIF, but with elements explicit...
ClockedObject declaration and implementation.
const Params & params() const
SimObject(const Params &p)
The dynamic instruction and instruction/line id (sequence numbers) definition for Minor.
SelfStallingPipeline< QueuedInst, ReportTraitsAdaptor< QueuedInst > > FUPipelineBase
Functional units have pipelines which stall when an inst gets to their ends allowing Execute::commit ...
RefCountingPtr< MinorDynInst > MinorDynInstPtr
MinorDynInsts are currently reference counted.
Copyright (c) 2024 Arm Limited All rights reserved.
RefCountingPtr< StaticInst > StaticInstPtr
Minor contains all the definitions within the MinorCPU apart from the CPU class itself.