LALPC: Exploiting Parallelism from FPGAs Using C Language

This paper presents LALPC, a prototype high-level synthesis tool, specialized in hardware generation for loop-intensive code segments. As demonstrated in a previous work, the underlying hardware components target by LALPC are highly specialized for loop pipeline execution, resulting in efficient implementations, both in terms of performance and resources usage (silicon area). LALPC extends the functionality of a previous tool by using a subset of the C language as input code to describe computations, improving the usability and potential acceptance of the technique among developers. LALPC also enhances parallelism exploitation by applying loop unrolling, and providing support for automatic generation and scheduling of parallel memory accesses. The combination of using the C language to automate the process of hardware design, with an efficient underlying scheme to support loop pipelining, constitutes the main goal and contribution of the work described in this paper. Experimental results have shown the effectiveness of those techniques to enhance performance, and also exemplifies how some of the LALPC compiler features may support performance-resources trade-off analysis tasks.

[1]  Gorker Alp Malazgirt,et al.  Application specific multi-port memory customization in FPGAs , 2014, 2014 24th International Conference on Field Programmable Logic and Applications (FPL).

[2]  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..

[3]  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.

[4]  Wayne Luk,et al.  REFLECT: Rendering FPGAs to Multi-core Embedded Computing , 2011 .

[5]  Jason Helge Anderson,et al.  LegUp: high-level synthesis for FPGA-based processor/accelerator systems , 2011, FPGA '11.

[6]  Wayne Luk,et al.  Source-directed transformations for hardware compilation , 2003, Proceedings. 2003 IEEE International Conference on Field-Programmable Technology (FPT) (IEEE Cat. No.03EX798).

[7]  Jason Helge Anderson,et al.  From software threads to parallel hardware in high-level synthesis for FPGAs , 2013, 2013 International Conference on Field-Programmable Technology (FPT).

[8]  Sumit Gupta,et al.  SPARK: A Parallelizing Approach to the High-Level Synthesis of Digital Circuits , 2004 .

[9]  Wim Vanderbauwhede,et al.  High-Performance Computing Using FPGAs , 2013 .

[10]  J. Gregory Steffan,et al.  Efficient multi-ported memories for FPGAs , 2010, FPGA '10.

[11]  Pedro Pinto,et al.  The MATISSE MATLAB compiler , 2013, 2013 11th IEEE International Conference on Industrial Informatics (INDIN).

[12]  Alberto L. Sangiovanni-Vincentelli,et al.  Metamodeling: An Emerging Representation Paradigm for System-Level Design , 2009, IEEE Design & Test of Computers.

[13]  Wayne Luk,et al.  Controlling a complete hardware synthesis toolchain with LARA aspects , 2013, Microprocess. Microsystems.

[14]  João M. P. Cardoso,et al.  LALP: A Language to Program Custom FPGA-Based Acceleration Engines , 2011, International Journal of Parallel Programming.

[15]  Jason Helge Anderson,et al.  LegUp: An open-source high-level synthesis tool for FPGA-based processor/accelerator systems , 2013, TECS.

[16]  João Manuel Paiva Cardoso,et al.  COMPILAÇÃO DE ALGORITMOS EM JAVA™ PARA SISTEMAS COMPUTACIONAIS RECONFIGURÁVEIS COM EXPLORAÇÃO DO PARALELISMO AO NÍVEL DAS OPERAÇÕES , 2000 .

[17]  Gary Smith,et al.  High-Level Synthesis: Past, Present, and Future , 2009, IEEE Design & Test of Computers.