TY - JOUR
T1 - Solving the register allocation problem for embedded systems using a hybrid evolutionary algorithm
AU - Topcuoglu, Haluk Rahmi
AU - Demiroz, Betul
AU - Kandemir, Mahmut
N1 - Funding Information:
Manuscript received June 3, 2005; revised September 18, 2005 and June 30, 2006. This work was supported in part by the National Science Foundation (NSF) under Career Award 0093082.
PY - 2007/10
Y1 - 2007/10
N2 - Embedded systems are unique in the challenges they present to application programmers, such as power and memory space constraints. These characteristics make it imperative to design customized compiler passes. One of the important factors that shape runtime performance of a given embedded code is the register allocation phase of compilation. It is crucial to provide aggressive and sophisticated register allocators for embedded devices, where the excessive compilation time can be tolerated due to high demand on code quality. Failing to do a good job on allocating variables to registers (i.e., determining the set of variables to be stored in the limited number of registers) can have serious power, performance, and code size consequences. This paper explores the possibility of employing a hybrid evolutionary algorithm for register allocation problem in embedded systems. The proposed solution combines genetic algorithms with a local search technique. The algorithm exploits a novel, highly specialized crossover operator that takes into account domain-specific information. The results from our implementation based on synthetic benchmarks and routines that are extracted from well-known benchmark suites clearly show that the proposed approach is very successful in allocating registers to variables. In addition, our experimental evaluation also indicates that it outperforms a state-of-the-art register allocation heuristic based on graph coloring for most of the cases experimented.
AB - Embedded systems are unique in the challenges they present to application programmers, such as power and memory space constraints. These characteristics make it imperative to design customized compiler passes. One of the important factors that shape runtime performance of a given embedded code is the register allocation phase of compilation. It is crucial to provide aggressive and sophisticated register allocators for embedded devices, where the excessive compilation time can be tolerated due to high demand on code quality. Failing to do a good job on allocating variables to registers (i.e., determining the set of variables to be stored in the limited number of registers) can have serious power, performance, and code size consequences. This paper explores the possibility of employing a hybrid evolutionary algorithm for register allocation problem in embedded systems. The proposed solution combines genetic algorithms with a local search technique. The algorithm exploits a novel, highly specialized crossover operator that takes into account domain-specific information. The results from our implementation based on synthetic benchmarks and routines that are extracted from well-known benchmark suites clearly show that the proposed approach is very successful in allocating registers to variables. In addition, our experimental evaluation also indicates that it outperforms a state-of-the-art register allocation heuristic based on graph coloring for most of the cases experimented.
UR - http://www.scopus.com/inward/record.url?scp=34948822847&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=34948822847&partnerID=8YFLogxK
U2 - 10.1109/TEVC.2007.892766
DO - 10.1109/TEVC.2007.892766
M3 - Article
AN - SCOPUS:34948822847
SN - 1089-778X
VL - 11
SP - 620
EP - 634
JO - IEEE Transactions on Evolutionary Computation
JF - IEEE Transactions on Evolutionary Computation
IS - 5
ER -