Friday, September 9, 2011

Execution Scheduling and Memory Disambiguation

Unfortunately I was unable to get much research done today.  However, I did learn a few things.

A processor can be either statically scheduled or dynamically scheduled.

A statically scheduled processor depends on the compiler to create the execution schedule.  I am guessing this is either through hints or by actually reordering instructions at compile time.

A dynamically scheduled processor creates the execution schedule at run-time.  This is apparently the preferred method, although I can only guess as to the reasons at this point.  One thought is that you can change the hardware and the same program doesn't need to be recompiled.

Memory Disambiguation is used in the creation of the execution schedule to reorder memory references without running into a data hazard; it is the process of determining if two instructions access the same memory location.

As with creating the execution schedule, memory disambiguation comes in two flavors: Static Disambiguation and Dynamic Disambiguation.  As with scheduling, the static variation is performed by the compiler and the dynamic variation is performed by the processor.  Either or both can be used and they don't interfere with each other.

How dynamic disambiguation works with a statically scheduled processor, I don't know.  Hopefully that is one of those questions which I will find an answer to.

No comments:

Post a Comment