Skip to:Content
|
Bottom
Cover image for Compilation techniques for reconfigurable architectures
Title:
Compilation techniques for reconfigurable architectures
Personal Author:
Publication Information:
New York, NY : Springer, 2008
Physical Description:
xii, 223 p. : ill. 24 cm.
ISBN:
9780387096704
Added Author:

Available:*

Library
Item Barcode
Call Number
Material Type
Item Category 1
Status
Searching...
35000000004199 QA76.9.A3 C37 2008 Open Access Book Book
Searching...
Searching...
30000010197645 QA76.9.A3 C37 2008 Open Access Book Book
Searching...

On Order

Summary

Summary

The extreme ?exibility of recon?gurable architectures and their performance pot- tial have made them a vehicle of choice in a wide range of computing domains, from rapid circuit prototyping to high-performance computing. The increasing availab- ity of transistors on a die has allowed the emergence of recon?gurable architectures with a large number of computing resources and interconnection topologies. To - ploit the potential of these recon?gurable architectures, programmers are forced to map their applications, typically written in high-level imperative programming l- guages, such as C or MATLAB, to hardware-oriented languages such as VHDL or Verilog. In this process, they must assume the role of hardware designers and software programmers and navigate a maze of program transformations, mapping, and synthesis steps to produce ef?cient recon?gurable computing implementations. The richness and sophistication of any of these application mapping steps make the mapping of computations to these architectures an increasingly daunting process. It is thus widely believed that automatic compilation from high-level programming languages is the key to the success of recon?gurable computing. This book describes a wide range of code transformations and mapping te- niques for programs described in high-level programming languages, most - tably imperative languages, to recon?gurable architectures.


Table of Contents

