Go to the documentation of this file.
41 #ifndef __CPU_O3_FU_POOL_HH__
42 #define __CPU_O3_FU_POOL_HH__
51 #include "params/FUPool.hh"
100 inline void addFU(
int fu_idx);
147 int getUnit(OpClass capability);
178 #endif // __CPU_O3_FU_POOL_HH__
static const OpClass Num_OpClasses
std::vector< int > funcUnitsIdx
Queue of FU indices.
int idx
Circular queue index.
std::array< Cycles, Num_OpClasses > maxOpLatencies
Maximum op execution latencies, per op class.
std::bitset< Num_OpClasses > capabilityList
Bitvector listing capabilities of this FU pool.
void dump()
Debugging function used to dump FU information.
std::vector< FuncUnit * >::iterator fuListIterator
int getUnit(OpClass capability)
Gets a FU providing the requested capability.
std::vector< bool > unitBusy
Bitvector listing which FUs are busy.
int size()
Returns the total number of FUs.
void takeOverFrom()
Takes over from another CPU's thread.
Pool of FU's, specific to the new CPU model.
FUIdxQueue()
Constructs a circular queue of FU indices.
static constexpr auto NoCapableFU
bool isDrained() const
Have all the FUs drained?
void addFU(int fu_idx)
Adds a FU to the queue.
std::array< bool, Num_OpClasses > pipelined
Whether op is pipelined or not.
void processFreeUnits()
Frees all FUs on the list.
void freeUnitNextCycle(int fu_idx)
Frees a FU at the end of this cycle.
bool isPipelined(OpClass capability)
Returns the issue latency of the given capability.
Cycles is a wrapper class for representing cycle counts, i.e.
Class that implements a circular queue to hold FU indices.
Cycles getOpLatency(OpClass capability)
Returns the operation execution latency of the given capability.
int size
Size of the queue.
int getFU()
Returns the index of the FU at the head of the queue, and changes the index to the next element.
std::vector< FuncUnit * > funcUnits
Functional units.
FUPool(const Params *p)
Constructs a FU pool.
std::vector< int > unitsToBeFreed
List of units to be freed at the end of this cycle.
static constexpr auto NoFreeFU
FUIdxQueue fuPerCapList[Num_OpClasses]
Per op class queues of FUs that provide that capability.
Abstract superclass for simulation objects.
Generated on Wed Sep 30 2020 14:02:09 for gem5 by doxygen 1.8.17