This section contains the problem sets assigned for the course. Each of the problem sets is related to a module. Although problem solutions do not have to be handed in (and consequently, are not graded), it is essential that students become thoroughly familiar with the material and therefore are encouraged to work through all problems.

The self-assessment test was handed out during the first lecture and used to assess each student's preparation for the course. The test was due one week later in the lecture. The handouts were provided to students to assist them in completing the problem sets. Students were expected to study the handouts before solving the problems. Instructors may request the solutions for these assignments by using the MIT OpenCourseWare feedback form.

Problem Set 0 Prerequisite Self-Assessment Test (PDF)  
Problem Set 1 ISAs, Microprogramming, Simple Pipelining and Hazards (PDF ‑ 3.6 MB) Handout 1: EDSACjr (PDF)

Handout 2: 6.823 Stack ISA (PDF)

Handout 3: CISC ISA--x86jr (PDF)

Handout 4: RISC ISA--6.823 MIPS (PDF)

Handout 5: Bus-based MIPS Implementation (PDF)
Problem Set 2 Caches and Virtual Memory (PDF) Handout 6: Cache Implementations (PDF)

Handout 7: Victim Cache (PDF)

Handout 8: Virtual Memory Implementation (PDF)
Problem Set 3 Complex Pipelines (PDF) Handout 9: Scoreboarding (This resource may not render correctly in a screen reader.PDF)

Handout 10: Out-of-order Execution with ROB (PDF)

Handout 11: Physical Register Management (PDF)
Problem Set 4 SMPs, CC, Synch and Memory Models (PDF) Handout 12: Directory-based Cache Coherence Protocol (PDF)

Handout 13: Snoopy Cache Coherence Protocol (PDF)
Problem Set 5 VLIW, Vector and Threads (PDF)