A Common Machine Language for Communication-Exposed Architectures Bill Thies, Michal Karczmarek, Michael Gordon, David Maze and Saman Amarasinghe MIT Laboratory for Computer Science HPCA Work-in-Progress Session, February 2002
A Common Machine Language for Communication-Exposed Architectures Language Designers Have Been Ignoring Architects Bill Thies, Michal Karczmarek, Michael Gordon, David Maze and Saman Amarasinghe MIT Laboratory for Computer Science HPCA Work-in-Progress Session, February 2002
Back in The Good Old Days… • Architecture: simple von-Neumann • “Common Machine Language”: C – Abstracts away idiosyncratic differences • Instruction set • Pipeline depth • Cache configuration • Register layout – Exposes common properties • Program counter • Arithmetic instructions • Monolithic memory – Efficient implementations on many machines – Portable: everyone uses it
Programming Language Evolution 40 Language Effectiveness 35 30 Java 25 20 C++ 15 10 C 5 0 1970 1975 1980 1985 1990 1995 2000 2005
Programming Language Evolution 10000000 Language Effectiveness 1000000 Moore's Law 100000 10000 1000 100 10 1 1970 1975 1980 1985 1990 1995 2000 2005
Languages Have Not Kept Up C von-Neumann Modern machine architecture • Two choices: • Two choices: • Two choices: • Develop cool architecture with • Develop cool architecture with • Develop cool architecture with complicated, ad-hoc language complicated, ad-hoc language complicated, ad-hoc language • Bend over backwards to support • Bend over backwards to support • Bend over backwards to support old languages like C/C++ old languages like C/C++ old languages like C/C++
Evidence: Superscalars • Huge effort into improving performance of sequential instruction stream • Complexity has grown unmanageable • Even with 1 billion transistors on a chip, what more can be done? Branch Pipelining Prediction Out-of-Order Value Prefetching Execution Prediction Speculative Renaming Execution
A New Era of Architectures • Facing new design parameters – Transistors are in excess – Wire delays will dominate • “Communication-exposed” architectures – Explicitly parallel hardware – Compiler-controlled communication – e.g. RAW, Smart Memories, TRIPS, Imagine, the Grid Processor, Blue Gene
A New Common Machine Language • Should expose shared properties: • Should expose shared properties: – Explicit parallelism (multiple program counters) – Explicit parallelism (multiple program counters) – Regular communication patterns – Regular communication patterns – Distributed memory banks – No global clock • Should hide small differences: – Granularity of computation elements – Topology of network interconnect – Interface to memory units C does not qualify! �
The StreamIt Language • A high-level language for communication- exposed architectures • Computation is expressed as a hierarchical composition of independent filters
The StreamIt Language • A high-level language for communication- exposed architectures • Computation is expressed as a hierarchical composition of independent filters • Features: – High-bandwidth channels – Low-bandwidth messaging – Re-initialization
The StreamIt Compiler • We have a compiler for a uniprocessor – Performs comparably to C++ runtime system
The StreamIt Compiler • We have a compiler for a uniprocessor – Performs comparably to C++ runtime system • Working on a backend for RAW – Fission and fusion transformations – Many optimizations in progress
The StreamIt Compiler • We have a compiler for a uniprocessor – Performs comparably to C++ runtime system • Working on a backend for RAW – Fission and fusion transformations – Many optimizations in progress • Goal: High-performance, portable language for communication-exposed architectures
For more information, see: http://cag.lcs.mit.edu/streamit/ Thank you!
Recommend
More recommend