Multiple Issue
Techniques such as
dynamic scheduling and
branch prediction
attempt to realize an effective CPI near 1 in the presence of hazards.
To further reduce the CPI to less than 1, we need to issue more
than one instruction per cycle.
Two Techniques
Superscalar
VLIW
The biggest problem with multiple issue architectures
is finding enough parallelism in the program.
Measurements show on average there are about 5 instructions executed
between branch instructions.
This means we must apply more agressive compiler techniques
to uncover and generate ILP:
Loop unrolling
Software pipelining
Trace Scheduling
Speculation
to Overview.