140 likes | 164 Views
Advanced Compilers CMPSCI 710 Spring 2003 Lecture 1. Emery Berger University of Massachusetts, Amherst. Administrivia. Class format: I present material & work examples You take notes, read book & papers Course website: www.cs.umass.edu/~emery/cmpsci710/ Grades:
E N D
Advanced CompilersCMPSCI 710Spring 2003Lecture 1 Emery Berger University of Massachusetts, Amherst
Administrivia • Class format: • I present material & work examples • You take notes, read book & papers • Course website: • www.cs.umass.edu/~emery/cmpsci710/ • 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
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.
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
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”
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…
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…
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…
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
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)!)
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)
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)
Next Time • Read ACDI Chapters 1, 2, 7 • Next meeting might be in CS building