1 / 28

Introduction to Advanced Topics Chapter 1

Introduction to Advanced Topics Chapter 1. Mooly Sagiv Schrierber 317 03-640-7606 www.math.tau.ac.il/~sagiv/courses/acd.html. Outline. Course requirements Review of compiler structure Advanced issues in elementary topics The importance of optimizations Structure of optimizing compilers

yukio
Download Presentation

Introduction to Advanced Topics Chapter 1

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Introduction to Advanced TopicsChapter 1 Mooly Sagiv Schrierber 317 03-640-7606 www.math.tau.ac.il/~sagiv/courses/acd.html

  2. Outline • Course requirements • Review of compiler structure • Advanced issues inelementary topics • The importance of optimizations • Structure of optimizing compilers • Placement of optimizations • Advanced topics

  3. Course Requirements • Prepare course notes10% • Theoretical assignments 30% • Final home exam 60%

  4. Compiler Structure String of characters Scanner tokens Parser Symbol table and access routines OS Interface AST Semantic analyzer IR Code Generator Object code

  5. Advanced Issues inElementary Topics • Symbol table management(3) • Efficiency • Overloading • Type Inference • Intermediate Language Selection(4) • Run-Time Support(5) • Producing Code Generators (6)

  6. procedure BACH is procedure put (x: boolean) is begin null; end; procedure put (x: float) is begin null; end; procedure put (x: integer) is begin null; end; package x is type boolean is (false, true); function f return boolean; -- (D1) end x; package body x is function f return boolean is begin null; end; end x; function f return float is begin null; end; -- (D2) use x; begin put (f); -- (A1) A: declare f: integer; -- (D3) begin put (f); -- (A2) B: declare function f return integer is begin null; end; -- (D4) begin put (f); -- (A3) end B; end A; end BACH;

  7. Advanced Issues inElementary Topics • Symbol table management(3) • Efficiency • Overloading • Type Inference • Intermediate Language Selection(4) • Run-Time Support(5) • Producing Code Generators (6)

  8. Advanced Issues inElementary Topics • Symbol table management(3) • Efficiency • Overloading • Type Inference • Intermediate Language Selection(4) • Run-Time Support(5) • Producing Code Generators (6)

  9. Intermediate Language Selection • Low Vs. High level control flow structures • Flat Vs. Hierarchical (tree) • Machine Vs. High level of instructions • (Symbolic) Registers Vs. Stack • Normal forms (SSA) • Intermediate forms: Control Flow Graph, Call Graph, Program Dependence Graph • Issues: Engineering, efficiency, portability, optimization level

  10. LIR s2 s1 s4  s3 s6  s5 L1: if s2 >s6 goto L2 s7  addr a s8  4*s9 s10  s7+s8 [s10]  2 s2  s2 + s4 goto L1 L2: MIR v v1 t2  v2 t3  v3 L1: if v >t3 goto L2 t4  addr a t5  4*i t6  t4+t5 *t6  2 v  v + t2 goto L1 L2: IRs in the Book HIR for v v1 by v2 to v3 do a[i] :=2 endfor

  11. s21 s1 s4  s3 s4  s3 B1 B3 s7  addr a s8  4*s9 s10  s7+s8 [s10]  2 s23 s22 + s4 s22(s21 , s23) s22>=s6 N B2 Y Single Static Assignment Form (SSA) s2 s1 s4  s3 s6  s5 L1: if s2 >s6 goto L2 s7  addr a s8  4*s9 s10  s7+s8 [s10]  2 s2  s2 + s4 L2:

  12. Advanced Issues inElementary Topics • Symbol table management(3) • Efficiency • Overloading • Type Inference • Intermediate Language Selection(4) • Run-Time Support(5) • Producing Code Generators (6)

  13. Run-Time Support • Data representation and instructions • Register usage • Stack frames (activation records) • Parameter passing disciplines • Symbolic and polymorphic language support • Garbage Collection

  14. Advanced Issues inElementary Topics • Symbol table management(3) • Efficiency • Overloading • Type Inference • Intermediate Language Selection(4) • Run-Time Support(5) • Producing Code Generators (6)

  15. The Importance of Optimizations • One pass compilers produce slow code • Much of the time spent in loops • optimize loops • Machines can be simpler and faster if optimizing compilers are used (RISC, VLIW) • Programs are complex and general • Compilers need to be modular

  16. SPARC code ldw a, r1 ldw b, r2 add r1, r2, r3 stw r3, c ldw c, r3 add r3, 1, r4 stw r4, d Optimized SPARC code add r1, r2, r3 add r3, 1, r4 C code int a, b, c, d; c = a + b; d = c + 1; 2 cycles 10 cycles

  17. Application Dependent Optimizations • Functional programs • replacement of recursion by loops (tail-calls elimination) • replacement of heap by stack • Object Oriented Programs • Dead member elimination • Replacement of virtual by static function • Numeric Code • Database Code

  18. String String Scanner Scanner Tokens Tokens Parser Parser AST AST Semantic Semantic AST AST IR generator LIR generator MIR LIR Optimizer Optimizer MIR LIR Code generator Fin. assembly LIR Object Post. optimizer Object

  19. Mixed vs. Low Level Optimizers • Mixed • Sun-SPARC, Dec. Alpha, SGI-MIPS, Intel’s 386 • Easier to port • More efficient compilation? • Supports CISC • Low Level • HP-PA-RISC/IBM-Power PC • More efficient code • Conceptually simpler (in RISC) • Used for multiple programming languages

  20. Translation by Preprocessing • Some programming languages are translated into C • Elimination of includes, C++(cfront), Haskel • Quick and portable solution • C supports some indirect source level debugging • Other examples: Fortran into “vector” Fortran program

  21. Data-Cache Optimizations(20) String Scanner Tokens Parser AST Semantic HIR Data-cache optimizer MIR  Object

  22. String Scanner Tokens Parser AST Semantic AST LIR generator Low-to-High HIR=YIL LIR=XIL Data-cache optimizer Optimizer LIR HIR=YIL High-to-Low Fin. assembly Object IBM PowerPC compiler

  23. Outline • Review of compiler structure • Advanced issues inelementary topics • The importance of optimizations • Structure of optimizing compilers • Placement of optimizations • Advanced Topics

  24. Scalar replacement of array references Data-cache optimizations Procedure integration Tail-call elimination Scalar replacement of aggregates Sparse constant propagation Interprocedural constant propagation Procedure specialization and cloning Sparse conditional constant propagation Inline expansion Leaf-routine optimizations Instruction Scheduling 1 Register allocation Instruction Scheduling 2 Intraprocedural I-cache optimizations Instruction prefetching Data prefertching Branch predication Global value numbering Local and global copy propagation Sparse conditional constant propagation Dead code elimination Common Subexpression Elimination Loop invariant code motion Partial redundency Elimination Interprocedural register allocation Interprocedural I-cache optimization

  25. Scalar replacement after constant propagation c  B.x a 1 a= 1 N Y B.x 1.0 B.y  1.0 c read B.x read B.y B.x = 1.0 c Y N

  26. Scalar replacement before constant propagation d  B.x B.x  1.0 c  2 read B.y B.x = 1.0 d d N Y B.x  B.x + c d d

  27. Theoretically Open Questions • Picking the “right” order • Combining optimizations • Proving correctness

  28. Advanced Topics • Code Profiling • Parallelization and vectorization • Just in time compilation • Optimize for Power • Trusted compilers

More Related