struct RetireControlUnit
Declaration
struct RetireControlUnit : public HardwareUnit { /* full declaration omitted */ };
Description
This class checks on every cycle if/which instructions can be retired. Instructions are retired in program order. In the event of an instruction being retired, the pipeline that owns this RetireControlUnit (RCU) gets notified. On instruction retired, register updates are all architecturally committed, and any physicall registers previously allocated for the retired instruction are freed.
Declared at: llvm/include/llvm/MCA/HardwareUnits/RetireControlUnit.h:36
Inherits from: HardwareUnit
Member Variables
- private unsigned int NextAvailableSlotIdx
- private unsigned int CurrentInstructionSlotIdx
- private unsigned int NumROBEntries
- private unsigned int AvailableEntries
- private unsigned int MaxRetirePerCycle
- private std::vector<RUToken> Queue
- public static const unsigned int UnhandledTokenID = ~0U
Method Overview
- public RetireControlUnit(const llvm::MCSchedModel & SM)
- private unsigned int computeNextSlotIdx() const
- public void consumeCurrentToken()
- public unsigned int dispatch(const llvm::mca::InstRef & IS)
- public void dump() const
- public const llvm::mca::RetireControlUnit::RUToken & getCurrentToken() const
- public unsigned int getMaxRetirePerCycle() const
- public bool isAvailable(unsigned int Quantity = 1) const
- public bool isEmpty() const
- private unsigned int normalizeQuantity(unsigned int Quantity) const
- public void onInstructionExecuted(unsigned int TokenID)
- public const llvm::mca::RetireControlUnit::RUToken & peekNextToken() const
Inherited from HardwareUnit:
Methods
¶RetireControlUnit(const llvm::MCSchedModel& SM)
RetireControlUnit(const llvm::MCSchedModel& SM)
Declared at: llvm/include/llvm/MCA/HardwareUnits/RetireControlUnit.h:80
Parameters
- const llvm::MCSchedModel& SM
¶unsigned int computeNextSlotIdx() const
unsigned int computeNextSlotIdx() const
Declared at: llvm/include/llvm/MCA/HardwareUnits/RetireControlUnit.h:77
¶void consumeCurrentToken()
void consumeCurrentToken()
Declared at: llvm/include/llvm/MCA/HardwareUnits/RetireControlUnit.h:99
¶unsigned int dispatch(
const llvm::mca::InstRef& IS)
unsigned int dispatch(
const llvm::mca::InstRef& IS)
Declared at: llvm/include/llvm/MCA/HardwareUnits/RetireControlUnit.h:91
Parameters
- const llvm::mca::InstRef& IS
¶void dump() const
void dump() const
Declared at: llvm/include/llvm/MCA/HardwareUnits/RetireControlUnit.h:105
¶const llvm::mca::RetireControlUnit::RUToken&
getCurrentToken() const
const llvm::mca::RetireControlUnit::RUToken&
getCurrentToken() const
Declared at: llvm/include/llvm/MCA/HardwareUnits/RetireControlUnit.h:94
¶unsigned int getMaxRetirePerCycle() const
unsigned int getMaxRetirePerCycle() const
Declared at: llvm/include/llvm/MCA/HardwareUnits/RetireControlUnit.h:88
¶bool isAvailable(unsigned int Quantity = 1) const
bool isAvailable(unsigned int Quantity = 1) const
Declared at: llvm/include/llvm/MCA/HardwareUnits/RetireControlUnit.h:84
Parameters
- unsigned int Quantity = 1
¶bool isEmpty() const
bool isEmpty() const
Declared at: llvm/include/llvm/MCA/HardwareUnits/RetireControlUnit.h:82
¶unsigned int normalizeQuantity(
unsigned int Quantity) const
unsigned int normalizeQuantity(
unsigned int Quantity) const
Declared at: llvm/include/llvm/MCA/HardwareUnits/RetireControlUnit.h:65
Parameters
- unsigned int Quantity
¶void onInstructionExecuted(unsigned int TokenID)
void onInstructionExecuted(unsigned int TokenID)
Declared at: llvm/include/llvm/MCA/HardwareUnits/RetireControlUnit.h:102
Parameters
- unsigned int TokenID
¶const llvm::mca::RetireControlUnit::RUToken&
peekNextToken() const
const llvm::mca::RetireControlUnit::RUToken&
peekNextToken() const
Declared at: llvm/include/llvm/MCA/HardwareUnits/RetireControlUnit.h:96