Lecture 3: Evolution of the Uniprocessor SIMD VLIW DAE HPS Data Flow
The HPS Paradigm Incorporated the following: Aggressive branch prediction Speculative execution Wide issue Out-of-order execution In-order retirement First published in Micro-18 (1985) Patt, Hwu, Shebanow: Introduction to HPS Patt, Melvin, Hwu, Shebanow: Critical issues
The final flexibility: Data Flow
Characteristics of Data Flow Data Driven execution of inst-level Graphical code Nodes are operators Arcs are I/O Only REAL dependencies constrain processing Anti-dependencies don’t (write-after-read) Output dependencies don’t (write-after-write) NO sequential I-stream (No program counter) Operations execute ASYNCHRONOUSLY Instructions do not reference memory (at least memory as we understand it) Execution is triggered by presence of data
Why Data Flow? Why NOT Data Flow? Irregular Parallelism Only real dependencies constrain Anti-dependencies don’t Sequential I-stream doesn’t (No Program Counter) Asynchronous (NOT in the sense of un-clocked) Why NOT Data Flow? In one word: too much architectural state
Specific Problems with Data Flow Code bloat (everything is explicit) Code debug (asynchronous, non-deterministic flow) Interrupt handling (providing a consistent state) Machine diagnosis (trouble-shooting design errors) Recursion Large data structures Node table overflow (cost of CAM is high) Performance caveats Array copy operations Long latencies Network (bypass paths) congestion