Results 1 
5 of
5
An analysis of graph coloring register allocation
, 2006
"... Graph coloring is the de facto standard technique for register allocation within a compiler. In this paper we examine the importance of the quality of the coloring algorithm and various extensions of the basic graph coloring technique by replacing the coloring phase of the GNU compiler’s register al ..."
Abstract

Cited by 2 (1 self)
 Add to MetaCart
Graph coloring is the de facto standard technique for register allocation within a compiler. In this paper we examine the importance of the quality of the coloring algorithm and various extensions of the basic graph coloring technique by replacing the coloring phase of the GNU compiler’s register allocator with an optimal coloring algorithm. We then extend this optimal algorithm to incorporate various extensions such as coalescing and preferential register assignment. We find that using an optimal coloring algorithm has surprisingly little benefit and empirically demonstrate the benefit of the various extensions.
Nearly optimal register allocation with PBQP
 In Proceedings of the 7th Joint Modular Languages Conference (JMLC’06). LNCS
, 2006
"... Abstract. For irregular architectures global register allocation remains a challenging problem, and has received a lot of attention in recent years. The classical graphcolouring analogy used by Chaitin and Briggs is not adequate for irregular architectures featuring nonorthogonal instruction sets ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
Abstract. For irregular architectures global register allocation remains a challenging problem, and has received a lot of attention in recent years. The classical graphcolouring analogy used by Chaitin and Briggs is not adequate for irregular architectures featuring nonorthogonal instruction sets and irregular register sets. Previous work [1, 2] on register allocation based on partitioned boolean quadratic programming (PBQP) has demonstrated that this approach is effective for highly irregular architectures and small benchmarks. However, experiments have shown that the heuristic used for nonreducible nodes performs poorly for larger benchmarks and more regular architectures. In this paper we present a new heuristic for PBQP, which significantly outperforms the old heuristic, and produces register allocations equal to those of the stateoftheart graphcolouring approach. We also present a new solver for PBQP which is based on branchandbound and is able to solve register allocations optimally. The branchandbound solver allows PBQP to be used as a progressive register allocator, where programmers may explicitly trade extra compile time for a better register allocation. Experiments were conducted using the register allocation problems in the SPEC2000 benchmark suite as input, with IA32 as the target architecture. Using an optimal solver for PBQP we were able to solve 97.4 % of the register allocation problems in SPEC2000 optimally. 1
Register Allocation Algorithms
"... Register allocation is the process of multiplexing a huge number of target program variables onto a small number of on chip registers. And the ultimate goal is to keep as many operands as possible in registers to minimize the communications between memory and CPU, and in the meantime, maximize the e ..."
Abstract
 Add to MetaCart
Register allocation is the process of multiplexing a huge number of target program variables onto a small number of on chip registers. And the ultimate goal is to keep as many operands as possible in registers to minimize the communications between memory and CPU, and in the meantime, maximize the execution speed of program execution. Register allocation is a well known NPcomplete problem. Even though plenty of efforts have been dedicated to register allocation, there are still a lot of challenging problems facing concurrent compiler scientists; this paper is aimed to provide a general survey on present register allocation algorithms and analyze the main perplexing issues and their possible solutions. Mainly the following are the register allocation algorithm topics we have been
Research Statement
"... My research objective is to study problems where thorough scientific investigation and novel insights may yield a practical realworld solution. I believe that academic research cannot and should not be solely the province of basic research that seeks only to expand the boundaries of knowledge and u ..."
Abstract
 Add to MetaCart
My research objective is to study problems where thorough scientific investigation and novel insights may yield a practical realworld solution. I believe that academic research cannot and should not be solely the province of basic research that seeks only to expand the boundaries of knowledge and understanding without concern for potential realworld application. Many realworld problems have at their heart an intellectually challenging research problem. These problems will not be solved in industry by developers and project managers. Instead, thorough scientific inquiry and novel insights that advance the field of computer science are needed. I believe it is essential that the connection to the realworld context of the problem be maintained. Although in the process of finding a successful solution it is useful to solve a problem abstraction, in order for a solution to be relevant, it must translate to a practical solution. For example, computer systems research should be performed using a system that is as close to a production quality as possible. The extra effort of system building and maintenance is the cost of ensuring that the research solution directly maps to a realworld solution that can have an immediate meaningful impact on everyday life. Applied research is substantially different from product development. The goal is not simply to
Register Loading via Linear Programming
, 2012
"... We study the following optimization problem. The input is a number k and a directed graph with a specified “start ” vertex, each of whose vertices may have one “memory bank requirement”, an integer. There are k “registers”, labeled 1...k. A valid solution associates to the vertices with no bank requ ..."
Abstract
 Add to MetaCart
We study the following optimization problem. The input is a number k and a directed graph with a specified “start ” vertex, each of whose vertices may have one “memory bank requirement”, an integer. There are k “registers”, labeled 1...k. A valid solution associates to the vertices with no bank requirement one or more “load instructions ” L[b,j], for bank b and register j, such that every directed trail from the start vertex to some vertex with bank requirement c contains a vertex u that has been associated L[c,i] (for some register i ≤ k) and no vertex following u in the trail has been associated an L[b,i], for any other bank b. The objective is to minimize the total number of associated load instructions. We give a k(k +1)approximation algorithm based on linear programming rounding, with (k+1) being the best possible unless Vertex Cover has approximation 2−ǫ for ǫ> 0. We also present a O(klogn) approximation, with n being the number of vertices in the input directed graph. Based on the same linear program, another rounding method outputs a valid solution with objective at most 2k times the optimum for k registers, using 2k−1 registers. 1