incorporated into powerful yet widely
used tools. The increasing sophistication of the algorithms is evident when
today’s algorithms are compared with
those implemented in earlier compilers. Two examples illustrate these advances. Early compilers used ad hoc
techniques to parse programs. Today’s
parsing techniques are based on formal languages and automata theory,
enabling the systematic development
of compiler front ends. Likewise, early
work on restructuring compilers used
ad hoc techniques for dependence
analysis and loop transformation. Today, this aspect of compilers has been
revolutionized by powerful algorithms
based on integer linear programming.
Code optimizations are part of most
commercial compilers, pursuing a
range of objectives (such as avoiding redundant computations, allocating registers, enhancing locality, and taking
advantage of instruction-level parallelism). Compiler optimization usually delivers a good level of performance, and,
in some cases, the performance of com-piler-generated code is close to the peak
performance of the target machine.
Achieving a similar result with manual
tuning, especially for large codes, is extraordinarily difficult, expensive, and
error prone. Self-tuning program generators for linear algebra and signal
processing are particularly effective in
this regard.
Tools for identifying program defects and security risks are increasingly
popular and used regularly by the largest software developers. They are notably effective in identifying some of the
most frequent bugs or defects (such as
improper memory allocations and deal-
locations, race conditions, and buffer
overruns). One indication of the increasing importance of program-analysis
algorithms in reliability and security is
the growth of the software tools industry that incorporate such algorithms.
One manifestation of the intense
intellectual activity in compilers is
that the main conferences in the area,
including the ACM Symposium on
Programming Language Design and
Implementation (PLDI), ACM Symposium on Principles of Programming
Languages (POPL), ACM Symposium
on Principles and Practice of Parallel
Programming (PPoPP), and ACM Conference on Object-Oriented Programming Systems, Languages and Applications (OOPSLA), are among the most
influential, respected, and selective
in computer science. Another indica-
a
tion of the field’s influence is that the
phrases “programming languages”
and “compilers” occur in the citations
of no less than seven Turing award winners, including Peter Naur in 2005 and
Fran Allen in 2006.
Compiler Challenges
The growing complexity of machines
and software, introduction of multicores, and concern over security are
among the more serious problems that
a An indication of the influence of compiler and
programming language research is the citation rate rank of the field’s major conferences
relative to other computer science conferences and journals worldwide as reported by Citeseer ( citeseer.ist.psu.edu/impact.html). Their
rank on Citeseer as of December 2008 is PLDI
(3rd), POPL (13th), PPoPP (14th), and OOPSLA
(28th) out of a total of 1,221 computer science
conferences and journals.
must be addressed today. Here, we describe the role compiler technology
plays in addressing them:
Program optimization. We live in
the era of multicore processors; from
now on, clock frequencies will rise
slowly if at all, but the number of cores
on processor chips is likely to double
every couple of years. Therefore, by
2020, microprocessors are likely to
have hundreds or even thousands of
cores, heterogeneous and possibly specialized for different functionalities.
Exploiting large-scale parallel hardware will be essential for improving an
application’s performance or its capabilities in terms of execution speed and
power consumption. The challenge for
compiler research is how to enable the
exploitation of the power of the target
machine, including its parallelism,
without undue programmer effort.
David Kuck, an Intel Fellow, emphasized in a private communication the
importance of compiler research for
addressing the multicore challenge.
He said that the challenge of optimal
compilation lies in its combinatorial
complexity. Languages expand as computer use reaches new application domains and new architectural features
arise. Architectural complexity (
uni-and multicore) grows to support performance, and compiler optimization
must bridge this widening gap. Compiler fundamentals are well understood
now, but where to apply what optimization has become increasingly difficult
over the past few decades. Compilers
today are set to operate with a fixed
strategy (such as on a single function
in a particular data context) but have
trouble shifting gears when different
Collaboration, Research Challenges, Education
Agenda for the Compiler Community
the following agenda for the
compiler community demands
a broader collaboration
between industry and academic
institutions, as well as support
from government funding
agencies, to address the challenges
discussed here.
enablers to facilitate collaborative compiler research:
˲ open and extensible compiler
infrastructure with state-of-the-
art optimizations;
˲collections of benchmarks
for evaluating advances in com-
pilers and a strategy for keeping
the benchmark collections up
to date; and
˲ Methodology for measuring
progress and reporting results
that encourages all publications
to include data in repositories
to enable other researchers to
reproduce the results.
Research challenges in optimization:
˲ Make parallel programming
mainstream;
˲ Write compilers capable of
self-improvement; and
˲ Develop performance models
to support optimizations for
parallel code.
Research challenges in correctness:
˲ enable development of soft-
ware as reliable as an airplane;
˲ enable system software that is
secure at all levels; and
˲ verifytheentiresoftwarestack.
enrich computer science
education with compiler technology:
˲ expand compiler courses with
examples from new problem domains (such as security); and
˲ Work with experts in other
domains to incorporate compiler
algorithms into their courses.
62 CommunICatIons of the aCm | feBRuaRY2009 | vol. 52 | No. 2