Reservation stations
With each functional unit, have a set of buffers or reservation stations
- Keep operands and function to perform
- Operands can be values or names of units that will produce the value (register renaming) with appropriate flags
Not both operands have to be “ready” at the same time
When both operands have values, functional unit can execute on that pair of operands
When a functional unit computes a result, it broadcasts its name and the value.
- Might not store a result in a real register