Instruction Dispatch
With the exception of loads and stores, all other RV32I instructions map onto a single scheduler entry. The phrase "micro-op" and "scheduler entry" are effectively synonymous in this context.
Instruction dispatch is the process of submitting a block of macro-ops for execution in the backend of the machine.
Dispatch is roughly broken into the following pieces:
- Allocate/write a retire queue entry for the dispatched block
- Ensure that non-scheduled macro-ops are marked as completed
- Decompose each macro-op into one or more micro-ops
- Allocate/write a scheduler entry for each micro-op
Dispatch must stall for the availability of a retire queue entry, and for the availability of scheduler storage.