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

[up] to Overview.