A Study on the Impact of Compiler Optimizations on High-Level Synthesis

High-level synthesis is a design process that takes an untimed, behavioral description in a high-level language like C and produces register-transfer-level (RTL) code that implements the same behavior in hardware. In this design flow, the quality of the generated RTL is greatly influenced by the high-level description of the language. Hence it follows that both source-level and IR-level compiler optimizations could either improve or hurt the quality of the generated RTL. The problem of ordering compiler optimization passes, also known as the phase-ordering problem, has been an area of active research over the past decade. In this paper, we explore the effects of both source-level and IR optimizations and phase ordering on high-level synthesis. The parameters of the generated RTL are very sensitive to high-level optimizations. We study three commonly used source-level optimizations in isolation and then propose simple yet effective heuristics to apply them to obtain a reasonable latency-area tradeoff. We also study the phase-ordering problem for IR-level optimizations from a HLS perspective and compare it to a CPU-based setting. Our initial results show that an input-specific order can achieve a significant reduction in the latency of the generated RTL, and opens up this technology for future research.

[1]  Nikil D. Dutt,et al.  Coordinated parallelizing compiler optimizations and high-level synthesis , 2004, TODE.

[2]  Keith D. Cooper,et al.  ACME: adaptive compilation made efficient , 2005, LCTES '05.

[3]  Gary S. Tyson,et al.  Exhaustive optimization phase order space exploration , 2006, International Symposium on Code Generation and Optimization (CGO'06).

[4]  Rudolf Eigenmann,et al.  Fast and effective orchestration of compiler optimizations for automatic performance tuning , 2006, International Symposium on Code Generation and Optimization (CGO'06).

[5]  Philippe Coussy,et al.  High-Level Synthesis: from Algorithm to Digital Circuit , 2008 .

[6]  Mark Stephenson,et al.  Predicting unroll factors using supervised classification , 2005, International Symposium on Code Generation and Optimization.

[7]  Philippe Coussy,et al.  High-Level Synthesis , 2008 .

[8]  David I. August,et al.  Compiler optimization-space exploration , 2003, International Symposium on Code Generation and Optimization, 2003. CGO 2003..

[9]  Pedro C. Diniz,et al.  Modeling Loop Unrolling: Approaches and Open Issues , 2004, SAMOS.

[10]  Volume Assp,et al.  ACOUSTICS. SPEECH. AND SIGNAL PROCESSING , 1983 .

[11]  Jason Cong,et al.  Coordinated resource optimization in behavioral synthesis , 2010, 2010 Design, Automation & Test in Europe Conference & Exhibition (DATE 2010).

[12]  Michael F. P. O'Boyle,et al.  Using machine learning to focus iterative optimization , 2006, International Symposium on Code Generation and Optimization (CGO'06).

[13]  Mary Lou Soffa,et al.  An approach for exploring code improving transformations , 1997, TOPL.

[14]  Pedro C. Diniz,et al.  A compiler approach to fast hardware design space exploration in FPGA-based systems , 2002, PLDI '02.

[15]  Paul van der Mark,et al.  Using Iterative Compilation for Managing Software Pipeline-Unrolling Trade-offs , 1999 .

[16]  Mary Lou Soffa,et al.  A model-based framework: an approach for profit-driven optimization , 2005, International Symposium on Code Generation and Optimization.

[17]  Mary Lou Soffa,et al.  Predicting the impact of optimizations for embedded systems , 2003 .

[18]  Daniel D. Gajski,et al.  High ― Level Synthesis: Introduction to Chip and System Design , 1992 .

[19]  Lori Pollock An approach to incremental compilation of optimized code , 1986 .

[20]  Trevor Mudge,et al.  MiBench: A free, commercially representative embedded benchmark suite , 2001 .

[21]  Jason Cong,et al.  Platform-Based Behavior-Level and System-Level Synthesis , 2006, 2006 IEEE International SOC Conference.

[22]  B. Lee A new algorithm to compute the discrete cosine Transform , 1984 .

[23]  Rajesh Gupta,et al.  High-Level Synthesis: A Retrospective , 2008 .

[24]  Michael Stepp,et al.  Equality saturation: a new approach to optimization , 2009, POPL '09.

[25]  Mary Lou Soffa,et al.  A Framework for Exploring Optimization Properties , 2009, CC.

[26]  Keith D. Cooper,et al.  Optimizing for reduced code space using genetic algorithms , 1999, LCTES '99.

[27]  Jason Cong,et al.  AutoPilot: A Platform-Based ESL Synthesis System , 2008 .

[28]  Saman P. Amarasinghe,et al.  Meta optimization: improving compiler heuristics with machine learning , 2003, PLDI '03.

[29]  Michael F. P. O'Boyle,et al.  Combined Selection of Tile Sizes and Unroll Factors Using Iterative Compilation , 2000, Proceedings 2000 International Conference on Parallel Architectures and Compilation Techniques (Cat. No.PR00622).

[30]  Douglas L. Jones,et al.  Fast searches for effective optimization phase sequences , 2004, PLDI '04.

[31]  Keith D. Cooper,et al.  Efficiently exploring compiler optimization sequences with pairwise pruning , 2011, EXADAPT '11.

[32]  Jason Cong,et al.  An efficient and versatile scheduling algorithm based on SDC formulation , 2006, 2006 43rd ACM/IEEE Design Automation Conference.

[33]  Todor Stefanov,et al.  Optimal Loop Unrolling and Shifting for Reconfigurable Architectures , 2009, TRETS.

[34]  Gang Ren,et al.  Analytic Models and Empirical Search: A Hybrid Approach to Code Optimization , 2005, LCPC.

[35]  Mary Lou Soffa,et al.  An approach to ordering optimizing transformations , 1990, PPOPP '90.

[36]  Vikram S. Adve,et al.  LLVM: a compilation framework for lifelong program analysis & transformation , 2004, International Symposium on Code Generation and Optimization, 2004. CGO 2004..

[37]  Jason Cong,et al.  High-Level Synthesis for FPGAs: From Prototyping to Deployment , 2011, IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems.

[38]  Tulika Mitra,et al.  A Model for Hardware Realization of Kernel Loops , 2003, FPL.