Presentation is loading. Please wait.

Presentation is loading. Please wait.

U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science Advanced Compilers CMPSCI 710 Spring 2004 Lecture 1 Emery Berger University of Massachusetts,

Similar presentations


Presentation on theme: "U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science Advanced Compilers CMPSCI 710 Spring 2004 Lecture 1 Emery Berger University of Massachusetts,"— Presentation transcript:

1 U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science Advanced Compilers CMPSCI 710 Spring 2004 Lecture 1 Emery Berger University of Massachusetts, Amherst

2 U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science 2 Overview Class format: Participatory & interactive You take notes, read book & papers Course website: www.cs.umass.edu/~emery/cmpsci710/ Grades: 10%class participation 10%homework assignments 40%exams 40%project Materials: Muchnick, Advanced Compiler Design Implementation (ACDI) Selected papers

3 U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science 3 Project Stuff 1 to 2 person teams Implement optimization/analysis in: Jikes RVM (IBM’s research Java compiler) Shark (UMass fast & safe scripting language) Others subject to my approval Due dates (roughly) 02/11/04: One-page project description. 02/25/04:2-4 page project design. 03/25/04:Project implementation review. 04/29/04: Implementation due. 05/06-13/04: In-class presentations. 05/13/04:Project report.

4 U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science 4 Class Topics Some bread & butter analyses & optimizations Control flow Data flow analysis & implementation SSA form Register allocation Instruction scheduling Pointer analysis Runtime systems (compiler must be aware of these!) Advanced topics (TBD) Binary decision diagrams for pointer analysis Program slicing Error detection Run time system interaction Region analysis…

5 U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science 5 Why Compilers Matter

6 U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science 6 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

7 U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science 7 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”

8 U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science 8 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…

9 U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science 9 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…

10 U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science 10 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…

11 U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science 11 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

12 U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science 12 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)!)

13 U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science 13 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)

14 U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science 14 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)

15 U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science 15 Next Time Read ACDI Chapters 1, 2, 7


Download ppt "U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science Advanced Compilers CMPSCI 710 Spring 2004 Lecture 1 Emery Berger University of Massachusetts,"

Similar presentations


Ads by Google