16.01.2015 Views

CS2013-final-report

CS2013-final-report

CS2013-final-report

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

CS61C: Great Ideas in Computer Architecture, University of California,<br />

Berkeley<br />

Randy H. Katz<br />

randy@cs.Berkeley.edu<br />

http://inst.eecs.berkeley.edu/~cs61c/<br />

Knowledge Areas that contain topics and learning outcomes covered in the course<br />

Knowledge Area<br />

Total Hours of Coverage<br />

Systems Fundamentals (SF) 39<br />

Where does the course fit in your curriculum<br />

This is a third course in the computer science curriculum for intended majors, following courses in “great ideas in<br />

Computer Science” and “Programming with Data Structures.” It provides a foundation for all of the upper division<br />

systems courses by providing a thorough understanding of the hardware-software interface, the broad concepts of<br />

parallel programming to achieve scalable high performance, and hands-on programming experience in C.<br />

What is covered in the course<br />

Introduction to C: this includes coverage of the Hardware/Software Interface (e.g., machine and assembly<br />

language formats, methods of encoding instructions and data, and the mapping processes from high level<br />

languages, particularly C, to assembly and machine language instructions). Computer architectures: how<br />

processors interpret/execute instructions, Memory Hierarchy, Hardware Building Blocks, Single CPU Datapath<br />

and Control, and Instruction Level Parallelism. The concept of parallelisms, in particular, task level parallelism,<br />

illustrated with Map-Reduce processing; Data Level Parallelism, illustrated with the Intel SIMD instruction set;<br />

Thread Level Parallelism/multicore programming, illustrated with openMP extensions to the C programming<br />

language.<br />

What is the format of the course<br />

Three hours of lecture per week, one hour of TA-led discussion per week, two hours of laboratory per week.<br />

How are students assessed<br />

Laboratories, Homeworks, Exams, Four Projects (Map-Reduce application on Amazon EC2), MIPS Instruction<br />

Set Emulator in C, Memory and Parallelism-Aware Application Improvement, Logic Design and Simulation of a<br />

MIPS processor subset).<br />

Course textbooks and materials<br />

Patterson and Hennessy, Computer Organization and Design, revised 4 th Edition, 2012; Kernighan and Ritchie,<br />

The C Programming Language, 2 nd Edition; Borroso, The Datacenter as a Computer, Morgan and Claypool<br />

publishers.<br />

Why do you teach the course this way<br />

The overarching theme of the course is the hardware-software interface, in particular, focusing on what a<br />

programmer needs to know about the underlying hardware to achieve high performance for his or her code.<br />

Generally, this concentrates on harnessing parallelism, in particular, task level parallelism (map-reduce), data level<br />

parallelism (SIMD instruction sets), multicore (openMP), and processor instruction pipelining. The six “great”<br />

ideas presented in the course are (1) Layers of Representation/Interpretation, (2) Moore’s Law, (3) Principle of<br />

Locality/Memory Hierarchy, (4) Parallelism, (5) Performance Evaluation, and (6) Dependability via Redundancy.<br />

- 418 -

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!