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