ENEE 759C: Compilers for Modern Architectures and Embedded Systems

Course Goals: 

To understand the fundamental technologies needed to target compilers to different kinds of modern general-purpose and embedded computing systems.

Class times:

Mondays and Wednesdays, EGR 0135


Prof. Rajeev Barua, ECE department
Room: AVW 1431.
Email: barua@eng.umd.edu

Office hours with Prof. Barua:

Office hours: Wednesdays, 1:00-1:45pm, in AVW 1431.

Phone only hours: Friday 9:30am-12:30pm at (240) 683-8966.  If this is long distance for you, after you call, I can call you back to save you on phone charges (long distance is free for me.)

Course Prerequisite(s): 

ENEE 446 or ENEE 646 or equivalent.

Topics Prerequisite(s): 



Andrew Appel, Modern Compiler Implementation in C, Cambridge University Press, 1998. (You can also get a later reprint of the book.  There is only one edition of this book, so it is not possible to get the wrong one.)


Research papers referred to will be available online or distributed.


Introduction to compiler technology
Survey of architectures from a compiler standpoint. 

Background material:

Control flow graphs
Control flow optimizations
Program dependence graphs
Data flow analysis
Data flow optimizations
Static single assignment form

 Survey topics may include:      

Compilers for Architecture support:
    Instruction scheduling for VLIWs  
    Compilers for vector machines 
    Compiling multi-media applications    
    Compiling applications into silicon
    Software speculative pre-computation

Compilers for Embedded systems:
     Memory allocation
     Code-size minimization
     Power measurement and optimizations
     Compiling for network processors
     Design-space exploration
     Synchronous dataflow

Compilers for language support
   Dynamic code generation and JIT compilers
   Optimizations in Java virtual machines
   Object-oriented compiler optimizations 
   Program analysis tools

Compilers for Security and Reliability
     Defending against malicious attack
     Enforcing security policies for applications 
     Ensuring memory safety
     Ensuring code safety 



Course Structure: 

In the first approximately 12-15 lectures, the instructor will present background material in compiler technology.  A quiz in early march will test this background material.  The remaining lectures will center around one student presentation in each lecture.  Each presentation will be on one main research paper and a few secondary (or supporting) papers among a list of papers given by the instructor.   Each student will present one paper in the course.  Half-page written reports that summarize the main paper will be required for the student presentations only. These should be submitted on the day of the presentation at the start of class. Late submissions will not be accepted. An end-of-semester course project will involve using the SUIF compiler infrastructure.

Attendance requirement:

Since there are no exams beyond the quiz in early March, I have seen in the past that attendance tends to drop off after that for some students.  To ensure that everyone learns from the class, there will be an attendance requirement for classes in which student presentations are made.  No more than one missed lecture will be allowed for full attendance credit, except in special pre-requested and pre-approved circumstances such as conference travel, religious holidays, or documented illness.

Grading Method:

Classroom presentation                                               30%
Homeworks                                                                 10%
Examination                                                                 20%
SUIF project                                                                15%
Attendance                                                                   15%
Half-page written reports (described above)              10%

| Dept. of Electrical & Computer Engineering | A. James Clark School of Engineering | University of Maryland |