EECS 583: Advanced Compilers
Winter 2002
Syllabus
Schedule
MW, 3:30 - 5:30, 1012 FXB
Course Description
An in-depth study of compiler backend design for high-performance architectures. Topics include control-flow and data-flow analysis, classical optimization, instruction scheduling, and register allocation. Advanced topics include memory hierarchy management, optimization for instruction-level parallelism, modulo scheduling, predicated and speculative execution. The class focus is processor-specific compilation techniques, thus familiarity with both computer architecture and compilers is recommended.
References
Compilers: Principles, Techniques, and Tools, Alfred V. Aho, Ravi Sethi, and Jeffrey D. Ullman, Addison-Wesley, 1988.
Advanced Compiler Design & Implementation, Steven S. Muchnick, Morgan Kaufmann, 1997.
Building an Optimizing Compiler, Robert Morgan, Butterworth-Heinemann,1998.
Prerequisites
EECS 370, EECS 281, EECS 483 or a basic familiarity with compilers
Grade
Midterm Exam - 30%
Project - 40%
Homeworks - 15%
Class participation - 15%
Midterm exam - There will be 1 in-class (2 hour) exam after at about the 2/3 point of the class covering all material up through register allocation. The exam will be open book/notes.
Project - The class will be broken down into 4 special interest groups (see below). Each group will define a couple of projects related to the topic of their group. The projects will consist of designing and implementing an advanced compiler technique within the Trimaran compiler infrastructure. A report describing the project should be submitted along with a brief presentation and/or demonstration of the resulting implementation.
Homeworks - Three programming assignments will done throughout the semester. Each will focus on one particular aspect of the compiler. The expected homework topics are control flow analysis, classical optimization, and instruction scheduling. Each homework will consist of implementing a particular technique within the Trimaran compiler system and showing its operation on several test programs.
Class participation - Students are encouraged to take an active role in this class by asking questions or providing comments. Each student will have the opportunity to present a research paper of their choosing to the class.
Special interest groups
The SIG meetings are intended to be discussion groups in which we will go into more depth about one particular aspect of compiler backends. You should come prepared to discuss things and participate in the discussion. Each group will identify several topics within their specific category to investigate. We will identify relevant papers to be read and presented to the rest of the class. The groups will also define the projects they wish to do and partition the work amongst the members.
Schedule
Week 1 - Jan 7, 9
Mon - Course
introduction, overview of EPIC architectures
Wed - Basic
control flow analysis
Week 2 - Jan 14, 16
Mon - EPIC
architectures, explicit parallelism, predicated execution, speculative
execution, rotating registers
Wed -
Advanced control flow analysis, control dependences, if-conversion
Week 3 - Jan 21, 23
Mon - MLK
holiday
Wed -
Overview of the Trimaran compilation infrastructure, installation, usage, basic
data structures
Week 4 - Jan 28, 30
Mon - Region
creation, trace selection, superblock formation, hyperblock formation
Wed - Basic
dataflow analysis, liveness, reaching definitions
Week 5 - Feb 4, 6
Mon -
Advanced dataflow analysis, backward/forward dataflow, def-use chains,
availability
Wed -
Classical optimizations, local, global, loop
Homework 1
due, Sunday February 10, 11:59PM EST
Week 6 - Feb 11, 13
Mon -
Analysis of predicated code - predicate relation analysis, predicate-sensitive
dataflow analysis
Wed -
Optimizations for instruction-level parallelism
Week 7 - Feb 18, 20
Mon - Machine
descriptions and dependence graphs
Wed -
Instruction scheduling for a basic block
Week 8 - Feb 25, 27 - No class, spring break
Week 9 - Mar 4, 6
Mon -
Superblock scheduling, models for control speculation, trace scheduling
Wed - Basics
of software pipelining innermost loops
Week 10 - Mar 11, 13
Mon -
Software pipelining implementation
Wed -
Register allocation
Homework 2
due, Friday March 15, 11:59 PM EST
Week 11 - Mar 18, 20
Mon - Group 1
student presentations (control flow analysis and optimization)
Wed - Group 2
student presentations (dataflow analysis and optimization)
Week 12 - Mar 25, 27
Mon - Exam
in class
Wed - Group 3
student presentations (scheduling, register allocation, and code generation)
Week 13 - Apr 1, 3
Mon - Group 4
student presentations (memory optimization)
Wed - Group 1
student presentations (control flow analysis and optimization)
Week 14 - Apr 8, 10
Mon - Group 2
student presentations (dataflow analysis and optimization)
Wed - Group 3
student presentations (scheduling, register allocation, and code generation)
Homework 3
due, Friday April 12, 11:59 PM EST
Week 15 - Apr 15, 17
Mon - Group 4
student presentations (memory optimization)
Wed - Class
wrap up, perspectives, research opportunities
Week 16 - Apr 22-26 (schedule
appointment)
Final project
presentations and demos