Lecture 6 Notes - WaveScalar (part 2)

See part 1 for introduction to WaveScalar.

General problems being solved

  • Increased scalability using completely distributed architecture
  • Performance should be similar or better than traditional superscalar (e.g. parallel out-of-order execution of sequential source code)
  • Source level compatibility, maintains existing programming models

Solutions to problems

  • Dataflow architecture
    • Maintain total memory ordering
    • Distributed tag management
    • Indirect branching
  • Store buffer
    • Generates memory ordering
    • Compiler forms chains of operations based on program order, and hardware ensures the ordering provided by the compiler
  • Branching (ø−1)
    • Instructions for both paths brought onto processor, but only one side is executed
  • Waves
    • Essentially hyperblocks (single entry, multiple exit, no loops)
    • Scheduled/allocated based on resource constraints (e.g. memory buffer)

WaveCache

WaveCache is an implementation of the WaveScalar ISA.

  • Arranged into grid of processing elements (PEs)
  • PEs are grouped into clusters (16 PEs/cluster in paper)
  • Each PE contains storage for instructions, input/output queues, ALU, control logic, and interconnect
  • Instructions are bound to PE, and fire when operands are ready
    • No traditional fetch/decode/writeback stages, no program counter
  • When no more space in WaveCache, instructions must be thrown out to bring in new instructions
    • Everything must be spilled - operands, condition codes, etc., thus slow and heavyweight
  • Waves assigned to clusters statically
  • Instructions from different waves can execute simultaneously if there are no dependencies, but must complete in-order
    • If wave has load/store, the ordering must be maintained, so cannot advance to next wave until everything before is done
  • Interrupts are not precise
    • Can run interrupt handler, but cannot stop currently executing program
    • To provide precise exceptions, program must check explicitly for interrupts in order to stop

Evaluation

  • Ignored communication costs, used perfect L1, ignored spills/fills
    • Unconvincing, because original claims were to reduce communication costs, increase locality, but in evaluation, these factors were ignored
  • Used subset of SPEC benchmarks
    • Couldn’t compile some programs
    • Many benchmarks are those that are generally parallel, and not necessarily the more difficult sequential programs.
  • Used aggressive 16-wide superscalar for comparison; didn’t talk much about WaveCache architecture
  • Used Alpha-equivalent IPC (i.e. only instructions in original binary are counted)

Misc

  • Information on traditional dataflow architectures
    • Yuba, et. al, The SIGMA-1 Dataflow Computer, Proceedings of the 1987 Fall Joint Computer Conference on Exploring technology: today and tomorrow, p.578–585, 1987.
    • Dennis, J.B., Data Flow Computer Architecture, Technical Report, Laboratory for Computer Science, MIT, TR-385 Oct., 1987.
  • Perfect branch prediction and memory disambiguation
    • Helped performance when enabled, but didn’t explain why
  • Debugging
    • Programs difficult to debug on WaveScalar. However, if programs worked correctly (i.e. already debugged) on superscalar, it should also work on WaveScalar
  • Parallelism in dataflow machines
    • Sometimes, there is too much parallelism, which requires too much state to be stored
    • Needs to be managed and limited (e.g. by memory)
  • Unique ideas, but evaluation did not prove usefulness
    • Decentralized, partitioned architecture
    • Statically determined data flow