Out-of-order execution
OoO processors fill these "slots" in time with other instructions that are ready, then re-order the results at the end to make it appear that the instructions were processed as normal. The way the instructions are ordered in the original computer code is known as program order, in the processor they are handled in data order (the order in which the data, operands, become available in the processor's registers). Fairly complex circuitry is needed to convert from one ordering to the other and maintain a logical ordering of the output; the processor itself appears to be running the instructions in random order.