ECE 66300 - Advanced Compilation And Automatic Programming
Course Details
Credits: 3
Areas of Specialization:
- Computer Engineering
Counts as:
Normally Offered:
Spring - even years
Campus/Online:
On-campus only
Requisites:
ECE 56500, CS 50200 or ECE 46800 or ECE 57300.
Requisites by Topic:
Fundamentals of compilers and computer architecture; experience building applications using a modern programming language
Catalog Description:
This course presents the concepts needed to design and implement production quality code generators for any of the more popular languages and families of computer architecture (including various pipelined and macro-parallel machines). Flow analysis and concurrency detection, as well as optimizations and loop and irregular code parallelizations, are covered in detail. Using C on ECN UNIX, each student will complete a project implementing a simple optimizer/parallelizer.
Required Text(s):
None.
Recommended Text(s):
None.
Learning Outcomes
A student who successfully fulfills the course requirements will have demonstrated an ability to:
- Apply automated reasoning techniques and tools to analyze and verify programs and reactive systems.
- Explain and implement program synthesis algorithms and methodologies.
- Apply program synthesis techniques to automate programming tasks in an application domain.
Lecture Outline:
| Lectures | Topic |
|---|---|
| 3 | 1. How a computer understands a program: manual compilation of control constructs, assignments & expressions, calls; interpreters |
| 1.5 | 2. Embedded code generators: notes |
| 1.5 | 3. Forward references: backpatching, multiple-passes, and SDI problems |
| 3 | 4. What kind of code to generate: decomposition concept, classical intermediate forms, pseudo- code models, interpretation |
| 4 | 5. Simple code improvements: simple insights, where to make improvements, constant folding, "peephole optimizations," Sethi-Ullman numbering, commutativity, evaluation modes, library optimizations |
| 4 | 6. Compiler's view of computer architecture: classical "optimization," use of hardware parallelism (MIMD, SIMD VLIW, vector/array, pipelined, & systolic). |
| 1 | 7. Introduction to flow analysis |
| 2 | 8. Basic block code improvement: classical "optimization," use of hardware parallelism |
| 1 | 9. Basic block analysis: concepts, value numbering |
| 3 | 10. Implementation of basic block optimizer/parallelizer |
| 3 | 11. "Global" code improvement: the cost of blocks, classical optimizations |
| 5 | 12. "Global" parallelization: loop transformations, transformations of irregular code |
| 2 | 13. Global" analysis: value/variable bindings, reaching, dependence analysis |
| 2 | 14. Implementation of "global" optimizer/parallellizer: linear nested regions, simplification for structured languages |
| 6 | 15. Project discussions (dispersed throughout term) |
| 3 | 16. Exams |
Assessment Method:
none