Syllabus: ECEN 5593 Advanced Computer Architecture
Tuesday, Thursday 12:30-1:45, Room ECCR 150


Manish Vachharajani
Office: ECOT 342
Phone: (303)492-0612

Fall 2009 Office Hours, TBD or by appointment.


This course will cover the design of advanced microprocessors and computing systems. Topics will include pipeline processor design, superscalar processor design, out-of-order execution, simultaneous multithreading, memory subsystem design and basic multiprocessor system design. The course will present each design concept from the perspective of application performance and chip-design considerations (complexity, clock-rate, etc.). At the conclusion of the course students should be able to optimize C code for improved performance on modern processors as well as appreciate the design challenges faced by today's computer architects.

Who can benefit?

Anyone who is interested in understanding modern high-performance processor and multiprocessor design, and anyone interested in understanding the issues involved in programming them efficiently.


Textbook: Computer Architecture: A Quantitative Approach by John Hennessy and David Patterson. Morgan-Kaufmann, Publishers, Inc. 4th Edition


ECEN4593 or equivalent experience or course. A good understanding of C and assembly language programming.


Participation in lectures and discussions - 10%
Assignments - 10%
Exams - 50%
Final project - 25%
Final project presentations - 5%
(Note: final percentages are subject to change)


Each week there will be two interactive lecture sessions. Students will be asked to participate in lecture by answering questions and discussing solutions to the design problems presented. Participation in lecture is 10% of your final grade, so attendance is important!


Assignments in the course will consist of readings, written exercises, and programming assignments. Parts of the assignments will foreshadow techniques that will be discussed in class. It is important to complete assignments on-time since they will enable you to better participate in class (see the late policy below).

Final Project

The final project in the course will require students to study some aspect of processor design or program performance. The project may investigate properties of existing technology or examine novel concepts. Students are encouraged to craft their own projects, but a yet-to-be-determined standard project will also be an option..

For the final project students will be asked to work in small groups (2-4 students).

The final project submission will be a report and a presentation that clearly explains the study and relevant results. Very high-quality projects that examine novel concepts should have a report suitable for submission to an appropriate workshop or conference. Students will receive periodic feedback on their projects before final submission to ensure that they are of high quality.


There will be a mid-term and final examination that covers the material covered in lectures, assignments.


Students are encouraged to discuss readings, assignments, and projects, but all assignments must be original work with proper citation of outside sources of information. For programming assignments, code sharing is not allowed. Code sharing policies between final project groups must be discussed with me before-hand. Also, please refer to the University of Colorado Honor Code.

Late assignments will be accepted under the following conditions. If prior arrangements are made, the assignment will be accepted with the discussed terms. If an assignment is submitted late, any portion of the assignment whose solution was discussed in class (even indirectly) before the assignment was submitted, will receive no credit. If an assignment is submitted late, any portion of the assignment for which grading has already been completed will also recieve no credit.


I encourage you to make at least one appointment with me during the semester for advice or to discuss research opportunities, research ideas, course suggestions, concerns, or any other topic you feel is appropriate.