2002 · 33 citations · 3 references
EngineeringComputer EngineeringComputer ScienceCompilersComputer ArchitectureField-programmable Gate ArraysControl-flow AnalysisData-flow AnalysisFpga ArchitectureInstruction SchedulingSpeculative ExecutionTiming AnalysisCompilation For Reconfigurable HardwareCompiler-based High-level SynthesisHardware PipeliningLoop PipeliningPipeline DesignPipeline SchedulingPipeliningSpeculative Task Execution
The paper presents a compiler that generates high‑speed pipeline circuits for C loop and recursive programs, targeting the most time‑consuming parts of many applications. The compiler splits operations into 8‑bit cascades, schedules data‑feedback variables with optimization techniques, and speculatively starts loop‑cycle computations each clock, stalling and canceling when array accesses or feedback dependencies occur. Experiments on simple combinatorial programs show the generated pipelines run 39–47 MHz on an ALTERA EPF10KA, matching hand‑optimized speed, and speculative execution yields more than a two‑fold speed‑up.
In this paper, we show a compiler that generates high speed pipeline circuits for loop and recursive programs written in C programming language, which are the most time exhaustive parts in many application problems. The compiler has following features. First, all operations (except for memory accesses) are divided into cascades of 8-bit width (at maximum) operations in order to achieve high speed clock cycle. Second, in order to fulfil the pipeline, variables that have data feedback dependencies between loop cycles are specially scheduled based on several kinds of optimizing techniques. Furthermore, computations of each loop cycle are speculatively started in every clock cycle even if an array on the same memory bank may be accessed more than once in a loop cycle and there may be data feedback dependencies caused by the array accesses. When the array is accessed more than once, the pipeline is stalled while the array access operations are executed sequentially, and when the feedback dependencies are detected, the speculative computations are cancelled, and restarted after the updates of array are finished. Experiments on simple combinatorial programs showed that the pipeline circuits generated by the compiler run about 39-47 MHz on ALTERA EPF10KA serious (which is as fast as hand optimized circuits), and the speed up by the speculative execution is more than two.
3
Pipeline vectorization for reconfigurable systems
Markus Weinhardt, Wayne Luk · 2003 · 61 citations
Optimizing FPGA-based vector product designs
D. Benyamin, W. H. Luk, John Villasenor · 2003 · 12 citations