Chaitin's Algorithm
   HOME





Chaitin's Algorithm
Chaitin's algorithm is a bottom-up, graph coloring register allocation algorithm that uses cost/degree as its spill metric. It is named after its designer, Gregory Chaitin. Chaitin's algorithm was the first register allocation algorithm that made use of coloring of the interference graph for both register allocations and spilling. Chaitin's algorithm was presented on the 1982 SIGPLAN SIGPLAN is the Association for Computing Machinery's Special Interest Group (SIG) on programming languages. This SIG explores programming language concepts and tools, focusing on design, implementation, practice, and theory. Its members are progra ... Symposium on Compiler Construction, and published in the symposium proceedings. It was extension of an earlier 1981 paper on the use of graph coloring for register allocation. Chaitin's algorithm formed the basis of a large section of research into register allocators. References * {{algorithm-stub Graph algorithms ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


picture info

Graph Coloring
In graph theory, graph coloring is a methodic assignment of labels traditionally called "colors" to elements of a Graph (discrete mathematics), graph. The assignment is subject to certain constraints, such as that no two adjacent elements have the same color. Graph coloring is a special case of graph labeling. In its simplest form, it is a way of coloring the Vertex (graph theory), vertices of a graph such that no two adjacent vertices are of the same color; this is called a vertex coloring. Similarly, an ''edge coloring'' assigns a color to each Edge (graph theory), edges so that no two adjacent edges are of the same color, and a face coloring of a planar graph assigns a color to each Face (graph theory), face (or region) so that no two faces that share a boundary have the same color. Vertex coloring is often used to introduce graph coloring problems, since other coloring problems can be transformed into a vertex coloring instance. For example, an edge coloring of a graph is just ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


picture info

Register Allocation
In compiler optimization, register allocation is the process of assigning local automatic variables and Expression (computer science), expression results to a limited number of processor registers. Register allocation can happen over a basic block (''local register allocation''), over a whole function/Subroutine, procedure (''global register allocation''), or across function boundaries traversed via call-graph (''interprocedural register allocation''). When done per function/procedure the calling convention may require insertion of save/restore around each Call site, call-site. Context Principle {, class="wikitable floatright" , + Different number of general-purpose registers in the most common architectures , - ! Architecture ! scope="col" , 32 bit ! scope="col" , 64 bit , - ! scope="row" , ARM , 15 , 31 , - ! scope="row" , Intel x86 , 8 , 16 , - ! scope="row" , MIPS , 32 , 32 , - ! scope="row" , POWER/PowerPC , 32 , 32 , - ! scope ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


picture info

Algorithm
In mathematics and computer science, an algorithm () is a finite sequence of Rigour#Mathematics, mathematically rigorous instructions, typically used to solve a class of specific Computational problem, problems or to perform a computation. Algorithms are used as specifications for performing calculations and data processing. More advanced algorithms can use Conditional (computer programming), conditionals to divert the code execution through various routes (referred to as automated decision-making) and deduce valid inferences (referred to as automated reasoning). In contrast, a Heuristic (computer science), heuristic is an approach to solving problems without well-defined correct or optimal results.David A. Grossman, Ophir Frieder, ''Information Retrieval: Algorithms and Heuristics'', 2nd edition, 2004, For example, although social media recommender systems are commonly called "algorithms", they actually rely on heuristics as there is no truly "correct" recommendation. As an e ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


Spill Metric
A spill metric is a heuristic metric used by register allocators to decide which registers to spill. Popular spill metrics are: * ''cost'' / ''degree'' - introduced in Chaitin's algorithm Chaitin's algorithm is a bottom-up, graph coloring register allocation algorithm that uses cost/degree as its spill metric. It is named after its designer, Gregory Chaitin. Chaitin's algorithm was the first register allocation algorithm that made ... * ''cost'' / ''degree2'' - emphasizes the spill's effect on neighbours * ''cost'' - emphasizes run time * minimising number of spill operations Where ''cost'' is the estimated cost of spilling a value from registers into memory. Digital registers {{compu-stub ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


Gregory Chaitin
Gregory John Chaitin ( ; born 25 June 1947) is an Argentina, Argentine-United States, American mathematician and computer scientist. Beginning in the late 1960s, Chaitin made contributions to algorithmic information theory and metamathematics, in particular a computer-theoretic result equivalent to Gödel's incompleteness theorem. He is considered to be one of the founders of what is today known as algorithmic (Solomonoff–Kolmogorov–Chaitin, Kolmogorov or program-size) Kolmogorov complexity, complexity together with Andrei Kolmogorov and Ray Solomonoff. Along with the works of e.g. Solomonoff, Kolmogorov, Per Martin-Löf, Martin-Löf, and Leonid Levin, algorithmic information theory became a foundational part of theoretical computer science, information theory, and mathematical logic. It is a common subject in several computer science curricula. Besides computer scientists, Chaitin's work draws attention of many philosophers and mathematicians to fundamental problems in mathe ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


Interference Graph
Interference is the act of interfering, invading, or poaching. Interference may also refer to: Communications * Interference (communication), anything which alters, modifies, or disrupts a message * Adjacent-channel interference, caused by extraneous power from a signal in an adjacent channel * Co-channel interference, also known as crosstalk * Electromagnetic interference, disturbance that affects an electrical circuit * Inter-carrier interference, caused by Doppler shift in OFDM modulation * Intersymbol interference, distortion caused by successive symbols Entertainment * Interference (band), an Irish band which formed in 1984 * ''Interference'' (Crease album), 1995 * ''Interference'' (Cubanate album), 1998 * ''Interference'' (film), Paramount's first all-talking film * "Interference" (Prison Break episode), a 2007 episode * ''Interference – Book One'', a 1999 ''Doctor Who'' novel by Lawrence Miles * ''Interference – Book Two'', a 1999 ''Doctor Who'' novel by Lawr ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  




SIGPLAN
SIGPLAN is the Association for Computing Machinery's Special Interest Group (SIG) on programming languages. This SIG explores programming language concepts and tools, focusing on design, implementation, practice, and theory. Its members are programming language developers, educators, implementers, researchers, theoreticians, and users. Conferences * POPL, Principles of Programming Languages (POPL) * PLDI, Programming Language Design and Implementation (PLDI) * International Symposium on Memory Management (ISMM) * Languages, Compilers, and Tools for Embedded Systems (LCTES) * Symposium on Principles and Practice of Parallel Programming (PPoPP) * International Conference on Functional Programming (ICFP) * SPLASH (conference), Systems, Programming, Languages, and Applications: Software for Humanity (SPLASH) * OOPSLA, Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA) * HOPL, History of Programming Languages (HOPL) * Dynamic Languages Symposium (DLS) Associated ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]