SOMA: a tool for synthesizing and optimizing memory accesses in ASICs

Arbitrary memory dependencies and variable latency memory systems are major obstacles to the synthesis of large-scale ASIC systems in high-level synthesis. This paper presents SOMA, a synthesis framework for constructing Memory Access Network (MAN) architectures that inherently enforce memory consistency in the presence of dynamic memory access dependencies. A fundamental bottleneck in any such network is arbitrating between concurrent accesses to a shared memory resource. To alleviate this bottleneck, SOMA uses an application-specific concurrency analysis technique to predict the dynamic memory parallelism profile of the application. This is then used to customize the MAN architecture. Depending on the parallelism profile, the MAN may be optimized for latency, throughput or both. The optimized MAN is automatically synthesized into gate-level structural Verilog using a flexible library of network building blocks. SOMA has been successfully integrated into an automated C-to-hardware synthesis flow, which generates standard cell circuits from unrestricted ANSI-C programs. Post-layout experiments demonstrate that application specific MAN construction significantly improves power and performance.

[1]  Taewhan Kim,et al.  Memory access scheduling and binding considering energy minimization in multi-bank memory systems , 2004, Proceedings. 41st Design Automation Conference, 2004..

[2]  Nikil D. Dutt,et al.  A comprehensive estimation technique for high-level synthesis , 1995, Proceedings of the Eighth International Symposium on System Synthesis.

[3]  Sharad Malik,et al.  Exact memory size estimation for array computations without loop unrolling , 1999, DAC '99.

[4]  Li Shang,et al.  A comprehensive high-level synthesis system for control-flow intensive behaviors , 2003, GLSVLSI '03.

[5]  Monica S. Lam,et al.  Efficient context-sensitive pointer analysis for C programs , 1995, PLDI '95.

[6]  Monica S. Lam,et al.  Cloning-based context-sensitive pointer alias analysis using binary decision diagrams , 2004, PLDI '04.

[7]  Michael Hind,et al.  Evaluating the effectiveness of pointer alias analyses , 2001, Sci. Comput. Program..

[8]  Seth Copen Goldstein,et al.  C to Asynchronous Dataflow Circuits: An End-to-End Toolflow , 2004 .

[9]  Francky Catthoor,et al.  Storage requirement estimation for optimized design of data intensive applications , 2004, TODE.

[10]  Jens Sparsø,et al.  Scheduling discipline for latency and bandwidth guarantees in asynchronous network-on-chip , 2005, 11th IEEE International Symposium on Asynchronous Circuits and Systems.

[11]  Koichi Nishida,et al.  A C-based synthesis system, Bach, and its application (invited talk) , 2001, ASP-DAC '01.

[12]  Taewhan Kim,et al.  An integrated algorithm for memory allocation and assignment in high-level synthesis , 2002, DAC '02.

[13]  Eric Senn,et al.  Memory accesses management during high level synthesis , 2004, International Conference on Hardware/Software Codesign and System Synthesis, 2004. CODES + ISSS 2004..

[14]  Alexandre Yakovlev,et al.  Priority arbiters , 2000, Proceedings Sixth International Symposium on Advanced Research in Asynchronous Circuits and Systems (ASYNC 2000) (Cat. No. PR00586).

[15]  Jan M. Rabaey,et al.  Memory Estimation for High Level Synthesis , 1994, 31st Design Automation Conference.

[16]  Giovanni De Micheli,et al.  Synthesis of hardware models in C with pointers and complex data structures , 2001, IEEE Trans. Very Large Scale Integr. Syst..

[17]  Kazutoshi Wakabayashi,et al.  C-based synthesis experiences with a behavior synthesizer, "Cyber" , 1999, Design, Automation and Test in Europe Conference and Exhibition, 1999. Proceedings (Cat. No. PR00078).

[18]  Prithviraj Banerjee,et al.  Automatic translation of software binaries onto FPGAs , 2004, Proceedings. 41st Design Automation Conference, 2004..

[19]  Pedro C. Diniz,et al.  Synthesis of pipelined memory access controllers for streamed data applications on FPGA-based computing engines , 2001, International Symposium on System Synthesis (IEEE Cat. No.01EX526).

[20]  Frank Vahid,et al.  Techniques for synthesizing binaries to an advanced register/memory structure , 2005, FPGA '05.

[21]  Seth Copen Goldstein,et al.  Optimizing memory accesses for spatial computation , 2003, International Symposium on Code Generation and Optimization, 2003. CGO 2003..

[22]  Nikil D. Dutt,et al.  Integrating Program Transformations In The Memory-based Synthesis Of Image And Video Algorithms , 1994, IEEE/ACM International Conference on Computer-Aided Design.

[23]  Stan Y. Liao,et al.  Hardware synthesis from C/C++ , 1999, DATE '99.

[24]  Stan Y. Liao Towards a new standard for system-level design , 2000, CODES '00.

[25]  Miodrag Potkonjak,et al.  MediaBench: a tool for evaluating and synthesizing multimedia and communications systems , 1997, Proceedings of 30th Annual International Symposium on Microarchitecture.

[26]  Alice C. Parker,et al.  SMASH: a program for scheduling memory-intensive application-specific hardware , 1994, Proceedings of 7th International Symposium on High-Level Synthesis.