Introduction to Optimizing Compilers
Markus Mock (1)
e-mails: mock@cs.pitt.edu
(1) Dept. of Computer Science - University of Pittsburgh Estados Unidos
In the last couple of years program optimization by compilers has
become crucially important to achieving top system performance. There
are two main reasons. First, increasingly programs are written in
languages that provide higher levels of abstraction to programmers
(with obvious software engineering benefits) but require smarter
compilers to be efficiently executed (e.g. Java just-in-time
compilers). Second, to achieve excellent performance on modern
computer architectures and memory hierarchies, a tight cooperation
between compiler and computer architecture is required to achieve
good performance. Driven by these two demands, compilers have made
great improvements in the past two decades, so that frequently
optimized programs run several times as fast as unoptimized ones.
In this tutorial we will cover the basic techniques and approaches
underlying this tremendous progress and will also learn about the most
important and crucial optimizations performed by optimizing compilers
today. After a short review of basic compiler structure and techniques
(lexical and syntax analysis) the major part of the tutorial will
focus on the analyses (data and control flow analysis), program
representations, and transformations performed by optimizing
compilers. The tutorial should enable the participants to both
integrate the advanced compiler material into their curricula and to
write their own optimizing compilers. Programmers in general will also
benefit by better understanding what an optimizing compiler can and
cannot do, and how to cooperate with it to achieve fast programs.
I Preliminaries
- Lexical analysis
- Syntax analysis
- Parsing and grammar
- Syntax-directed translation
- Type checking
- Storage Allocation
II Optimizing Compiler Technology
- Intermediate Representations
- Run-time Support
- Control Flow Analysis
- Introduction Data Flow Analysis
- Data Flow Lattices
- SSA Form
- Dependence & Alias Analysis
- Global Value Numbering
- Conditional Constant Propagation & Redundancy Elimination
- Loop & Procedure Optimization
- Register Allocation
- Code Scheduling
- Interprocedural Analysis
III Advanced Topics
- Program Specialization
- Run-Time Optimization
Keywords:compilers, program optimization, program analysis, code generation
Dr. Mock is assistant professor in the Department of Computer Science
at the University of Pittsburgh. He
received his M.S. and Ph.D. degrees from the University of Washington,
Seattle (in 1997 and 2002, respectively). His research interests are
compilers, program analysis, and optimization. In
particular, his research focuses on applications of run-time
information in compilation, program optimization and software
tools. Dr. Mock is a member of ACM, IEEE Computer Society, the
German Computer Society (GI), and the Peruvian Computer Society
(SPC).
BibTex
@INPROCEEDINGS{mock04:1004,
AUTHOR = {Markus Mock},
TITLE = {Introduction to Optimizing Compilers},
BOOKTITLE = {30ma Conferencia Latinoamericana de Informática (CLEI2004)},
YEAR = {2004},
editor = {Mauricio Solar and David Fernández-Baca and Ernesto Cuadros-Vargas},
pages = {5--6},
address = {},
month = Sep,
organization = {Sociedad Peruana de Computación},
note = {ISBN 9972-9876-2-0},
}
PDF de CLEI2004 (incluye todos los artículos)
Página principal CLEI 2004
Generado por Sociedad Peruana de Computación