Slot
A slot is actually two things:
- for one it is a defined subsection in an instruction block that encodes an operation
- and it is also the piece of Decode hardware that decodes and dispatches the operations in this subsection of the instruction block (and only this subsection)
Each slot has a limited set of operations that can occur in it, and only those operations can appear. For a specific core every slot can have it's unique own set of available operations. But especially on the big cores there are several slots with the same population.
The operation population of a slot usually depends on the Functional Units added to the Pipeline dedicated to this slot in the Specification. Often this whole chain of decoder and pipeline with its funcitonal units is called a slot.
Each slot can issue one new operation each cycle, all of which are executed in parallel and independently to all the other operations in the parallel slots. Well, apart from a few exceptions like unconditional branches, of which there can only be one executed in each instruction, but which can appear in any of the branching slots of the instruction. This is an optimization though.