ECE 152 

Computer Architecture

Spring 2008
Professor Daniel J. Sorin

                  

 Objectives
The objective of this course is to learn how computers work, focusing on how the computer hardware executes the software. 
The course focuses on instruction sets, computer arithmetic, processor design, memory system design, and input/output.  A major component
of the course will be a group project in which each team of students will design and build a computer in real hardware and then run programs on it.
Prerequisites: ECE 52 (or ECE 151) and the ability to program in a high-level language (C, C++, or Java)
Class Location and Hours

 

Class meets Monday/Wednesday/Friday from 10:20am - 11:10am.

Location: 207 Hudson Hall

 Instructor, Teaching Assistant, and News Group

 

This is a large class, which means that students should contact other sources of information before, if necessary, contacting the professor.

 

* The first option for finding help is this website.

* The second option for finding help is the group of teaching assistants for this course.  Either email them (via the course's Google group) or go to their office hours. Questions on the Google group may get answered by a TA, a fellow classmate, or the professor.

Undergraduate Teaching Assistants:

    Michael Bauer (meb26 AT ee DOT duke DOT edu) 
         office hours: Tuesday 10:30-11:30am at Teer Basement

    Pat Eibl (pje2 AT ee DOT duke DOT edu): 
         office hours: Wednesday 11:30am-12:30pm at Teer Basement

    Philip Ethier (pde AT ee DOT duke DOT edu)
         office hours: Wednesday 2:45-4pm at Hudson 202A (the ECE 154 lab)

    Andrew Waterman (asw9 AT ee DOT duke DOT edu)
         office hours: Monday 4:15-5:30 at 202A Hudson

 

* If you need to contact the professor, please email him or come to his office hours:

Professor Daniel J. Sorin

Office: 209C Hudson Hall

Office Hours: Thursday 2-3pm, Friday 11:10am-noon (right after class)

Email: sorin AT ee DOT duke DOT edu (email subject must begin with ECE152)

Required Textbook
David A. Patterson and John L. Hennessy. Computer Organization and Design: The Hardware/Software Interface, 3rd edition, Morgan-Kaufmann, August 2004.
 Assignments and Grading
This course will require readings from the textbook, pencil and paper problems, programming assignments, and one multi-part project.

Students are responsible for:

Deadlines will be enforced except under extreme circumstances. Anything turned in late will incur a 10% penalty per day late (e.g., from due date until 24 hours late is 10% off). I would prefer that you turn in something not quite done on the due date rather than waiting until after the deadline to try to finish it. 

Start assignments and projects EARLY so that you don't get stuck at the end!

Academic Misconduct: I will not tolerate academically dishonest work.  This includes cheating on the homework, project, and exams.  
This course has historically had a high incidence of academic misconduct cases which have led to academic suspension and expulsion. 
Refer to the Duke Undergraduate Honor Code or to the instructor if you have any questions about misconduct.
 Topics, Lecture Notes, and Reading Assignments

I will post lecture notes (in PDF format) shortly before I cover them in class.  Please bring them to class. Click on topic title for link to notes.

Do not think that you can read the notes instead of attending class.  You will miss a LOT of course material if you miss class.

Topic Reading Assignments
Course Introduction and Overview
     lecture notes #1 (Jan 9)
     lecture notes #2 (Jan 11)
Chapter 1
Instruction Sets and Assembly Programming
     lecture notes #3 (Jan 14)
     lecture notes #4 (Jan 16)
     lecture notes #5 (Jan 18)
     lecture notes #6 (Jan 23)
Chapter 2 (and some excerpts from Appendix A)
Computer Arithmetic and ALU Design
     lecture notes #7 (Jan 28)
     lecture notes #8 (Jan 30)
     lecture notes #9 (Feb 1, 4)
     lecture notes #10 (Feb 4)
     lecture notes #10b (Feb 4, 6)
Chapter 3
Processor Design: Datapath and Control
     lecture notes #11 (Feb 6)
     lecture notes #12 (Feb 8, 11, 15)
Chapter 5
Pipelined Processors
     lecture notes #13 (Feb 18)
     lecture notes #14 (Feb 20)
     lecture notes #15 (Feb 22)
Chapter 6
Memory and Caches
     lecture notes #16 (Feb 25, 27)
     lecture notes #17 (Mar 5)
     lecture notes #18 (Mar 7)
     lecture notes #19 (Mar 17)
     lecture notes #20 (Mar 19)
     lecture notes #21 (Mar 21)
     lecture notes #22 (Mar 24)
     lecture notes #23 (Mar 26)
     lecture notes #24a (Apr 2)
Chapter 7
I/O
     lecture notes #24b (Apr 2)
     lecture notes #25 (Apr 7,9)
Chapter 8
Performance and Advanced Topics
     lecture notes #26 (Apr 9)
Chapter 4 (plus some other material)
Homework Assignments

Homework #1 (Introduction / Chapter 1), due Mon, Jan 28 in class

Homework #2 (ISAs / Chapter 2), due Mon, Feb 11 in class

Homework #3 (Arithmetic / Chapter 3), due Fri, Feb 22 in class

Homework #4 (CPU / Chapter 5), due Fri, Mar 7 in class

Homework #5 (Pipelining / Chapter 6), due Fri, Mar 21 in class

Homework #6 (Cache & Memory), due Mon, Apr 7 in class

Homework #7 (I/O / Chapter 8), due Fri, Apr 18 in class

 Project

The project for this class will be performed in groups of 2, and it has multiple parts. The end products will be:

The Duke 152/16 architecture's specification

I have subdivided this project into smaller parts that will be due throughout the semester.

Part 1: Register File and Finite State Machine (75 points), due Weds, Jan 23

Part 2: 16-bit CLA/CS Adder (100 points), due Monday, Feb 18

Part 3: Integer ALU (75 points), due Monday, Feb 25

Part 4: Memory (25 points), due Friday, Mar 7

Part 5: Unpipelined 5-Cycle Processor (200 points), due Wednesday, Mar 26

Part 6: Pipelined 5-Stage Processor (200 points), due Wednesday, Apr 9

Part 7: The Whole Enchilada (200 points), due Weds, Apr 23

 
 Schedule

This is a VERY tentative schedule which may change depending on time constraints and which days the instructor will be out of town.

Week

Monday

Wednesday

Friday

Jan 7

 

Intro/Overview (Ch 1)

Intro

Jan 14

Intro

Instruction Sets (Ch 2) Instruction Sets
Jan 21

MLK DAY

Instruction Sets Instruction Sets
Jan 28 Instruction Sets Computer Arithmetic (Ch 3)

Computer Arithmetic

Feb 4 Computer Arithmetic
(extended class: 10:05-11:20)
Computer Arithmetic
(extended class: 10:05-11:20)

Computer Arithmetic
instructor: Fred Bower

Feb 11 Computer Arithmetic
instructor: Anita Lungu

no class - out of town

Processor Design (Ch 5)

Feb 18

Processor Design

Processor Design

Processor Design
Feb 25 Processor Design Pipelining (Ch 6) review for Midterm
Mar 3

Midterm

Pipelining  Pipelining
Mar 10

SPRING BREAK

Mar 17 Pipelining Pipelining Memory Systems (Ch 7)
Mar 24 Memory Systems Memory Systems Memory Systems
Mar 31 Memory Systems Memory Systems Memory Systems
Apr 7 Memory Systems

I/O (Ch 8)

I/O
Apr 14 I/O Performance (Ch 4) Performance
Apr 21

Advanced Topics

Advanced Topics

Reading Period

Apr 28

--------  EXAM WEEK  --------