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


Scale Fortran performance
Scale Fortran performance


Scale C performance Scale C performance

Project Goals
Scale Compiler Data Flow Diagram
Alias Analysis
Static Single Assignment
Dependence Testing
Support Tools
Example Compilations
Using the Scale Compiler
Example of Scale Compiler Research Use
Project Personnel
Download Scale System


This work is supported by the National Science Foundation (NSF grants EIA-9726401, CDA-9502639, and NSF CAREER Award CCR-9624209) Darpa (grant 5-21425) and Compaq. Any opinions, findings and conclusions or recommendations expressed in this material are the authors' and do not necessarily reflect those of the sponsors.
Send questions or comments to the Scale mail list.
(Last changed: November 27, 2007.)