Welcome! CMU 15-745 Fall 2009, "Optimizing Compilers for Modern Architectures."



Basic Information

The course is being taught by Professor Seth Copen Goldstein. The course administrator is Heather Carney. For office hours, locations, email, etc. see the general information page.

Lectures are Monday/Wednesday/Friday 1:30 p.m. - 2:50 p.m in 4615A Wean Hall. There are no regular recitations scheduled.


The compiler is the programmer's most important tool. It gives the programmer the freedom to write practical programs in a high-level programming language while still achieving good execution times and efficient use of space. In fact, compilers are so important that new computer architectures are developed in tandem with new compiler technology. It is only slightly overstating the case to say that much of today's advances in computer architecture are driven by compilers. Furthermore, new architectures are never sold without a companion compiler. This means that for just about every computer architecture company, one of the most effective ways to increase sales is to produce a better optimizing compiler, thereby increasing the claimed performance of the new processor architecture.

In this course, we will study the fundamentals of compiler optimization, and will build upon these fundamentals to address issues in state-of-the-art commercial and research machines. Topics include: intermediate representations, basic blocks and flow graphs, data flow analysis, dependence analysis, partial evaluation and redundancy elimination, loop optimizations, register allocation, instruction scheduling, interprocedural analysis, memory hierarchy optimizations, extracting parallelism, and dynamic optimizations. Students will implement significant optimizations within the framework of a modern research compiler.

Top General Info Schedule Projects Assignments Papers Useful Info