CS641 - Computer Architecture

Spring, 2011


Official Description: An examination of the designs for hierarchical memory systems including caches and virtual memory systems, pipeline design techniques, characteristics of RISC/CISC machines, multi-computer systems including multiprocessors and loosely-coupled computer systems, the micro engine and microprogrammed machines, vector and array processors, and the cost/performance trade-offs in all of the above designs

Professor: Betty O’Neil  (eoneil at cs.umb.edu,)

Class meets MW 5:30-6:45

Prerequistes: 
CS310 and its prerequisite, CS240, i.e. Java programming and C programming, data structures.

Syllabus

Textbook: Computer Organization and Design: The Hardware/Software Interface, Fourth Edition by David A. Patterson, John L. Hennessy partial ebook (chapter 1)  materials and errata

First week (Jan. 24, 26):
Get a UNIX/Linux account for cs641 by running apply in S/3/158, even if you already have a UNIX/Linux account here. This account is used for delivery of projects. Set up an email forwarding file if you want to avoid reading email at our site.  Start on hw1.
Mon., Jan. 24 notes Intro, RISC vs. CISC
Wed., Jan. 26 notes Intro to MIPS assembly language handout: SPIM screenshot
Mon., Jan. 31 notes MIPS assembly language handouts: String Processing Example 1/31/11, MIPS Cross Compiler Setup and First Example (P&H so far: 1.1-1.3, 2.1-2.3, 2.6, 2.7, 2.9, B.9, B.10)
Wed., Feb. 2 University closed.(hw1 is still due Thurs, Feb. 3)
Mon, Feb. 7 notes
Function Calling and Stack Usage. Handout: Assembler Function Examples (also see Calling Conventions doc linked below) (Sec. 2.8)
Wed., Feb. 9 notes Logical Operations (Sec 2.6), Sort Example (Sec. 2.13, 2.14)
Mon., Feb 14 notes Floating Point representation, example of code (
Sec. 3.5 pp. 242-250, 259-266) Handout
Wed., Feb 16 notes Signed and Unsigned Numbers (Sec. 2.4),
Instruction formats (Sec. 2.5) handout
Mon., Feb. 21 Holiday
Wed., Feb 23 notes Building C Programs (Sec. 2.12, B1.-B.4) handout, Memory Hierarchy, Direct-Mapped Cache (Sec. 1.3,. 5.2)
Mon, Feb. 28 notes Cache-Memory Interface (Sec.5.1, 5.2, start on 5.3)
Wed., Mar. 2 notes Cache Performance (Sec. 5.3), Start on Multi-cores (Sec. 1.5, 1.6, start on 7.1)
Mon. Mar 7 notes Parallel Processing (Sec 7.2), Multicores, Clusters (Sec. 7.4), SIMD, GPUs (Sec. 7.7, A.2), start on SMP (Sec. 7.3)
Wed., Mar 9 notes SMP (Sec. 7.3) (handout) (also see Mandelbrot links below), intro Cache Coherence (Sec. 5.8)
Mon., Mar 21 notes Synchronization (Sec. 2.11) (handout, code), start on Logic Circuits (not on midterm)
Wed., Mar 23 notes Combinational Logic Circuits (demo image)
Mon., Mar. 28 notes Midterm Review (hw4 #6 memtest results)
Mon., Apr. 4 notes. Start on Sequential Circuits (see Syllabus for handouts)
Wed., Apr. 6 notes Sequential Circuits, FSMs.
Mon., Apr. 11 notes Sequential Circuits
Wed., Apr. 13 notes Intro Verilog (handout), MUXs, ALUs
Wed., Apr. 20 notes Finish adder, more on Verilog
Mon., Apr. 25 notes Verilog registers, accumulator, FSMs, netlists (handout)
Wed., Apr. 27 notes Simple ALU in Verilog, register files, start on Chap. 4
Mon., May 2 notes The CPU: single-cycle design, pipelined design (Sec. 4.1-4.4, start on 4.5)
Wed., May 4 notes Tiny computer in Verilog (handout), pipelining (Sec. 4.5-4.8)
Mon, May 9 notes Branch Prediction (handout) (Sec. 4.8, 4.10, 4.11)
Wed., May 11 notes Review

Final Exam: Mon, 5/16, 6:30 (6:05 if possible) M-1-612:on material since we started on circuit theory

------

Assignments

hw1 due Thurs, Feb. 3 by midnight in your cs641/hw1 directory. Getting started on MIPS assembly language hw1 solution
hw2 due Tues., Feb. 15 by midnight in your cs641/hw2 directory. Calling functions, understanding call frames. Note: if the mips-gcc generated code is hard to follow, just write your own MIPS assembler code. hw2 solution
hw3, due Mon., Feb 28 Bit fields, floating point rep, instruction formats hw3 solution
hw4, due Mon, Mar. 21 Caching  hw4 solution
hw5, due Mon, Apr 11 Combinational Circuits, R-S Flipflop hw5 solution
hw6  due Wed., Apr. 20 Sequential Circuits hw6 solution
hw7 due Mon, May 2 Verilog hw7 solution
hw8 due Wed., May 11 Pipelining hw8 solution (updated Mon, 10:30am, re problem 4.22)
--------

Resources

PCSpim download The new version of PCSpim is called QtSpim on the download page, but same old pcspim.exe when downloaded to a PC. It is also available for Linux from the same download page, but not yet for MacOSX. First program: hello.s
programs countstring.s countstring1.s countstring2.c countstring2.s

MIPS (gcc) Calling Conventions
MIPS32 at MIPS
MIPS32 Processor Manual

sf06's processor: The AMD Opteron Processor for Multiprocessor Servers

Multithreading example: Mandelbrot fractal image  (source) (applet) (1000x400 image)
Mandelbrot image generator in Javascript, allowing zoom-in to clicked point (thanks to Hans Lo for finding this!)

Simple Digital Logic Simulator: http://logic.ly/demo/

Verilog Tutorials: Strozek (Harvard CS141) Wawrzynek (UCBerkeley CS61c)
Icarus Verilog Download: Windows Installation Guide (including Linux) User Guide (with Getting Started, etc.)