This is an old revision of the document!
Lectures of 740 will meet at HH 1107 (in Pittsburgh) and B23 118 (in Silicon Valley) on Mondays and Wednesdays
Computer architecture is the science and art of designing, selecting and interconnecting hardware components and co-designing the hardware/software interface to create a computer that meets functional, performance, energy consumption, cost, and other specific goals. This course qualitatively and quantitatively examines fundamental computer design trade-offs, with the goal of developing an understanding that will enable students to perform cutting-edge research in computer architecture. We will learn, for example, how uniprocessors execute many instructions concurrently, how state-of-the-art memory systems deliver data into the processor and why they are so complex, and how/why multiple processors are interconnected to execute portions of a program or multiple programs in parallel, as done in modern multi-core processors. Examining trade-offs requires that you already know how to correctly design a computer, as is taught in the important prerequisite 18-447. This course will involve an at least two-month long research/implementation project in which students work in groups of 2-3.
Subject to change.
Arguably, there is no perfect textbook for computer architecture. I encourage you to do your own research, consult multiple sources, question assumptions and statements, and talk with me and TAs whenever you have questions.
Lecture notes and videos will serve as the main source of information and they will provide the required references to textbooks or other reading material (such as research articles).
A good source of information on all covered topics is the research articles that introduced or built upon the covered topic. These articles are usually published in top conferences (such as ISCA, MICRO, ASPLOS, HPCA) or journals (such as IEEE or ACM Transactions). I strongly encourage you to dig out the original source of the covered topics as well as the research that builds upon it. This will help you become a successful and well-read researcher in computer architecture/systems. When in doubt, ask questions. The following textbooks could be very useful as supplements to lectures. Some lecture readings will be assigned from them:
Other useful readings could include the following: