Header menu link for other important links
X
Efficient spill code for SDRAM
, Palsberg J.
Published in Association for Computing Machinery
2003
Pages: 24 - 31
Abstract
Processors such as StrongARM and memory such as SDRAM enable efficient execution of multiple loads and stores in a single instruction. This is particularly useful in connection with register allocation where spill code may need to save and restore multiple registers. Until now, there has been no effective strategy for utilizing this to its full potential. In this paper we investigate the use of SDRAM for optimization of spill code. The core of the problem is to arrange the variables in the spill area such that loading to and storing from the SDRAM is optimally efficient. We show that the problem is NP-complete and present a method based on integer linear programming (ILP) to solve the problem. We have implemented our approach as an additional phase in a gcc-based compiler for the StrongARM core of Intel's IXP-1200 network processor. Our optimizer, SLA (stack location allocator), rearranges the scalar variables so that memory accesses can be made cheaper. Our experimental results show that our ILP-based method is efficient and that the code generated for our benchmarks runs 0.8-15.1% faster than the code produced by the original compiler with -O2 optimization. Our SLA phase is guaranteed to not deteriorate the execution-time performance and can be configured such as not to increase the code size. Copyright 2003 ACM.
About the journal
JournalData powered by TypesetCASES 2003: International Conference on Compilers, Architecture, and Synthesis for Embedded Systems
PublisherData powered by TypesetAssociation for Computing Machinery
Open AccessNo