LALP: A Novel Language to Program Custom FPGA-Based Architectures

Field-Programmable Gate Arrays (FPGAs) are becoming increasingly important in embedded and high-performance computing systems. They allow performance levels close to the ones obtained from Application-Specific Integrated Circuits (ASICs), while still keeping design and implementation flexibility. However, to efficiently program FPGAs, one needs the expertise of hardware developers and to master hardware description languages (HDLs) such as VHDL or Verilog. The attempts to furnish a high-level compilation flow (e.g., from C programs) still have open issues before efficient and consistent results can be obtained. Bearing in mind the FPGA resources, we have developed LALP, a novel language to program FPGAs. A compilation framework including mapping capabilities supports the language. The main ideas behind LALP is to provide a higher abstraction level than HDLs, to exploit the intrinsic parallelism of hardware resources, and to permit the programmer to control execution stages whenever the compiler techniques are unable to generate efficient implementations. In this paper we describe LALP, and show how it can be used to achieve high-performance computing solutions.

[1]  Carl Ebeling,et al.  Specifying and compiling applications for RaPiD , 1998, Proceedings. IEEE Symposium on FPGAs for Custom Computing Machines (Cat. No.98TB100251).

[2]  Pedro C. Diniz,et al.  A Data-Driven Approach for Pipelining Sequences of Data-Dependent Loops , 2007 .

[3]  G. Ramalingam,et al.  On loops, dominators, and dominance frontiers , 2002, TOPL.

[4]  John Wawrzynek,et al.  The Garp Architecture and C Compiler , 2000, Computer.

[5]  Seth Copen Goldstein,et al.  Fast compilation for pipelined reconfigurable fabrics , 1999, FPGA '99.

[6]  Stephen A. Edwards,et al.  The Challenges of Synthesizing Hardware from C-Like Languages , 2006, IEEE Design & Test of Computers.

[7]  Vicki H. Allan,et al.  Software pipelining , 1995, CSUR.

[8]  Wayne Luk,et al.  Pipeline vectorization , 2001, IEEE Trans. Comput. Aided Des. Integr. Circuits Syst..

[9]  Wayne Luk,et al.  Interleaving behavioral and cycle-accurate descriptions for reconfigurable hardware compilation , 2005, 13th Annual IEEE Symposium on Field-Programmable Custom Computing Machines (FCCM'05).

[10]  Walid A. Najjar,et al.  Impact of Loop Unrolling on Area, Throughput and Clock Frequency in ROCCC: C to VHDL Compiler for FPGAs , 2006, ARC.

[11]  Alok N. Choudhary,et al.  A system for synthesizing optimized FPGA hardware from Matlab(R) , 2001, IEEE/ACM International Conference on Computer Aided Design. ICCAD 2001. IEEE/ACM Digest of Technical Papers (Cat. No.01CH37281).

[12]  João M. P. Cardoso,et al.  Automatic generation of FPGA hardware accelerators using a domain specific language , 2009, 2009 International Conference on Field Programmable Logic and Applications.

[13]  Maya Gokhale,et al.  Co-Synthesis to a Hybrid RISC/FPGA Architecture , 2000, J. VLSI Signal Process..

[14]  B. Ramakrishna Rau,et al.  Iterative modulo scheduling: an algorithm for software pipelining loops , 1994, MICRO 27.

[15]  João M. P. Cardoso Dynamic loop pipelining in data-driven architectures , 2005, CF '05.

[16]  Roberto Passerone,et al.  A Platform-Based Taxonomy for ESL Design , 2006, IEEE Design & Test of Computers.

[17]  Guy Even,et al.  An FPGA implementation of pipelined multiplicative division with IEEE Rounding , 2007 .

[18]  Alexander Aiken,et al.  Perfect Pipelining: A New Loop Parallelization Technique , 1988, ESOP.

[19]  João M. P. Cardoso,et al.  Aggressive Loop Pipelining for Reconfigurable Architectures , 2007, 2007 International Conference on Field Programmable Logic and Applications.

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

[21]  Greg Snider Performance-constrained pipelining of software loops onto reconfigurable hardware , 2002, FPGA '02.