Wk Date Lecture Topic Reading Section Lab Assignment Due
1
01/20 Tu Intro, Number Representation (4th) P&H: 2.4
(5th) P&H: 2.4
Binary slides
Section 0: Number Representation Lab 0: Intro, git, Number Rep
HW0: Intro and Number Representation
Due 02/01 @ 23:59:59
01/22 Th C Intro, Pointers B. Harvey's Intro to C
K&R Ch. 1-5
2
01/27 Tu C Arrays, Strings, Pointers K&R Ch. 5-6
C Reference Slides
Section 1: C Basics Lab 1: C and GDB
01/29 Th C Memory Mangement, Usage K&R: 7.8.5, 8.7
3
02/03 Tu Intro to Assembly Language, MIPS Intro (4th) P&H: 2.1-2.3
(5th) P&H: 2.1-2.3
Section 2: C Memory Management and MIPS Intro Lab 2: Advanced C, Memory Management
HW1: C (Build git Part I)
Due 02/08 @ 23:59:59
02/05 Th MIPS, MIPS Functions (4th) P&H: 2.6 - 2.9, 2.10 (only p.128-129), B.6
(5th) P&H: 2.6 - 2.9, 2.10 (only p.111-113), A.6
4
02/10 Tu MIPS Instruction Formats (4th) P&H: 2.5, 2.10
(5th) P&H: 2.5, 2.10
Section 3: MIPS II / Instruction Formats Lab 3: MIPS Assembly
HW2: Advanced C (Build git Part II)
Due 02/15 @ 23:59:59
02/12 Th Compiler, Assembler, Linker, Loader (CALL) (4th) P&H: 2.12, B.1-B.4
(5th) P&H: 2.12, A.1-A.4
5
02/17 Tu Intro to Synchronous Digital Systems (SDS), Logic SDS Handout
Logic Handout
(4th) P&H: C.2-C.3 (on CD)
(5th) P&H: B.2-B.3
Section 4: MIPS Procedures / CALL Lab 4: MIPS Functions, Pointers
Project 1, Part 1: C and MIPS
Due 03/01 @ 23:59:59
 
