Advanced Compiler Design • Course Home Page

Advanced Compiler Design • Course Home Page

Administrivia • Instructor: – Kostis Sagonas (MIC, Hus 1, 352) Advanced Compiler Design • Course home page http://user.it.uu.se/~kostis/Teaching/KT2-12/ • If you want to be enrolled in the course, you have to send, by January 20th, a mail with your name and your UU e-mail address to: Introduction to Optimizing Compilers, [email protected] Virtual Machines and Runtime Systems Advanced Compiler Design 2 Course Goals Course Goals and Requirements • Familiarize yourself with the theoretical basis of Non-Goals: advanced compiler optimizations • Overview all possible compiler optimizations • Give you a general orientation on the map of compiler • Cover compilation techniques for parallelism/multicores optimization techniques • Give you a general understanding of Requirements: – how some modern programming language features and constructs are implemented • You are supposed to be familiar with basic programming – the tradeoffs that are involved in including some feature in a language implementation concepts modern programming language or not – In particular, with semantic analysis and code generation – However, these topics will not be needed in this course! • You are supposed to know how to program in a high- level language (esp. in some functional language) Advanced Compiler Design 3 Advanced Compiler Design 4 Course Content Course Structure • Static analysis and optimization • Course has theoretical and practical aspects – Need both in modern optimizing compilers! – Theory for Static Analysis – Optimization Algorithms • Lectures get you up-to-date with various topics and • Implementation techniques for high-level the state-of-the-art in programming language languages implementation. – Memory Management (aka Garbage Collection) • Project (can be done in groups of 2 or 3) – Virtual Machines & Bytecode Interpreters – get you exposed with the real issues that need to be – Just-in-time (JIT) Compilers addressed when implementing a compiler optimization – teach you how to plan the development and testing of a – Feedback-Directed Compilation non-trivial piece of software – teach you how to perform a serious performance evaluation. Advanced Compiler Design 5 Advanced Compiler Design 6 1 Course’s Literature Course Syllabus (Tentative) • Introduction to advanced compiler design • Using static analysis for global optimization Slides of • Foundations of static analysis and abstract lectures interpretation posted on • Static Single Assignment (SSA): Construction and Use the web • Global register allocation • Automatic memory management • Virtual machines and interpretation techniques – Just-in-time (JIT) compilers • In addition to lecture slides, various papers from the recent – Dynamic and feedback-directed compilation research on programming language design and implementation will be available at the course’s homepage • Implementation of Object Oriented Languages • Implementation of Garbage Collectors for Java • These handouts are required reading Advanced Compiler Design 7 Advanced Compiler Design 8 Introduction to Compiler Optimization Taxonomy of Global Compiler Optimizations • The most important aspect of a compiler optimization is that the program remains correct Machine Independent • The terminology is confusing and misleading: – Global means function-local – Optimization means improvement - Compilation time vs. runtime speedup is often a factor to take Redundancy Code motion Useless code Create opportunities Specialization into account Redundancy Elimination Dead Code Elimination Replication • The next slides try to give you a taxonomy of some Partial Redund. Eliminat. Partial D.C.E. Strength Reduction common compiler optimization techniques Consolidation Constant Propagation Constant Propagation Algebraic Simplification Method Caching Loop-invariant Code Motion Re-association Inline expansion Consolidation Replication Heap →stack allocation Global Scheduling Inline expansion Tail Recursion Elimination Constant Propagation Advanced Compiler Design 9 Advanced Compiler Design 10 Taxonomy of Global Compiler Optimizations Why is this course interesting? • Optimization is a very challenging problem —you can Machine Dependent not write an ideal compiler: there is always room for improvements • The course will teach you many techniques and tools that you can use in other areas Hide Latency Manage Resources Special features • You will gain a better understanding of how a compiler works and what to expect of the code generated by Scheduling Register allocation Instruction selection compilers Prefetching Scheduling Peephole optimization Code layout Data packing • You will learn how to work with a code base which is Data Packing Coloring memory locations too big for a single person to grasp and you learn how to do test-based development and perf. evaluation • It is fun! Advanced Compiler Design 11 Advanced Compiler Design 12 2.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    2 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us