Storage assignment optimizations through variable coalescence for embedded processors

Modern embedded processors with dedicated address generation unit support memory access with indirect addressing mode with auto-increment and decrement. The auto-increment/decrement mode saves address arithmetic instructions.Liao et al [2][3] categorized this problem as simple offset assignment (SOA) problem and general offset assignment (GOA) problem, which involve storage layout of variables and assignment of address registers respectively proposing heuristic solutions. Later work [6][7] proposed improvements in the performance of Liao's solution by undertaking program and storage transformations that affect access sequence.The algorithms are incorporated into and evaluated on the commercial compiler provided by Motorola to boost code generation performance on the DSP 56k chip. Compared to previous approaches, variable coalescence with program reordering reduces SOA costs by 48% and GOA (2AR) costs by 66% for Mediabench and SPEC benchmarks. Moreover, we show that our approach obtains theoretically optimal solution (zero cost) for the GOA problem in 87% of the cases with just 2 address registers and in 94% of the cases with 3 address registers.

[1]  Mahmut Kandemir,et al.  Improving variable placement for embedded processors , 2000 .

[2]  Sharad Malik,et al.  Optimization of embedded DSP programs using post-pass data-flow analysis , 1997, 1997 IEEE International Conference on Acoustics, Speech, and Signal Processing.

[3]  Catherine H. Gebotys DSP address optimization using a minimum cost circulation technique , 1997, 1997 Proceedings of IEEE International Conference on Computer Aided Design (ICCAD).

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

[5]  Rainer Leupers,et al.  Algorithms for address assignment in DSP code generation , 1996, ICCAD 1996.

[6]  Kurt Keutzer,et al.  Storage assignment to decrease code size , 1996, TOPL.

[7]  Rainer Leupers,et al.  Optimized array index computation in DSP programs , 1998, Proceedings of 1998 Asia and South Pacific Design Automation Conference.

[8]  Steven S. Muchnick,et al.  Advanced Compiler Design and Implementation , 1997 .

[9]  Sharad Malik,et al.  Optimal Live Range Merge for Address Register Allocation in Embedded Programs , 2001, CC.

[10]  Amit Rao,et al.  Storage assignment optimizations to generate compact and efficient code on embedded DSPs , 1999, PLDI '99.

[11]  Srinivas Devadas,et al.  Analysis and Evaluation of Address Arithmetic Capabilities in Custom DSP Architectures , 1997, Des. Autom. Embed. Syst..