by Mark Stephenson, Jonathan Babb, Saman Amarasinghe
In Proceedings of the SIGPLAN conference on Programming Language Design and Implementation
http://www.cag.lcs.mit.edu/bitwise/main.ps
Add To MetaCart
Abstract:
This paper introduces Bitwise, a compiler that minimizes the bitwidth--- the number of bits used to represent each operand--- for both integers and pointers in a program. By propagating static information both forward and backward in the program dataflow graph, Bitwise frees the programmer from declaring bitwidth invariants in cases where the compiler can determine bitwidths automatically. We find a rich opportunity for bitwidth reduction in modern multimedia and streaming application workloads. For new architectures that support sub-word quantities, we expect that our bitwidth reductions will save power and increase processor performance. This paper also applies our analysis to silicon compilation--- the translation of programs into custom hardware---to realize the full benefits of bitwidth reduction. We describe our integration of Bitwise with the DeepC Silicon Compiler. By taking advantage of bitwidth information during architectural synthesis, we reduce silicon real estate by 15 %-86%, improve clock speed by 3 %- 249%, and reduce power by 46 %- 73%. The next era of general purpose and reconfigurable architectures should strive to capture a portion of these gains.
Citations
|
192
|
MMX technology extension to the Intel architecture
– Peleg, Weiser
- 1996
|
|
176
|
SUIF: An Infrastructure for Research on Parallelizing and Optimizing Compilers
– Wilson, French, et al.
|
|
145
|
The Filter Cache: An Energy Efficient Memory Structure
– Kin, Gupta, et al.
- 1997
|
|
117
|
Pointer Analysis for Multithreaded Programs
– Rugina, Rinard
- 1999
|
|
103
|
Dynamically Exploiting Narrow Width Operands to Improve Processor Power and Performance
– Brooks, Martonosi
- 1999
|
|
91
|
Beyond induction variables: Detecting and classifying sequences using a demand-driven SSA form
– Gerlek, Stoltz, et al.
- 1995
|
|
76
|
Compiler Analysis of the Value Ranges for Variables
– Harrison
- 1977
|
|
75
|
Space-time scheduling of instruction-level parallelism on a RAW machine
– Lee, Barua, et al.
- 1998
|
|
61
|
Extending SUIF for machinedependent optimizations
– Smith
- 1996
|
|
60
|
ÂȘAccurate Static Branch Prediction by Value Range
– Patterson
- 1995
|
|
58
|
Dependence-based program analysis
– Johnson, Pingali
- 1993
|
|
53
|
Exploiting superword level parallelism with multimedia instruction sets
– Larsen, Amarasinghe
- 2000
|
|
43
|
Maps: A Compiler-Managed Memory System for Raw Machines
– Barua, Lee, et al.
- 1999
|
|
43
|
Array SSA form and its use in parallelization
– Knobe, Sarkar
- 1998
|
|
42
|
PRISC: Programmable Reduced Instruction Set Computers
– Razdan
- 1994
|
|
40
|
Automatic parallelization of divide and conquer algorithms
– Rugina, Rinard
- 1999
|
|
38
|
Parallelizing applications into silicon
– Babb, Rinard, et al.
- 1998
|
|
35
|
Bitvalue inference: Detecting and exploiting narrowbitwidth computations
– Budiu, Goldstein, et al.
- 2000
|
|
17
|
A general method for compiling event-driven simulations
– French, Lam, et al.
- 1995
|
|
10
|
The Static Single Information Form
– Ananian
- 1999
|
|
7
|
AltiVec(tm): Bringing Vector Technology to the PowerPC(tm) Processor Family
– Tyler, Lent, et al.
- 1999
|
|
2
|
High-Level Compilation For Reconfigurable Architectures
– Babb
- 2000
|
|
2
|
VirtuaLogic Emulation System Documentation
– Systems, Inc
- 1999
|