Abstract :
The most promising technique for automatically parallelizing loops when the system cannot determine dependences at compile time is speculative parallelization. Also called thread-level speculation, this technique assumes optimistically that the system can execute all iterations of a given loop in parallel. A hardware or software monitor divides the iterations into blocks and assigns them to different threads, one per processor, with no prior dependence analysis. If the system discovers a dependence violation at runtime, it stops the incorrectly computed work and restarts it with correct values. Of course, the more parallel the loop, the more benefits this technique delivers. To better understand how speculative parallelization works, it is necessary to distinguish between private and shared variables. Informally speaking, private variables are those that the program always modifies in each iteration before using them. On the other hand, values stored in shared variables are used in different iterations.
Keywords :
multi-threading; parallelising compilers; program control structures; system monitoring; automatic loop parallelization; hardware monitor; program compiler; program dependence analysis; runtime dependence violation discovery; software monitor; speculative parallelization; thread-level speculation; Concurrent computing; Hardware; Monitoring; Performance loss; Runtime; How Things Work; Speculative parallelization;