A Scalable Compiler for Analytical Experiments
Copyright 2007 by the Scale Compiler Group,
Department of Computer Science
University of Massachusetts,
Amherst MA. 01003, USA
All Rights Reserved.
Dramatic and continuous changes in architecture require that the next generation of compilers be more powerful, flexible, and reusable in order to achieve high performance before the target architecture is obsolete. The Scale compilation system is designed to meet this challenge. Scale currently implements parsers for C, Fortran, and Java byte-codes, alias analyses, static single assignment form (SSA), a collection of scalar optimizations, (PRE, value numbering, copy propagation, dead code elimination, and constant propagation), and outputs C and assembly code. These are performed using a new intermediate representation, called Scribble.
The Scale compiler is intended for use as a research and/or instructional tool. The Scale compiler and the Java® source code may be accessed for use by other compiler researchers.
The primary focus of the Scale project at this time is to generate high performance code for the Trips architecture. This architecture presents some interesting challenges. In order to obtain the very high performance of which it is capable, the compiler must be able to construct basic blocks that are much larger than the ones seen in a typical C program. To accomplish this, we are using powerful inlining and unrolling combined with predication.
The Scale compiler is able to visually display abstract syntax trees and control flow graphs. This provides a powerful debugging tool when implementing new optimizations. Graphical displays can also be used for understanding how compilers accomplish their tasks.
Scale generates executables with excellent performance. This performance is improving steadily. The two graphs below compare Scale to the native compiler for C and Fortran. The comparisons were performed on both a Sparc and an Alpha. A comparison to the Gnu gcc compiler is also made. These comparisons were performed using