Spring 2014: Computer Architecture
ECE/CS 250, TuTh 1:25PM - 2:40PM, CIEMAS Schiciano Auditorium
[Syllabus]
Computer structure, machine language,
instruction execution, addressing techniques,
and digital representation of data. Computer
systems organization, logic design,
microprogramming, and interpreters. Symbolic
coding and assembly systems. Prerequisite:
Computer Science 201 or consent of instructor.
Faculty
Professor Benjamin Lee
benjamin.c.lee@duke.edu
Office Hours: TuTh 2:40-4:00pm
Office: Hudson 210
Teaching Assistants
Heather Duschl
heather.duschl@duke.edu
Office Hours: W 2:00-4:00pm
Office: Hudson 161
Mohamed Ibrahim
mohamed.s.ibrahim@duke.edu
Yuxuan Li
lyuxuan@cs.duke.edu
Office Hours: M 4:00-6:00pm
Office: North 306
Undergraduate Teaching Assistants
Ruslan Ardashev
ruslan.ardashev@duke.edu
Section: 06D F 3:05-4:20pm
Office Hours: F 4:30-6:30 @ Link
Jeannie Chung
hojeannie.chung@duke.edu
Office Hours: F 3-5 @ Link
Chris Dee
christopher.dee@duke.edu
Section: 05D W 1:25-2:40pm
Section: 03D F 1:25-2:40pm
Office Hours: Th 7-9 @ Link
Xavier de Gunten
xavier.de.gunten@duke.edu
Section: 04D F 3:05-4:20pm
Office Hours: W 4:45-6:45 @ Hudson Cluster
Amanda Duffy
amanda.duffy@duke.edu
Section: 02D W 3:05-4:20pm
Office Hours: Tu 4-6 @ Link
Derek Eidum
derek.eidum@duke.edu
Section: 05D W 1:25-2:40pm
Office Hours: M 1-3 @ Teer Cluster
Rahul Harikrishnan
rahul.harikrishnan@duke.edu
Office Hours: F 3-5 @ Link
Jonathan Im
jonathan.im@duke.edu
Office Hours: F 1-3 @ Link
Eli Lichtenberg
eli.lichtenberg@duke.edu
Section: 02D W 3:05-4:20pm
Office Hours: Th 5-7 Link
Helio Liu
helio.liu@duke.edu
Section: 01D W 1:25-2:40pm
Section: 03D F 1:25-2:40pm
Office Hours: Tu 6-8 Hudson Cluster
David Spruill
david.spruill@duke.edu
Section: 04D F 3:05-4:20pm
Office Hours: W 6:30-8:30 @ Link
Bryan Yang
bryan.yang@duke.edu
Office Hours: M 5-7 @ Link
Discussion Forum
We will use Piazza for class discussion. This system is designed to
get you help, fast and efficiently, from your classmates, the TAs, and
myself. Rather than eamiling questions to teaching staff, you should
post your questions on Piazza.
Register and/or Login Here
Syllabus
Textbooks
D.A. Patterson and J.L. Hennessy. Computer Organization
and Design: The Hardware/Software Interface, 4th
Edition, Morgan-Kaufmann.
Kernighan and Ritchie. The C Programming Language, 2nd Edition (optional)
Grading
This course will require readings from the textbook, problem sets,
programming assignments, and one multi-part
project. Grades are assigned based on homework
(50%), midterm-1 (12.5%), midterm-2 (12.5%), and
final (25%).
Homework is assigned throughout the
semester. You are expected to complete the
homework individually unless otherwise
stated. However, you may discuss topics covered
in the class. There will be two midterms and a
cumulative final exam.
Deadlines will be enforced except under extreme
circumstances. Late submissions incur a 10%
penalty when <24 hours late, incur a 20% penalty
when 24-48 hours late, and receive no credit
when >48 hours late. Students should consider
turning in something not quite done on time
rather than turning in something after the
deadline. Start assignments and projects early!
Academic Policy
University policy, as codified by the Duke
Undergraduate Honor Code, will be strictly
enforced with zero tolerance for cheating and/or
plagiarism. If a student is suspected of academic
dishonesty (e.g., cheating on an exam, copying
code, collaborating inappropriately on an
assignment), faculty are required to report the
matter to the Office of Student Conduct. A
student found responsible for academic dishonesty
faces formal disciplinary action, which may
include suspension. A student twice suspended
automatically faces a minimum 5-year separation
from Duke University.
Schedule
Fall 2013 Videos | |
1/13 |
Introduction and Overview (slides) |
1/15-17 | Recitation -- C Programming (exercises) |
1/16 | C Programming (slides) |
1/21 | Data Representations, Memory (slides) |
1/23 | Data Representations, Memory II (slides) |
1/28 |
Instruction Set Architecture (slides) |
1/30 |
MIPS Instruction Set (slides) |
2/4 |
Assembly Programming (slides) |
2/6 |
Procedure Calls, Recursion (slides) |
2/17 |
Practice Midterm (pdf) |
2/18 |
Boolean Algebra and Logic Gates (slides) |
2/25 |
ALU and Storage Elements (slides) |
2/27 |
Finite State Machines (slides) |
3/3 | Datapath (slides) |
3/6 | Control (slides) |
3/18 | Caches (slides) |
3/27 | Caches and Performance (slides) |
4/1 |
Practice Midterm #2 (pdf) |
4/3 |
Main Memory (slides) |
4/8 | Virtual Memory (slides) |
4/10 | Exceptions and Interrupts (slides) |
4/15 | I/O (slides) |
4/17 | Pipelining (slides) |
Homework
Visit the Duke Sakai webpage for homework assignments.
Docs/Resources
Remote access to Linux machines.
We will use the Duke OIT Linux machines for portions
of this course. Please read
this document
on how to remotely access these machines.
Unix Tutorial
You should also go through this short tutorial on
Linux
File Access
You can use CIFS to access the files in your home directory. Please see
the OIT documentation on CIFS.
Tools -- Text Editors
-- nedit is a fairly simple GUI-based editor on the linux machines.
-- If you want to become a more sophisticated user of Linux editors you can explore gvim, vim, or emacs on your own.
Tools -- Compilers (gcc)
-- compilation: gcc -o newApp test.c
-- generate compile time warnings: gcc -Wall test.c
-- include debug symbols into the application: gcc -g -o newApp test.c
-- Introduction to gcc
Tools -- Debugger (gdb)
-- Documentation
-- GDB essentials
C Programming Language
-- Video snippets by Prof Drew Hilton (Duke ECE)
-- This is an MIT OpenCourseWare set of lectures that does a good job of
covering the basics for C programming.
C Programming Examples
-- C Memory Layout Example array as list
-- C Bit Manipulation bit manipulation of Hex to extract float fields or for a float input with casting via pointers extract float fields from float input .
MIPS Instructions
-- Assemblers, Linkers, and the SPIM Simulator (PDF).
-- A two page MIPS quick reference guide from MIPS is here.
-- A three page document from me with MIPS instructions is here.
SPIM: A MIPS32 Simulator
Download the appropriate binary for your platform from the SPIM web site.
Assembly Programming Examples
-- sum = sum + i*i is here.
-- sum array is here.
-- recursive sum array is here.
-- recursive sum i*i is here.
Logic Design Online Book
Pragmatic Logic
by William J. Eccles
Logic Design Tool
Logisim is a very nice tool
that runs on any platform (MAC, Windows, Linux). You can use this to design and test
circuits. Click through the download links until you arrive at the sourceforge.net
site and then look for the green download button, click that it should autodetect
your system so you get the right version.
Logisim
-- 8-bit Register File: compsci250.jar
-- Instruction memory initialization file: d_mem.hex
-- 8-bit ALU: ALU.circ