6.3 Scheduling
The lowest level of optimization is scheduling, in which the
compiler determines the best ordering of individual instructions. Most
CPUs allow one or more new instructions to start executing before others
have finished. Many CPUs also support pipelining, where multiple
instructions execute in parallel on the same CPU.
When scheduling is enabled, instructions must be arranged so that their
results become available to later instructions at the right time, and to
allow for maximum parallel execution. Scheduling improves the speed of
an executable without increasing its size, but requires additional
memory and time in the compilation process itself (due to its
complexity).