CS 61C - Machine Structures
David Patterson, Professor; Michael Clancy, Senior Lecturer
4 units; 3 hours lecture, 1 hour discussion section, 2 hours lab, average 5 hours self-scheduled programming laboratory. Offered fall, spring, and summer terms.
The internal organization and operation of digital computers. Machine architecture support for high level languages (logic, arithmetic, instruction sequencing) and operating systems (I/O, interrupts, memory management, process switching). Elements of compujter logic and CPU design. Pipelined architecture and other aspects of machine parallelism. Tradeoffs involved in fundamental architectural design decisions.
CS 61C brings students through a series of abstractions from high-level programming through machine architecture to CPU design from fundamental logic components. The C programming language and MIPS assembly language are used to introduce the abstractions. The course closely follows the Patterson and Hennessy textbook supplemented by material on the C programming language. A sample week-by-week outline follows.
|1||Introduction, Number Representation||P&H 1, 4.1–4.2|
|2, 3||C programming language, memory management||K&R 1–4, 5.1–5.10|
|4||Assembly language operations and control flow||P&H 3.1, 3.2, 3.5|
|5||Assembly language pointers, procedures||P&H 3.8–3.14|
|6||Machine language representation||P&H 3.4, 3.8|
|7||Floating point representation/operations||P&H 4.8, 4.10, 4.12, 4.13|
|8||Input/output, interrupts||P&H 8.3, 8.5, 8.9|
|9||Disk storage, Networks||P&H 8.3, 8.10|
|10||Cache memory systems||P&H 7.1–7.3|
|11||Virtual memory||P&H 7.4–7.7|
|12, 13||Logic elements and circuits||P&H B, P&H 4.5|
|14||CPU organization||P&H 5.1–5.3|
Coursework will involve weekly two-hour in-laboratory exercises designed to help students develop skills needed for writing and debugging C and assembly language programs and for simulating hardware using hardware description languages (HDLs). Biweekly independent projects reinforce students' programming skills while reinforcing their understanding of machine architecture and implementation concepts. Sample projects include a machine language interpreter written in C, a cache simulator written in C, and a CPU simulator.
Patterson and Hennessy,
Computer Organization and Design;
third edition, Morgan Kaufmann, 2005.
Kernighan and Ritchie, The C Programming Language,
second edition, Prentice-Hall, 1988.