44#ifndef __CPU_MINOR_SCOREBOARD_HH__
45#define __CPU_MINOR_SCOREBOARD_HH__
87 typedef unsigned short int Index;
Defines global host-dependent types: Counter, Tick, and (indirectly) {int,uint}{8,...
Cycles is a wrapper class for representing cycle counts, i.e.
Interface for things with names.
virtual std::string name() const
Register ID: describe an architectural register with its class and index.
ThreadContext is the external interface to all thread state for anything outside of the CPU.
A scoreboard of register dependencies including, for each register: The number of in-flight instructi...
std::vector< Index > numUnpredictableResults
Count of the number of results which can't be predicted.
void clearInstDests(MinorDynInstPtr inst, bool clear_unpredictable)
Clear down the dependencies for this instruction.
std::vector< Cycles > returnCycle
The estimated cycle number that the result will be presented.
static constexpr int invalidFUIndex
Scoreboard(const std::string &name, const BaseISA::RegClasses ®_classes)
const unsigned intRegOffset
const unsigned floatRegOffset
bool canInstIssue(MinorDynInstPtr inst, const std::vector< Cycles > *src_reg_relative_latencies, const std::vector< bool > *cant_forward_from_fu_indices, Cycles now, ThreadContext *thread_context)
Can this instruction be issued.
InstSeqNum execSeqNumToWaitFor(MinorDynInstPtr inst, ThreadContext *thread_context)
Returns the exec sequence number of the most recent inst on which the given inst depends.
const BaseISA::RegClasses regClasses
const unsigned matRegOffset
const unsigned vecRegOffset
unsigned short int Index
Type to use when indexing numResults.
const unsigned ccRegOffset
std::vector< Index > numResults
Count of the number of in-flight instructions that have results for each register.
std::vector< int > fuIndices
Index of the FU generating this result.
const unsigned vecRegElemOffset
const unsigned vecPredRegOffset
bool findIndex(const RegId ®, Index &scoreboard_index)
Sets scoreboard_index to the index into numResults of the given register index.
void markupInstDests(MinorDynInstPtr inst, Cycles retire_time, ThreadContext *thread_context, bool mark_unpredictable)
Mark up an instruction's effects by incrementing numResults counts.
std::vector< InstSeqNum > writingInst
The execute sequence number of the most recent inst to generate this register value.
void minorTrace() const
MinorTraceIF interface.
const unsigned numRegs
The number of registers in the Scoreboard.
Top level definition of the Minor in-order CPU model.
This file contains miscellaneous classes and functions for formatting general trace information and a...
The dynamic instruction and instruction/line id (sequence numbers) definition for Minor.
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
@ MatRegClass
Matrix Register.
@ FloatRegClass
Floating-point register.
@ CCRegClass
Condition-code register.
@ VecRegClass
Vector Register.
@ IntRegClass
Integer register.
@ VecElemClass
Vector Register Native Elem lane.
Minor contains all the definitions within the MinorCPU apart from the CPU class itself.