Optimizing Compilers for Modern Architectures: A Dependence-Based Approach

8.11 Historical Comments and References

8.11 Historical Comments and References

Allen and Kennedy pioneered the use of dependence for optimization of register use on vector machines in the paper "Vector Register Allocation" [22] and in Allen's dissertation [16]. John Cocke proposed the technique of unroll-and-jam for use in the RS/6000, one of the first machines with extremely long latencies for cache misses. The idea was first published in the original paper by Callahan, Cocke, and Kennedy [55]. The idea of using scalar replacement to achieve register reuse on uniprocessors was due to Carr and Kennedy [67]. Carr implemented scalar replacement and unroll-and-jam and reported on its effectiveness in a series of papers with Callahan and Kennedy [65, 66]. Algorithms for pruning the dependence graph were developed by Brandes [43], Rosene [237], and Carr [64]. Handling of complex loop nests was also due to Carr and Kennedy [66].

Loop alignment was originally discussed by Allen, Callahan, and Kennedy as a way to eliminate carried dependences in parallelization [25]. The applicability of alignment to improve opportunities for register reuse after fusion is new, although it has been studied as a mechanism for cache reuse improvement [103, 105].

The greedy weighted fusion algorithm presented in this chapter is due to Kennedy [171, 172]. Kennedy and McKinley [176] developed the original proof that weighted fusion is NP-complete and presented a heuristic strategy based on repetitive application of Goldberg and Tarjan's maximum flow algorithm for networks [176]. The resulting algorithm takes time O( kEV log ( V 2

UNLIMITED FREE
ACCESS
TO THE WORLD'S BEST IDEAS

SUBMIT
Already a GlobalSpec user? Log in.

This is embarrasing...

An error occurred while processing the form. Please try again in a few minutes.

Customize Your GlobalSpec Experience

Category: Locating and Fixturing Pins
Finish!
Privacy Policy

This is embarrasing...

An error occurred while processing the form. Please try again in a few minutes.