Go to the documentation of this file.
57 funcUnitsIdx.push_back(fu_idx);
64 int retval = funcUnitsIdx[idx++];
113 for (;
j != end; ++
j) {
119 for (
int k = 0;
k < (*i)->number; ++
k)
123 fu->addCapability((*j)->opClass, (*j)->opLat, (*j)->pipelined);
128 if (!(*j)->pipelined)
135 fu->name = (*i)->name() +
"(0)";
138 for (
int c = 1;
c < (*i)->number; ++
c) {
143 s << (*i)->name() <<
"(" <<
c <<
")";
166 int start_idx = fu_idx;
172 if (fu_idx == start_idx) {
178 assert(fu_idx <
numFU);
208 cout <<
"Function Unit Pool (" <<
name() <<
")\n";
209 cout <<
"======================================\n";
210 cout <<
"Free List:\n";
217 cout <<
" [" <<
i <<
"] : ";
224 cout <<
"======================================\n";
225 cout <<
"Busy List:\n";
231 cout <<
" [" <<
i <<
"] : ";
242 bool is_drained =
true;
265 FUPoolParams::create()
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.
Pool of FU's, specific to the new CPU model.
bool isDrained() const
Have all the FUs drained?
void addFU(int fu_idx)
Adds a FU to the queue.
virtual const std::string name() const
std::array< bool, Num_OpClasses > pipelined
Whether op is pipelined or not.
void processFreeUnits()
Frees all FUs on the list.
Overload hash function for BasicBlockRange type.
std::vector< FUDesc * >::const_iterator FUDDiterator
void freeUnitNextCycle(int fu_idx)
Frees a FU at the end of this cycle.
Cycles is a wrapper class for representing cycle counts, i.e.
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.
std::vector< OpDesc * >::const_iterator OPDDiterator
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