A Macrotask-level Unlimited Speculative Execution on Multiprocessors (5/19)

The following description is based on the paper presented at 1995 ACM International Conference on Supercomputing head in Spain on July 3rd to 7th,1995.

If you want to have the copy of the paper, please let me know.


back index next


I think it would be the best to start off by reviewing the speculative execution. This figure shows the concept of speculation. Here is a simple program consisting of 3 blocks. BK1, 2, and BK3. Since the program has conditional branches, we must obey the decision of each conditional branch. For example, when the second conditional branch is determined as "Not Taken", then we are able to execute BK3. In this way, BK1 to BK3 are executed in serial with normal execution. However, if we could ignore the second decision and execute BK3 before the control decision is made, we could shorten the total execution time as shown here. After the decision of the conditional branch, we decide whether to choose BK3 or not. This is called SPECULATION. As you are already aware, here is one question. "Why is it impossible to execute BK2 with speculation?". Because, BK2 has data dependence from BK1. So, even if we ignore control dependence, BK2 is not able to be executed because BK2 must wait the definition of the value of "a". This is a key point described in the next part.