HW3: C to MIPS Practice Problems
Ungraded (Solution)
02/19 Th Functional Units, FSMs Blocks Handout
(4th) P&H: 4.2, C.3-C.6 (on CD)
(5th) P&H: 4.2, B.3-B.6
State Handout
6
02/24 Tu MIPS Datapath, Single-Cycle Control Intro (4th) P&H: 4.1, 4.3, 4.4
(5th) P&H: 4.1, 4.3, 4.4
Section 5: Logic and SDS Lab 5: Logisim
Project 1, Part 2: MIPS
Due 03/07 @ 23:59:59 (a Saturday!)
02/26 Th Midterm I (Covers up to and including week 4 lectures, in-class)
7
03/03 Tu MIPS Single-Cycle Control, Pipelining Intro (4th) P&H: 4.5-4.8
(5th) P&H: 4.5-4.8
Section 6: Single-Cycle Datapath Lab 6: More Logisim, ALU Design
HW4: Logic, FSMs
Due 03/10 @ 23:59:59 (a Tuesday!)
Solutions
03/05 Th MIPS Pipelining Hazards (4th) P&H: 4.10, 4.11
(5th) P&H: 4.10, 4.11
8
03/10 Tu Memory Hierarchy, Fully Associative Caches (4th) P&H: 5.1, 5.2 (p. 457-470), 5.3, 5.5, 1.4
(5th) P&H: 5.1, 5.2, 5.3, 5.4, 5.8, 1.6
Cache Flowchart
Section 7: Pipelining Lab 7: CPU Project Prep
Project 2, Part 1: ALU and Regfile
Due 03/15 @ 23:59:59
03/12 Th Caches: Direct-mapped, Set-associative, Performance See 3/10 lec
03/14 Sat Guerrilla Section #1 (Worksheet, Solutions)
9
03/17 Tu Multilevel Caches, Cache Questions See 3/10 lec Section 8: Caches Lab 8: Caches
Project 2, Part 2: CPU
Due 03/24 @ 23:59:59
03/19 Th Performance, Floating Point, Tech Trends (4th) P&H: 3.5, 3.8
(5th) P&H: 3.5. 3.9
IEEE 754 Simulator
10
03/24 Tu Administrative Holiday (Spring Break)
03/26 Th Administrative Holiday (Spring Break)
11
03/31 Tu Flynn Taxonomy, Data-Level Parallelism (4th) P&H: 1.5, 1.6, 7.1, 7.2, 7.4, 7.6
(5th) P&H: 1.7, 1.8, 6.1, 6.2, 6.3, 6.7
Section 9: Floating Point, AMAT, Flynn Taxonomy Lab 9: SIMD Instructions
HW5: Caches/Floating-Point
Due 04/05 @ 23:59:59
Solutions
04/02 Th Amdahl's Law, Thread-Level Parallelism, OpenMP Intro (4th) P&H: 7.3, 5.8, 2.11
(5th) P&H: 6.5, 5.10, 2.11
OpenMP Summary Card
04/04 Sat Midterm II Review Session (Problems, Solutions)
12
04/05 Sun Guerrilla Section #2 (Worksheet, Solutions) Section 10: Cache Coherence, Synchronization Lab 10: Thread-Level Parallelism, OpenMP
None
04/07 Tu Cache Coherence, OpenMP Sharing Issues, Performance (4th) P&H: 5.8
(5th) P&H: 5.10
04/09 Th Midterm II (Covers up to and including 3/31 lecture, in-class)
13
04/14 Tu Warehouse Scale Computing, MapReduce (Spark) The Datacenter as a Computer: Ch 1, Ch 2.4, Ch 3, 5.1-5.3 Section 11: Spark and Warehouse Scale Computing Lab 11: MapReduce and Spark
Project 3: Performance Programming
Due 04/19 @ 23:59:59
04/16 Th OS Support, Base and Bounds, Interrupts, Virtual Memory Intro (4th) P&H: 5.10-5.12
(5th) P&H: 5.13, 5.15, 5.16
14
04/21 Tu More Virtual Memory, Intro to I/O (4th) P&H: 6.6, 4.9
(5th) P&H: 6.9 (only p.4-10), 4.9
Section 12: Virtual Memory and I/O Lab 12: Virtual Memory
Project 4: Intro
Project 4, Part 1: Spark
Due 04/29 @ 23:59:59
04/23 Th I/O: DMA, Disks, Networking (4th) P&H: 6.2-6.4, 6.9
(5th) 5.2, 5.5, 5.11
15
04/28 Tu Dependability: Parity, ECC, RAID (4th) P&H: 6.2, C-65 to C-67
(5th) P&H: 5.5, B-65 to B-67
Berkeley RAID Paper
Section 13: Parity, ECC, RAID None Project 4, Part 2: Spark on EC2
Due 05/03 @ 23:59:59

HW6: Virtual Memory
Due 05/03 @ 23:59:59
Solutions
04/30 Th Summary, What's Next? None
RRR
05/06 W Final Exam Review: 2-5pm, 105 Stanley
05/07 Th Guerrilla Section #3 (Worksheet, Solutions)
Finals
05/15 F Final Exam: 7:00pm-10:00pm, Location TBD

Resources and Handouts

Reference card for GDB version 5:  (pdf | ps | dvi)
Harvey notes on C:  (pdf)
Hilfinger notes on Memory Management:  (pdf)
MIPS Green Sheet:  (pdf)
MIPS Helper Sheet:  (html)
Floating Point Java Demos:  (html)

P&H We will be using the fifth edition of Patterson and Hennessy's Computer Organization and Design book ("P&H"), ISBN 0124077269.
K&R We are also requiring The C Programming Language, Second Edition by Kernighan and Ritchie ("K&R"), and will reference its sections in the reading assignments. Other books are also suitable if you are already comfortable with them, but our lectures will be based on K&R.
WSC Finally, we will be using The Datacenter as a Computer: An Introduction to the Design of Warehouse-Scale Machines ("WSC"), which is freely available online here.

The subjects covered in this course include: C and assembly language programming, how higher level programs are translated into machine language, computer organization, caches, performance measurement, parallelism, CPU design, warehouse-scale computing, and related topics. The only prerequisite is that you have taken CS61B, or at least have solid experience with a C-based programming language.




CS Illustrated

Illustrations by Ketrina Yim (csillustrated.berkeley.edu)
Number
Representations:
Integer Representations Comparing Integer Representations Comparing Integer Representations 2 Comparing Integer Representations 3
Floating Point
Numbers:
Floating Point Floating Point Interpretations Floating Point Number Line
Caches: Caching Overview Cache Misses Cache Associativity
Pointers and
Arrays:
Pointers and Arrays

CS61C, http://inst.eecs.berkeley.edu/~cs61c/ (Last Updated: 2015-01-27 @ 17:39)