1992 · 33 citations · 10 references
ComputingComputer ScienceHigh-performance ComputingCompilersComputer ArchitectureParallel ComputingInstruction SchedulingInstruction Set ArchitectureInstruction-level ParallelismParallel ArchitecturesParallel Computer ArchitectureSuperscalar ProcessingCompiler DesignLoop ParallelizationLoop UnrollingMicroarchitectural OptimizationRegister RenamingRenamingSupercomputer ArchitectureSuperscalar Microarchitecture
Exploiting parallelism at both the multiprocessor level and the instruction level is an effective means for supercomputers to achieve high-performance. The amount of instruction-level parallelism available to superscalar or VLIW node processors can be limited, however, with conventional compiler optimization techniques. In this paper, a set of compiler transformations designed to increase instruction-level parallelism is described. The effectiveness of these transformations is evaluated using 40 loop nests extracted from a range of supercomputer applications. This evaluation shows that increasing execution resources in superscalar /VLIW node processors yields little performance improvement unless loop unrolling and register renaming are applied. It also reveals that these two transformations are sufficient for DOALL loops. However, more advanced transformations are required in order for serial and DOACROSS loops to fully benefit from the increased execution resources. The results show ...
10
Monica S. Lam · ACM SIGPLAN Notices · 2004 · 890 citations
Dependence graphs and compiler optimizations
David J. Kuck, Robert H. Kuhn, David Padua et al. · 1981 · 652 citations · Full text
A VLIW architecture for a trace scheduling compiler
Robert P. Colwell, Robert Nix, John J. O’Donnell et al. · ACM SIGOPS Operating Systems Review · 1987 · 400 citations