Download presentation
Presentation is loading. Please wait.
Published byBonnie Sherman Modified over 6 years ago
1
Advanced Compilers CMPSCI 710 Spring 2003 Lecture 1
Emery Berger University of Massachusetts, Amherst
2
Administrivia Class format: Course website: Grades: Materials:
I present material & work examples You take notes, read book & papers Course website: Grades: 40% - 4 homework assignments (due dates to be announced) 60% - project Materials: Required text: Muchnick, Advanced Compiler Design Implementation (ACDI) Supplementary material: selected papers
3
Project Stuff 1 to 2 person teams Implement optimization/analysis in:
Jikes RVM (IBM’s research Java compiler) Broadway (UTexas “metacompiler”) other (subject to approval) Due dates: 02/11/03: One-page project description. 02/25/03: 2-4 page project design. 03/25/03: Project implementation review. 04/29/03: Implementation due. 05/06-13/03: In-class presentations. 05/13/03: Project report.
4
Why Compilers Matter
5
What are Compilers, Anyway?
Compiler: translates program in one language to executable program in other language Typically lowers abstraction level E.g., Java/C++ to assembler Optimizing compiler: Misnomer! Optimal compilation intractable Improves program performance
6
Performance Anxiety But does performance really matter?
Computers are really fast Moore’s law (roughly): hardware performance doubles every 18 months Real bottlenecks lie elsewhere: Disk Network Human! (think interactive apps) At most 120 cps typing Waste time “thinking”
7
Compilers Don’t Help Much
Do compilers improve performance anyway? Proebsting’s law (Todd Proebsting, Microsoft Research): Difference between optimizing and non-optimizing compiler ~ 4x Assume compiler technology represents 36 years of progress (actually more) Compilers double program performance every 18 years! Not quite Moore’s Law…
8
Argumentum Ad Absurdum
Compilers don’t help much (Proebsting’s Law) Don’t use optimizer Computers are getting faster (Moore’s Law) Buy a new one – helps the economy too! Or: wait until one’s fast enough, then run program Hmmm…
9
A Big BUT Why use high-level languages anyway?
Easier to write & maintain Safer (think Java) More convenient (think libraries, GC…) But: people will not accept massive performance hit for these gains Compile with optimization! Still use C and C++!! Hand-optimize their code!!! Even write assembler code (gasp)!!!! Apparently performance does matter…
10
Why Compilers Matter Key part of compiler’s job: make the costs of abstraction reasonable Remove performance penalty for: Using objects Safety checks (e.g., array-bounds) Writing clean code (e.g., recursion) Use program analysis to transform code: primary topic of this course
11
Analysis & The Holy Grail
Other great uses for program analysis: Static error-checking Detect information leaks Avoid security holes Informing runtime system (e.g., GC) Even better optimizations! E.g., locality-improving transformations (“memory wall”) Holy Grail for compiler research: Programmer: writes simple but O(2^n) algorithm Compiler: changes it to O(n log n) (or O(1)!)
12
Levels of Analysis (in order of increasing detail & complexity)
Local (single-block) [1960’s] Straight-line code Simple to analyze; limited impact Intraprocedural [1970’s – today] Whole procedure Dataflow & dependence analysis Interprocedural [late 1970’s – today] Whole-program analysis Tricky: Very time and space intensive Hard for some PL’s (e.g., Java)
13
Optimization = Analysis + Transformation
Key analyses: Control-flow if-statements, branches, loops, procedure calls Data-flow definitions and uses of variables Representations: Control-flow graph Control-dependence graph Def/use, use/def chains SSA (Static Single Assignment)
14
Next Time Read ACDI Chapters 1, 2, 7
Next meeting might be in CS building
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.