6.823 Computer System Architecture - Spring 2019

Course Info
Reading List
Lecture Notes
Study Materials
This course is a study of the evolution of computer architecture and the factors influencing the design of hardware and software elements of computer systems. Topics may include: instruction set design; processor micro-architecture and pipelining; cache and virtual memory organizations; protection and sharing; I/O and interrupts; in-order and out-of-order superscalar architectures; VLIW machines; vector supercomputers; multithreaded architectures; symmetric multiprocessors; memory models and synchronization; embedded systems; and parallel computers.

Course Information

Warning: All information on this website is subject to change. Though we send messages to the class in case of a change, please do check the course web site in case of doubt.

Lectures: Lectures will be from 1:00 PM to 2:30 PM every Monday and Wednesday in room 6-120

Tutorials: A 1-hour tutorial session will be held each week on Friday at 1 PM . The main focus of the tutorial session will be to work through the problem set questions and clarify lectures as necessary. Quizzes will also be given in tutorials, so it is important to avoid any recurring conflict with the tutorial time. Additional tutorials may be held in the evenings before quizzes.

Office Hours: See the staff page for details.

Problem Sets: The subject is divided in five modules, each covering a set of related topics. There is a set of online problems related to each module. The best way to prepare for the quizzes is to work on these problems. 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. Many quiz questions will assume knowledge of detailed machine descriptions provided in the problem sets.

Students are encouraged to work in groups to discuss the problem sets, then to individually write out complete solutions prior to examining the online solutions. It is our goal to make each problem interesting and illustrative of some aspect of computer design. However, every problem is not equally important to prepare for the quiz; we will indicate which problems are most important for each quiz.

Students are encouraged to bring their solutions to the tutorials for discussion, especially if the online solutions are missing or if the student has a different solution then the one posed on the website.

Laboratory Exercises: There will be four Laboratory Exercises that will explore the concepts taught in lecture using industrial-strength tools. Two to three weeks will be allotted for the completion of each lab. Labs are generally due the week before the related quiz. To allow proper time to study for the ensuing quiz, extensions will only be granted in extreme cases.

Laboratory exercises are to be completed individually, although discussion of course concepts covered in the laboratories is encouraged.

Quizzes: In the first lecture, a prerequisite self-evaluation quiz will be handed out. This must be handed back one week later in the lecture. This quiz should be used by you to assess your preparation for the course. You must work individually on this quiz and turn in your own solutions.

There will be four one-and-half-hour quizzes, generally scheduled during the tutorial time on Fridays. The quizzes will focus on one section of the course, but can draw upon material from any part of the course to date, including problem sets, laboratory exercises, and assigned readings. All quizzes are closed book.

Grades: 75% of the grade will be based on the four quizzes, equally weighted. The remaining 25% of the grade will be based on four laboratory exercises. The last two labs have twice the weight of the first two. In addition, each student must turn in the self-evaluation quiz, due in the third lecture.

Collaboration and Academic Honesty Policy: Students must not discuss a quiz's contents with other students who have not yet taken the quiz. If prior to taking it, you are inadvertently exposed to material in a quiz - by whatever means - you must immediately inform the instructor or a TA. You must turn in your own solutions to the self-evaluation quiz. Any violation of this policy will be treated severely.

Collaboration among students to understand the course material and problem sets is strongly encouraged. Laboratory exercises should be completed individually.

Course Reading Material: Computer Architecture: A Quantitative Approach: 5th Edition by J. L. Hennessy and D. A. Patterson is the main textbook used in this course. This book is available at Amazon for around $90 and also available at MIT library. We also give the equivalent readings for the 2nd and 3rd editions of this book to allow you to use a secondhand copy. In previous years, some students found that the lecture notes were sufficient to learn the material and that the textbook was unnecessary, but we nevertheless recommend the book as a good reference guide. You may also want to refer to Computer Organization & Design: The Hardware/Software Interface by D. A. Patterson and J. L. Hennessy to review the basic material. Supplemental readings from selected papers may also be assigned throughout the semester. There may be a nominal photocopying charge,always payable to MIT, for the supplemental reading materials.

Principles and Practices of Interconnection Networks by William J. Dally & Brian Towles. Morgan Kaufmann Publishers Inc. On reserve at the library, for students to checkout. On-Chip Networks by Natalie E. Jerger & Li-Shiuan Peh. Morgan & Claypool Publishers. Available here.

Computer Communication: The TAs can be reached for questions, etc., via email at 6823-tas@lists.csail.mit.edu. We will mail all announcements, clarifications to assignments, answers to common questions, etc., to the course email list -- 6823-all@lists.csail.mit.edu. You can subscribe to the course email list through this link.