Encoding of Pointers for Hardware Synthesis, ..
As designers may model mixed software-hardware systems using a subset of C or C++, we present SpC, a solution to synthesize and optimize a C model with pointers. In hardware, a pointer is not only the address of data in memory, but it may also reference multiple variables mapped to registers, ports or wires. Pointer analysis is used to find the point-to-set of each pointer in the program. In this paper, we address the problem of synthesizing and optimizing pointers to multiple variables and array elements. Temporary variables are defined to optimize loads and stores by minimizing the number of live variables. The combinational logic can also be reduced by encoding the pointers values. An implementation using the SUIF framework is presented, followed by some case studies such as the synthesis of a 2D IDCT.
19/12/2017 · Encoding of Pointers..
As designers may model mixed hardware--software systems using a subset of or ++, we present SpC, a solution to synthesize and optimize hardware models with pointers. In hardware, a pointer is not only the address of data in memory, but it may also reference data mapped to registers, ports, or wires. Pointer analysis is used to find the set of locations each pointer may reference in a program at compile time. In this paper, we address the problem of synthesizing and optimizing pointers to multiple variables or array elements. The value of the pointers are encoded and branching statements are used to dynamically access data referenced by pointers. A heuristic is used to efficiently encode the values of the pointers. Compiler techniques are also used to reduce storage before loads and stores. An implementation using the SUIF framework (Wilson et al., 1994; SUIF Compiler Framework) is presented, followed by some case studies and experimental results.
In the recent past, subsets of C and C++ have been defined to model and synthesize electronic systems as well as reusable IP blocks. In order to synthesize as much as possible of the C syntax, we have been researching the problem of synthesizing and optimizing code with pointers. In this paper, we focus on encoding the pointers' values to minimize the size of the circuits implementing the address translations. After defining the encoding problem, we present a solution based on heuristics and graph-embedding techniques. The algorithm has been integrated in our SpC flow which synthesizes C code with pointers. 1. INTRODUCTION 1.1 Synthesis from C For years, designers have been writing system-level models using programming languages, such as C and C++, to estimate the system performance and verify the functional correctness of the design. However, to implement parts of their design in hardware using synthesis tools, they must manually translate their code into a synthesizable subset of ...