CS 61C: Machine Structures

The CS 61 series is an introduction to computer science, with particular emphasis on software and on machines from a programmer's point of view. The first two courses considered programming at a high level of abstraction, introducing a range of programming paradigms and common techniques. This course, the last in the series, concentrates on machines and how they carry out the programs you write.

In CS 61C, we are concerned not so much with the process of writing a computer program, but rather with how the computer carries out a program. That is, the main topic in this course is the structure of a ``logical machine''--not the actual electronic circuits, but the computational operations that those circuits carry out. To make these ideas concrete, you will study in some detail the machine language of a particular computer, the MIPS R2000 processor. In real life, you'll probably never actually write a program in machine language, but for us it serves as a vehicle for teaching about computer architecture.

There are two textbooks for the course: Computer Organization and Design by Patterson and Hennessy (hereafter P&H), and A Programmer's View of Computer Architecture by Goodman and Miller (hereafter G&M).

Dave Patterson and John Hennessy are leading RISC architecture designers, so their text is ``from the horse's mouth.'' We won't use the entire book, which goes into a lot of detail about hardware organization beyond the scope of 61C. The expectation is that the same text will also be useful to you in a later architecture course (CS 152). Do not get Computer Architecture, a Quantitative Approach by mistake; it's a similar-looking graduate text by the same authors.

Goodman and Miller's text is less profound than P&H, with less emphasis on understanding the mechanisms within the computer, but is more helpful as a ``how-to'' book on assembly language programming. For several topics we'll first read G&M to learn the ropes and then read P&H for a deeper understanding of the same topic.

week  topic                               reading

1     abstraction, performance            P&H 1,2
2     number representation               G&M 2,3,4
3     machine language                    P&H 3.1-3.5, A.9
4     memory, registers                   G&M 5,7,8
5     arithmetic                          P&H 4.1-4.6
6     floating point                      P&H 4.8-4.11
      ---Midterm 1---
7     procedures and stack		  G&M 9, P&H 3.6-3.14
8     more procedures and stack           
9     cache                               P&H 7.1,7.2
10    cache, virtual memory               P&H 7.3-7.7
11    virtual memory
      ---Midterm 2---
12    the assembly process                G&M 10
13    input/output                        G&M 11, P&H 8.1-8.4
14    interrupts                          G&M 12, P&H 8.5-8.8
15    review                              P&H 9 (optional)
Here's the official home page for this semester (not necessarily mine).

www.cs.berkeley.edu/~bh