6.5900[6.823] Computer System Architecture - Fall 2023

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:00PM to 2:30 PM every Monday and Wednesday in room 32-141

Tutorials: A 1-hour tutorial session will be held each week on Friday at 1 PM in room 32-141. 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 will be held in an evening before each quiz.

Office Hours: See the staff page for details.

Problem Sets: The subject is divided in 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 also provide sample quizzes from previous years, which will show the typical structure of quiz questions.

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 than the one posted 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. To allow proper time to study for the following quiz, extensions will only be granted in extreme cases.

Laboratory exercises are to be completed individually, but comparing results and discussing 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 in the tutorial session of the same week. 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 three 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 three quizzes, equally weighted. The remaining 25% of the grade will be based on four laboratory exercises.

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: 6th Edition by J. L. Hennessy and D. A. Patterson is the main textbook used in this course. The MIT library has physical copies and gives online access to the 5th edition. If you prefer to have your own copy, Amazon sells the book for about $75. We also provide the equivalent readings for the 2nd, 3rd, 4th, and 5th 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 background material. Supplemental readings from selected papers may also be assigned throughout the semester.

Additionally, the network-on-chip lectures use Principles and Practices of Interconnection Networks by William J. Dally & Brian Towles. Morgan Kaufmann Publishers Inc. This book is on reserve at the library, for students to checkout, and also avialable online.

Online Resources: Please check for announcements, clarifications to assignments, and answers to common questions on Piazza: http://piazza.com/mit/fall2023/65900 You can also contact all the course staff via Piazza.