Issue No. 05 - September (1992 vol. 3)
DOI Bookmark: http://doi.ieeecomputersociety.org/10.1109/71.159040
Both the efficient execution of branch intensive code and knowing the bounds on the same are important issues in computing in general and supercomputing in particular. In prior work, it has been suggested that the hardware needed to execute code with branches optimally is exponentially dependent on the total number of dynamic branches executed, this number of branches being proportional at least to the number of iterations of the loop. For classes of code taking at least one cycle per iteration to execute, this is not the case. For loops containing one test (normally in the form of a Boolean recurrence of order one), it is shown that the hardware necessary varies from exponential to polynomial in the length of the dependence cycle L, while execution time varies from one time cycle per iteration to less than L time cycles per iteration; the variation depends on specific code dependences. These results bring the eager evaluation of imperative code closer to fruition.
Index Termsloop iterations; loops with tests; branch intensive code; dynamic branches; Booleanrecurrence; order one; dependence cycle; time cycle; imperative code; parallelprogramming
A. Uht, "Requirements for Optimal Execution of Loops with Tests," in IEEE Transactions on Parallel & Distributed Systems, vol. 3, no. , pp. 573-581, 1992.