Our simulations of speculative execution use static branch predictions based on profile information. These statistics were collected from running the benchmarks with the same inputs used in the simulations. Our prediction rates are therefore an upper bound for static branch prediction techniques. Dynamic techniques provide similar performance . Table 2 shows the branch prediction rates for conditional branches in each benchmark. We do not attempt to predict computed jumps.
A mispredicted branch in a trace is easily identified by comparing the actual branch outcome with the predicted outcome. The simulator for the SP machine simply remembers the execution time of the most recent mispredicted branch, and no subsequent instructions in the trace can execute before that time. For the SP-CD and SP-CD-MF machines, an instruction must wait for its last mispredicted control dependence branch. By recording for each branch in the code whether its most recent instance was mispredicted, the simulator can compute this control flow constraint.