Previous | Next --- Slide 44 of 63
Back to Lecture Thumbnails
kayvonf

Question: The key phrase on this slide is that a processor must execute instructions in a manner "appears" as if they were executed in program order. This is a key idea in this class.

What is "program order"?

And what does it mean for the results of a program's execution to appear as if instructions were executed in program order?

And finally... Why is the program order guarantee a useful one? (What if the results of execution were inconsistent with the results that would be obtained if the instructions were executed in program order?)

Kaharjan

I think : 1)program order is execution order of instructions.. 2) Because ILP would execute instructions according to instructions dependency. So some instructions may be executed in parallel manner or out of order. 3)Because programs were written in order , and expected to get result by order

kayvonf

@Kaharjan. Correct.

Program order is simply the order of instructions in the program. It's the order the programmer meant the instructions to be executed in.

However, some instructions are independent. And when instructions are independent, it is possible to execute them in a different order without changing the output of the program. One possible "different order" is to execute them at the same time (in parallel). When a processor has the ability to automatically find independent instructions in an instruction stream and execute them in parallel, we say it has the ability to perform superscalar execution.

Another way to think about this is that since changing the order of the instructions does not change the output of the program, there is no way to tell if the processor has executed the instruction in a different order.

limin

I have a question: what's the relationship between super scalar execution and multi-issue technique?

kayvonf

@limin: Superscalar execution is an example of multiple instruction issue. ("multiple issue" = executing more than one instruction per clock)

However there are ways to design a processor core to issue multiple instructions per clock that do not require the processor to automatically find parallelism in a single instruction stream. For example, the instruction stream might explicitly indicate which instructions can be run in parallel (VLIW might be considered an instance of this).

Another reference on the web: https://courses.cs.washington.edu/courses/csep548/06au/lectures/multipleIssue.pdf