Instructor

Dr. James Tuck

Dr. James Tuck

Electrical and Computer Engineering

Phone: 919-513-0923
Email: jtuck@ncsu.edu
Instructor Website

ECE 566 Compiler Optimization and Scheduling

3 Credit Hours

Provide insight into current compiler designs dealing with present and future generations of high performance processors and embedded systems. Introduce basic concepts in scanning and parsing. Investigate in depth program representation, dataflow analysis, scalar optimization, memory disambiguation, and interprocedural optimizations. Examine hardware/software tade-offs in the design of high performance processors, in particular VLIW versus dynamically scheduled architectures. Investigate back-end code generation techniques related to instruction selection, instruction scheduling for local, cyclic and global acyclic code, and register allocation and its interactions with scheduling and optimization.

Prerequisites

In order to take this class, you must have:

–completed Computer Systems Programming (NC State ECE 209) or demonstrated competence in any machine programming language OR

–completed  Data Structures (NC State ECE 309 or CSC 316) or deonstrated competence with programming data structures and object oriented programming OR

–proficiency in either C or C++ programming using advanced data structures, like hash tables and linked lists.

Course Objectives

  • Provide insight into current compiler designs dealing with present and future generations of high performance processors and embedded systems.
  • Describe the parts of a compiler and what they do: frontend, middle-end, and back-end.
  • Describe dataflow analysis, optimizations, classical and parallelism enhancing optimizations, instruction scheduling, and register allocation; manually apply them to programs.
  • Implement a simple compiler and compiler optimizations in LLVM (llvm.org).

Course Requirements

Homework 20%
Projects 40%
Exams 40%

Textbooks

–Primary course content will be available in the form of course notes available on the webpage.

Engineering a Compiler, Second Edition, by Keith Cooper and Linda Torczon, Morgan Kaufman Publishers, ISBN: 1-55860-698-X.

          **The bookstore is making online versions of the book available for purchase.  These will also be acceptable.

Computer and Software Requirements

Please review minimum computer specifications recommended by NC State University and Engineering Online.

Software: We will use the LLVM compiler extensively. It is open source and can be obtained for most platforms directly from the maintainers. Remote access through NC States Virtual Computing Lab will be provided for ease of use.
If students wish to install it on their own systems, it will be made available in the form of a Docker container running an Ubuntu image. Instructions for installation and use will be provided.  For Windows users, Windows 10 Pro or Windows 10 Educational is recommended to ensure Docker installs and runs properly.

 

Updated 11/10/2020