CATALOG DESCRIPTION: Parallel computer architecture and programming models. Message passing and shared memory multiprocessors. Scalability, synchronization, memory consistency, cache coherence. Memory hierarchy design. Network design.
REQUIRED TEXTS: D. E. Culler, J. P. Singh, and A. Gupta, Parallel Computer Architecture: A Hardware/Software Approach, Morgan Kaufmann, 1998
COURSE DIRECTOR: Russ Joseph
PREREQUISITES BY COURSES: EECS 361 or consent of instructor. EECS 452 and EECS 358 are strongly suggested. Basic understanding of VLSI suggested but not required.
PREREQUISITES BY TOPIC: Advanced uniprocessor architecture, parallel programming, basic operating systems and compilers.
DETAILED COURSE TOPICS:
Week 1: Introduction, overview of parallel architectures, fundamental design issues, examples of parallel programs and models. CSG Chapters 1 and 2.
Week 2: Workload-driven evaluation, introduction to symmetric multiprocessors and cache coherence. CSG Chapter 3 and 4.
Weeks 3 and 4: Symmetric multiprocessors continued: cache coherence, memory consistency, synchronization. Snoop-based multiprocessor design. CSG Chapters 4, 5 and 6.
Weeks 5 and 6: Scalable multiprocessors: scalability, programming models, clusters and networks of workstations and directory-based coherence. CSG Chapters 7 and 8.
Week 7: Relaxed consistency models and software/hardware tradeoffs. Introduction to interconnection network design.
Week 8: Dataflow, SIMD and other alternatives. AG Chapter 10.2.8.
Week 9: Research papers, case studies and work on projects.
Week 10: Project presentations.
COMPUTER USAGE: As required for the course project and assignments.
LABORATORY PROJECT: An extensive individual or group project on an advanced topic in parallel computer architecture. The default project is to do some original research in a group of two to three students. Alternatively, a student may work alone on a survey.
- 40% Project
- 45% Midterm and Final
- 10% Homework
- 5% Class Participation
COURSE OBJECTIVES: The goal of this course is to provide students with (1) a broad understanding of parallel computer architecture and (2) to the extent possible, an understanding of the current state-of-the-art in parallel computer architecture.
Specifically, upon completion of this course, a student should have developed:
- Broad understanding of the design of parallel computer systems, including modern parallel architectures and alternatives.
- Understanding of the interaction amongst parallel architecture, applications, and technology.
- Understanding of a framework for evaluating design decisions in terms of application requirements and performance measurements.
- Gain experience with using and modifying a parallel computer simulator.
- Gain experience on identifying and pursuing a research project.
- Gain experience with writing a research report.
- Gain insight on evaluating research papers.
- Gain experience in technical presentations.