Dataflow Analysis and Optimization of High Level Language Code for Hardware-Software Co-Design

(ABSTRACT) Recent advancements in FPGA technology have provided devices which are not only suited for digital logic prototyping, but also are capable of implementing complex computations. The use of these devices in multi-FPGA Custom Computing Machines (CCMs) has provided the potential to execute large sections of programs entirely in custom hardware which can provide a substantial speedup over execution in a general-purpose sequential processor. Unfortunately, the development tools currently available for CCMs do not allow users to easily configure multi-FPGA platforms. In order to exploit the capabilities of such an architecture, a procedure has been developed to perform a dataflow analysis of programs written in C which is capable of several hardware-specific optimizations. This, together with other software tools developed for this purpose, allows CCMs and their host processors to be targeted from the same high-level specification. ACKNOWLEDGEMENTS I would like to thank Dr. Peter Athanas for his constant encouragement throughout the duration of this project. I would also like to thank Dr. Abbott and Dr. Davis for their support and for their time. I would like to thank Jim Peterson for his help throughout this project. I would also like to thank my family for their consistent support throughout my academic career. In addition I would like to thank all of my friends for their continued support. Finally, a special thanks to my sister, Amalie, who has consistently encouraged me to do my best.

[1]  P.M. Athanas,et al.  Real-Time Image Processing on a Custom Computing Platform , 1995, Computer.

[2]  Wayne Luk,et al.  Constraint-based Hierarchical Placement of Parallel Programs , 1994, FPL.

[3]  Dan Zuras,et al.  Integer multiplication and division on the HP Precision Architecture , 1987, ASPLOS 1987.

[4]  Richard W. Conners,et al.  A MOdular and Reprogrammable Real-time Processing Hardware, MORRPH , 1995, Proceedings IEEE Symposium on FPGAs for Custom Computing Machines.

[5]  W. Luk A declarative approach to incremental custom computing , 1995, Proceedings IEEE Symposium on FPGAs for Custom Computing Machines.

[6]  Peter M. Athanas,et al.  Scheduling and partitioning ANSI-C programs onto multi-FPGA CCM architectures , 1996, 1996 Proceedings IEEE Symposium on FPGAs for Custom Computing Machines.

[7]  Christopher W. Fraser,et al.  A Retargetable C Compiler: Design and Implementation , 1995 .

[8]  M AthanasPeter,et al.  Processor reconfiguration through instruction-set metamorphosis , 1993 .

[9]  Dan Zuras,et al.  Integer multiplication and division on the HP precision architecture , 1987, IEEE Trans. Computers.

[10]  John F. Wakerly,et al.  Digital design - principles and practices , 1990, Prentice Hall Series in computer engineering.

[11]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[12]  David R. Galloway The Transmogrifier C hardware description language and compiler for FPGAs , 1995, Proceedings IEEE Symposium on FPGAs for Custom Computing Machines.

[13]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[14]  Duncan A. Buell,et al.  Splash 2 , 1992, SPAA.

[15]  A. Smith,et al.  PRISM-II compiler and architecture , 1993, [1993] Proceedings IEEE Workshop on FPGAs for Custom Computing Machines.

[16]  Arthur H. Veen,et al.  Dataflow machine architecture , 1986, CSUR.

[17]  Eduardo Sanchez,et al.  A C++ compiler for FPGA custom execution units synthesis , 1995, Proceedings IEEE Symposium on FPGAs for Custom Computing Machines.