Data Transfers Analysis in Computer Assisted Design Flow of FPGA Accelerators for Aerospace Systems

The integration of Field Programmable Gate Arrays (FPGAs) in an aerospace system improves its efficiency and its flexibility thanks to their programmability, but increases the design complexity. The design flows indeed have to be composed of several steps to fill the gap between the starting solution, which is usually a reference sequential implementation, and the final heterogeneous solution which includes custom hardware accelerators. Among these steps, there are the analysis of the application to identify the functionalities that gain advantages in execution on hardware and the generation of their implementations by means of Hardware Description Languages. Generating these descriptions for a software developer can be a very difficult task because of the different programming paradigms of software programs and hardware descriptions. To facilitate the developer in this activity, High Level Synthesis techniques have been developed aiming at (semi-)automatically generating hardware implementations of specifications written in high level languages (e.g., C). With respect to other embedded systems scenarios, the aerospace systems introduce further constraints that have to be taken into account during the design of these heterogeneous systems. In this type of systems explicit data transfers to and from FPGAs are preferred to the adoption of a shared memory architecture. The first approach indeed potentially improves the predictability of the produced solutions, but the sizes of all the data transferred to and from any devices must be known at design time. Identifying the sizes in presence of complex C applications which use pointers can be a not so easy task. In this paper, a semi-automatic design flow based on the integration of an aerospace design flow, an application analysis technique, and High Level Synthesis methodologies is presented. The initial reference application is analyzed to identify which are the sizes of the data exchanged among the different components of the application. Next, starting from the high level specification and from the results of this analysis, High Level Synthesis techniques are applied to automatically produce the hardware accelerators.

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

[2]  Ting Peng,et al.  OBC-NG: Towards a reconfigurable on-board computing architecture for spacecraft , 2014, 2014 IEEE Aerospace Conference.

[3]  A. Gordon-Ross,et al.  A framework to analyze, compare, and optimize high-performance, on-board processing systems , 2012, 2012 IEEE Aerospace Conference.

[4]  Michael Hind,et al.  Pointer analysis: haven't we solved this problem yet? , 2001, PASTE '01.

[5]  Philippe Fouquart,et al.  ASN.1 Communication Between Heterogeneous Systems , 2000 .

[6]  Fabrizio Ferrandi,et al.  Computer assisted design and integration of FPGA accelerators in aerospace systems , 2016, 2016 IEEE Aerospace Conference.

[7]  Anoop Gupta,et al.  The SPLASH-2 programs: characterization and methodological considerations , 1995, ISCA.

[8]  John E. Stone,et al.  OpenCL: A Parallel Programming Standard for Heterogeneous Computing Systems , 2010, Computing in Science & Engineering.

[9]  Adrian Park,et al.  Designing Modular Hardware Accelerators in C with ROCCC 2.0 , 2010, 2010 18th IEEE Annual International Symposium on Field-Programmable Custom Computing Machines.

[10]  Arturo González-Escribano,et al.  The OpenMP source code repository , 2005, 13th Euromicro Conference on Parallel, Distributed and Network-Based Processing.

[11]  Alejandro Duran,et al.  Optimizing the Exploitation of Multicore Processors and GPUs with OpenMP and OpenCL , 2010, LCPC.

[12]  Guang R. Gao,et al.  Designing the McCAT Compiler Based on a Family of Structured Intermediate Representations , 1992, LCPC.

[13]  Luca Benini,et al.  Lightweight virtual memory support for many-core accelerators in heterogeneous embedded SoCs , 2015, 2015 International Conference on Hardware/Software Codesign and System Synthesis (CODES+ISSS).

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

[15]  Laurent Nana,et al.  Cheddar: a flexible real time scheduling framework , 2004, SIGAda.

[16]  Alan D. George,et al.  Memory-aware optimization of FPGA-based space systems , 2015, 2015 IEEE Aerospace Conference.

[17]  Meenakshi Deshmukh,et al.  Model driven language framework to automate command and data handling code generation , 2015, 2015 IEEE Aerospace Conference.

[18]  Venkatesan T. Chakaravarthy New results on the computability and complexity of points - to analysis , 2003, POPL.

[19]  J. Javier Gutiérrez,et al.  MAST: Modeling and analysis suite for real time applications , 2001, Proceedings 13th Euromicro Conference on Real-Time Systems.

[20]  Charlene Elliott,et al.  Taste™ , 2012 .

[21]  Yu Ting Chen,et al.  A Survey and Evaluation of FPGA High-Level Synthesis Tools , 2016, IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems.

[22]  Peter H. Feiler,et al.  The Architecture Analysis & Design Language (AADL): An Introduction , 2006 .

[23]  Satoshi Matsuoka,et al.  Evaluating and Optimizing OpenCL Kernels for High Performance Computing with FPGAs , 2016, SC16: International Conference for High Performance Computing, Networking, Storage and Analysis.

[24]  David H. Bailey,et al.  The NAS Parallel Benchmarks 2.0 , 2015 .

[25]  Bronis R. de Supinski,et al.  OpenMP for Accelerators , 2011, IWOMP.

[26]  E. Zadok,et al.  Extending GCC with Modular GIMPLE Optimizations , .

[27]  Susan Horwitz,et al.  Pointer-Range Analysis , 2004, SAS.

[28]  Bill Moyer,et al.  A low power unified cache architecture providing power and performance flexibility , 2000, ISLPED'00: Proceedings of the 2000 International Symposium on Low Power Electronics and Design (Cat. No.00TH8514).

[29]  A.D. George,et al.  Hardware/software interface for high-performance space computing with FPGA coprocessors , 2006, 2006 IEEE Aerospace Conference.

[30]  Mark N. Wegman,et al.  Efficiently computing static single assignment form and the control dependence graph , 1991, TOPL.

[31]  Wen-mei W. Hwu,et al.  Modular interprocedural pointer analysis using access paths: design, implementation, and evaluation , 2000, PLDI '00.