EEC171 - Parallel Computer Architectures

4 units - Spring Quarter

Lecture: 3 hours

Discussion: 1 hour

Prerequisite: EEC170 or ECS154B

Grading: Letter

Catalog Description: Organization and design of parallel processors including shared-memory multiprocessors, cache coherence, memory consistency, snooping protocols, synchronization, scalable multiprocessors, message passing protocols, distributed shared memory and interconnection networks.

Relationship to Outcomes:
Students who have successfully completed this course should have achieved:

Course Outcomes ABET Outcomes
An ability to apply knowledge of mathematics, science, and engineering A
An ability to design and conduct experiments, as well as to analyze and interpret data B
An ability to identify, formulate, and solve engineering problems E
An ability to use the techniques, skills, and modern engineering tools necessary for engineering practice. K

Expanded Course Description

  1. Introduction: An overview of parallel architecture including history and current trends
  2. Benchmarks, economics, and technology
  3. Instruction Level Parallelism
    1. Instruction and machine level parallelism
    2. In-order vs. out-of-order scheduling
    3. VLIW (static scheduling)
    4. Branch prediction and speculation
    5. Predication
    6. Trace scheduling
    7. Limits to instruction-level parllelism
  4. Thred Level Parallelism
    1. Flynn's taxonomy
    2. Coarse- vs. fine-grained parallelism
    3. Symmetric and simultaneous multithreading
    4. Supercomputing (at a high level)
    5. Organizaiton of multiprocessor machines and programming models (shared vs. distributed memory)
    6. Memory models (consistency and coherence)
    7. Cache coherence protocols
    8. Interconnection networks
  5. Data Level Parallelism
    1. SIMD instruction sets
    2. Vector machines
    3. Massively parallel machines
    4. Manycore processors (e.g. GPUs)
    5. Data-parallel algorithms and programming models

Textbooks: J. Hennessy and D. Patterson, Computer Architecture: A Quantitative Approach, Morgan Kauufmann Publishers. 

Computer Use: The students use a Unix workstation to:

  1. explore instruction-level parallelism via a microprocessor simulator
  2. execute a parallel program over a network of Unix workstations
  3. use a data-parallel processor, such as a programmable GPU, to explore data-level parallelism.

Design Projects: The students are given three software design projects that each emphasize hardware design and analysis.

Engineering Design Statement:
The course emphasizes the organization and design of parallel processors. In a project, homework assignments and exams students are presented with problems that require them to explore various approaches to the organization and design of parallel processors.

Professional Component: Engineering Depth
Engineering Science: 2 units
Engineering Design: 2 units

Overlap statement: There is some overlap with ECS 158, Programming on Parallel Architectures. However, the proposed course is complementary, providing a hardware emphasis in contrast to the software emphasis of ECS 158. There is also some overlap with ECS 250C, Parallel Processing, and EEC 270, computer architecture, but both of these classes are graduate courses and more indepth/quantitative.