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: Prof. Russ Joseph

PREREQUISITES BY COURSES: EECS 361 or consent of instructor. EECS 452 and EECS 358 are useful but not required.

PREREQUISITES BY TOPIC: Basic uniprocessor architecture, especially cache organization.

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.

GRADES:

  • 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.