1 Introductionp. 1
1.1 The Promise of Reconfigurable Architectures and Systemsp. 1
1.2 The Challenge: How to Program and Compile for Reconfigurable Systems?p. 3
1.3 This Book: Key Techniques when Compiling to Reconfigurable Architecturep. 4
1.4 Organization of this Bookp. 5
2 Overview of Reconfigurable Architecturesp. 7
2.1 Evolution of Reconfigurable Architecturesp. 7
2.2 Reconfigurable Architectures: Key Characteristicsp. 8
2.3 Granularityp. 10
2.3.1 Fine-Grained Reconfigurable Architecturesp. 12
2.3.2 Coarse-Grained Reconfigurable Architecturesp. 14
2.3.3 Hybrid Reconfigurable Architecturesp. 16
2.3.4 Granularity and Mappingp. 19
2.4 Interconnection Topologiesp. 20
2.5 System-Level Integrationp. 21
2.6 Dynamic Reconfigurationp. 24
2.7 Computational and Execution Modelsp. 29
2.8 Streaming Data Input and Outputp. 31
2.9 Summaryp. 31
3 Compilation and Synthesis Flowsp. 33
3.1 Overviewp. 33
3.1.1 Front-Endp. 34
3.1.2 Middle-Endp. 35
3.1.3 Back-Endp. 37
3.2 Hardware Compilation and High-Level Synthesisp. 39
3.2.1 Generic High-Level Synthesisp. 40
3.2.2 Customized High-Level Synthesis for Fine-Grained Reconfigurable Architecturesp. 41
3.2.3 Register-Transfer-Level/Logic Synthesisp. 45
3.2.4 High-Level Compilation for Coarse-Grained Reconfigurable Architecturesp. 48
3.2.5 Placement and Routingp. 49
3.3 Illustrative Examplep. 51
3.3.1 High-Level Source Code Examplep. 51
3.3.2 Data-Flow Representationp. 52
3.3.3 Computation-Oriented Mapping and Schedulingp. 53
3.3.4 Data-Oriented Mapping and Transformationsp. 55
3.3.5 Translation to Hardwarep. 58
3.4 Reconfigurable Computing Issues and Their Impact on Compilationp. 59
3.4.1 Programming Languages and Execution Modelsp. 61
3.4.2 Intermediate Representationsp. 62
3.4.3 Target Reconfigurable Architecture Featuresp. 64
3.5 Summaryp. 65
4 Code Transformationsp. 67
4.1 Bit-Level Transformationsp. 67
4.1.1 Bit-Width Narrowingp. 68
4.1.2 Bit-Level Optimizationsp. 72
4.1.3 Conversion from Floating- to Fixed-Point Representationsp. 75
4.1.4 Nonstandard Floating-Point Formatsp. 77
4.2 Instruction-Level Transformationsp. 77
4.2.1 Operator Strength Reductionp. 78
4.2.2 Height Reductionp. 80
4.2.3 Code Motionp. 84
4.3 Loop-Level Transformationsp. 87
4.3.1 Loop Unrollingp. 87
4.3.2 Loop Tiling and Loop Strip-Miningp. 90
4.3.3 Loop Merging and Loop Distributionp. 94
4.4 Data-Oriented Transformationsp. 95
4.4.1 Data Distributionp. 95
4.4.2 Data Replicationp. 96
4.4.3 Data Reuse and Scalar Replacement in Registers and Internal RAMsp. 96
4.4.4 Other Data-Oriented Transformationsp. 99
4.5 Function-Oriented Transformationsp. 101
4.5.1 Function Inlining and Outliningp. 101
4.5.2 Recursive Functionsp. 104
4.6 Which Code Transformations to Choose?p. 105
4.7 Summaryp. 107
5 Mapping and Execution Optimizationsp. 109
5.1 Hardware Execution Techniquesp. 109
5.1.1 Instruction-Level Parallelismp. 110
5.1.2 Speculative Executionp. 112
5.1.3 Predication and if-conversionp. 114
5.1.4 Multi Taskingp. 116
5.2 Partitioningp. 118
5.2.1 Temporal Partitioningp. 119
5.2.2 Spatial Partitioningp. 124
5.2.3 Illustrative Examplep. 125
5.3 Mapping Program Constructs to Resourcesp. 127
5.3.1 Mapping Scalar Variables to Registersp. 127
5.3.2 Mapping of Operations to FUsp. 129
5.3.3 Mapping of Selection Structuresp. 130
5.3.4 Sharing Functional Units FUsp. 131
5.3.5 Combining Instructions for RFUsp. 132
5.4 Pipeliningp. 134
5.4.1 Pipelined Functional and Execution Unitsp. 135
5.4.2 Pipelining Memory Accessesp. 138
5.4.3 Loop Pipeliningp. 139
5.4.4 Coarse-Grained Pipeliningp. 144
5.4.5 Pipelining Configuration-Computation Sequencesp. 145
5.5 Memory Accessesp. 146
5.5.1 Partitioning and Mapping of Arrays to Memory Resourcesp. 146
5.5.2 Improving Memory Accessesp. 148
5.6 Back-End Supportp. 150
5.6.1 Allocation, Scheduling, and Bindingp. 150
5.6.2 Module Generationp. 151
5.6.3 Mapping, Placement, and Routingp. 153
5.7 Summaryp. 153
6 Compilers for Reconfigurable Architecturesp. 155
6.1 Early Compilation Effortsp. 155
6.2 Compilers for FPGA-Based Systemsp. 157
6.2.1 The SPC Compilerp. 157
6.2.2 A C to Fine-Grained Pipelining Compilerp. 158
6.2.3 The DeepC Silicon Compilerp. 158
6.2.4 The COBRA-ABS Toolp. 158
6.2.5 The DEFACTO Compilerp. 159
6.2.6 The Streams-C Compilerp. 159
6.2.7 The Cameron Compilerp. 160
6.2.8 The MATCH Compilerp. 160
6.2.9 The Galadriel and Nenya Compilersp. 161
6.2.10 The Sea Cucumber Compilerp. 161
6.2.11 The Abstract-Machines Compilerp. 161
6.2.12 The CHAMPION Software Design Environmentp. 162
6.2.13 The SPARCS Toolp. 163
6.2.14 The ROCCC Compilerp. 163
6.2.15 The DWARV Compilerp. 163
6.3 Compilers for Coarse-Grained Reconfigurable Architecturesp. 164
6.3.1 The DIL Compilerp. 164
6.3.2 The RaPiD-C Compilerp. 165
6.3.3 The CoDe-X Compilerp. 165
6.3.4 The XPP-VC Compilerp. 166
6.3.5 The DRESC Compilerp. 166
6.4 Compilers for Hybrid Reconfigurable Architecturesp. 167
6.4.1 The Chimaera-C Compilerp. 167
6.4.2 The Garp and the Nimble C Compilersp. 168
6.4.3 The NAPA-C Compilerp. 168
6.5 Compilation Efforts Summaryp. 169
7 Perspectives on Programming Reconfigurable Computing Platformsp. 177
7.1 How to Make Reconfigurable Computing a Reality?p. 177
7.1.1 Easy of Programmingp. 178
7.1.2 Program Portability and Legacy Code Migrationp. 179
7.1.3 Performance Portabilityp. 180
7.2 Research Directions in Compilation for Reconfigurable Architecturesp. 181
7.2.1 Programming Language Designp. 181
7.2.2 Intermediate Representationp. 181
7.2.3 Mapping to Multiple Computing Enginesp. 182
7.2.4 Code Transformationsp. 182
7.2.5 Design-Space Exploration and Compilation Timep. 183
7.2.6 Pipelined Executionp. 184
7.2.7 Memory Mapping Optimizationsp. 185
7.2.8 Application-Specific Compilers and Coresp. 185
7.2.9 Resource Virtualizationp. 186
7.2.10 Dynamic and Incremental Compilationp. 186
7.3 Tackling the Compilation Challenge for Reconfigurable Architecturesp. 187
7.4 Reconfigurable Architectures and Nanotechnologyp. 189
7.5 Summaryp. 189
8 Final Remarksp. 191
Referencesp. 193
List of Acronymsp. 213
Indexp. 217
Go to:Top of Page