2003 · 54 citations · 7 references
EngineeringComputer EngineeringComputer ScienceCompilersComputer ArchitectureField-programmable Gate ArraysField-programmable Gate Array ArchitectureFpga ArchitectureMemory HierarchyMemory Hierarchy DesignMemory ManagementRegister AllocationExecution Time AnalysisMemory Access Pattern AnalysisMemory AllocationMemory CompilerMemory Placement
FPGA-based processors, like many conventional DSP systems, often associate small high performance memories with each processing chip. These memories may be on-board embedded SRAMs or discrete parts. In the process of mapping a computation onto an FPGA processor, it is necessary to map the applications' data to memories. In this work, we present an algorithm that has been implemented in our NAPA C compiler to assign data automatically to memories to produce minimum overall execution time of the loops in the program. With the addition of this algorithm to our compiler, the programmer need not explicitly annotate array declarations with location information. Rather, the compiler analyzes the usage patterns of variables and selects the optimal location for each variable. The algorithm uses a search technique known as implicit enumeration to reduce the otherwise exponential search space. In practice, the use of this memory allocation compiler phase in our SUIF-based NAPA C compiler has negligible effect on compiler run time.
7
NAPA C: compiling for a hybrid RISC/FPGA architecture
Maya Gokhale, Janice M. Stone · 2002 · 171 citations
The NAPA adaptive processing architecture
Charle' Rae Rupp, M. Landguth, T. Garverick et al. · 2002 · 145 citations
Maps: a compiler-managed memory system for Raw machines
Rajeev Barua, Won Oh Lee, Saman Amarasinghe et al. · 2003 · 25 citations