Computer Architecture

Course: CS/EE 184ab

Units: 9 (3-3-3)
Terms: second, third
Next Offered: ??? (given in alternate years)
Last Offered: AY 2004-2005 (given in alternate years)
When: MWF 9am
Where: JRG 74
Instructor: DeHon
Prerequisite: CS24 or equivalent
URL: <>

Catalog Level Description: Organization and design of physical computational systems, basic building blocks for computations, understanding and exploiting structure in computational problems, design space, costs, and tradeoffs in computer organization, common machine abstractions, and implementation/optimization techniques. The course will develop the fundamental issues and tradeoffs which define computer organizational and architectural styles including RISC, VLIW, Super Scalar, EPIC, SIMD, Vector, MIMD, reconfigurable, FPGA, PIM, and SoC. Basic topics in the design of computational units, instruction organization, memory systems, control and data flow, interconnect, and the hardware-software abstraction will also be covered.

Motivation: Underneath our layers of software abstractions, ultimately, the physical world must implement the computations we wish to perform. How do we organize our physical building blocks to perform a computation, particularly a programmable or universal computation? How much (and what) resources does a particular computation require? How do we optimize our physical resources to support a computation efficiently? How and where do we draw the boundary between hardware and software? What do we do when given billions of transistors?

In our lifetimes, we've seen unprecedented expansion of computational capabilities fueled both by advanced processing and architectural innovations to exploit that processing capability. As a result of these capabilities automatic computation is having a huge impact on the way we live, work, communicate, and especially how we do science and engineering. If anything, our biggest limitation today is not the raw capacity and capabilities available to us, but fully exploiting that capacity. The design space for computing devices is large and fascinating with efficiencies that vary by orders of magnitude. Further, the limitations of our underlying building blocks are changing, so the "right answers" of the past will almost certainly become stale and outdated. A good engineer must know the fundamental tradeoffs to re-evaluate solutions as the underlying technology changes.

Who: This course is a must for anyone who is interested in the design of computers, System-on-a-chip ICs, or modern embedded systems (including multimedia, communications, signal processing, and control). It is also of great value to anyone who will be designing ``systems'' which use these components (e.g. telecom, robotics and autonomous vehicles, instrumentation, control, electronic appliances). A deep understanding of computer organization is also of great value to anyone who hopes to develop high-performance software, understanding the capabilities of any machine and how to get the most out of it.

General contents by term:

  1. Basic components of computation
    • Requirements of computation
    • Key components and their effect
      • instructions
      • interconnect
      • retiming
      • compute
      • control
    • Themes
      • structure in applications
      • implementation techniques
      • costs
      • metrics/figures of merit
      • defining and modeling design space
      • basic tradeoffs and analysis
      • programmable vs. custom
      • mapping to hardware
  2. Models of Computation and common optimization techniques
    • Role of model / scaling / requirements
    • Models
      • Sequential Processor/Control Flow ISA
      • Dataflow
      • Vector/SIMD
      • ....
    • Common Optimizations
      • VM (TLB)
      • Caching (assoc. memories)
      • Pipelining (bypassing...)
      • Branch/value prediction
      • Exception...tagging... (common-case/fault)
      • Scoreboarding/Renaming/...
      • Prefetch
      • and many others
    • Themes
      • abstractions: 0, 1, infinity
      • dynamic data/event handling (static/dynamic?)
      • structure/common case
      • dominant / bottleneck resource requirements
      • "cached" answers / change
      • maintain semantics
      • merit analysis
      • predictability/guarantees -- avg. case vs. worst case
    • Models of Parallelism
      • VLIW
      • SIMD/Vector
      • Shared memory: SMP, NUMA
      • MIMD
      • Dataflow
      • Streaming dataflow / Coprocessors / CSP
      • Spatial (Systolic, CA, Reconfigurable)
      • Specialized hardware
    • Multiprocessing (incl. dynamic interconnect)
    • Spatial/Systolic/Reconfigurable
    • System-on-a-Chip
    • Heterogeneous
    • PIM/IRAM?
    • Alternate physical substrates
      • (e.g. bio, molecular, quantum, analog)


Previous Offering

André DeHon