Superscalar
Existing programs have different levels of parallelism. In some cases, instructions are not dependent on each other and can be executed at the same time. In other cases, they are interdependent: one instruction affects another. The instructions a = b + c; d = e + f can be run in parallel because none of the results depend on other results, but the instructions a = b + c; b = e + f will probably have to be run in a specific order because a depends on b.