Multiprocessor computers account for the dominant fraction of the commercial computing market ranging from small desktops with several processors, to high-end commercial data centers incorporating up to several dozen processors. At the highest end, scientific supercomputers now include thousands of processors to solve the most numerically-intensive problems. Advances in VLSI will soon allow multiprocessors on a single chip to serve as building blocks for systems in all sectors of the computing market from portable systems to large servers. This course will examine multiprocessor computer architecture design trade-offs. In particular, the course will cover parallel programming models, commercial and scientific applications, shared-memory architectures, scalable architectures, single-chip multiprocessor/multithreaded architectures, compiling for multiprocessors, interconnection networks, and synchronization primitives. Understanding multiprocessor architectures requires that the students are already familiar with how to correctly design an advanced uniprocessor computer, as is taught in the important prerequisite, 18-741 (previously 18-547). 3 hrs. lec.