ECE 66300 - Compiler Code Generation, Optimization, and Parallelization

Credits: 3

Areas of Specialization(s):

Computer Engineering

Counts as:

Normally Offered: Spring - even years

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.

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