register allocation

(redirected from Register pressure)

register allocation

(compiler, algorithm)
The phase of a compiler that determines which values will be placed in registers. Register allocation may be combined with register assignment.

This problem can be shown to be isomorphic to graph colouring by relating values to nodes in the graph and registers to colours. Values (nodes) which must be valid simultaneously are linked by edges and cannot be stored in the same register (coloured the same).

See also register dancing and register spilling.

[Preston Briggs, PhD thesis, Rice University, April 1992 "Register Allocation via Graph Coloring"].
This article is provided by FOLDOC - Free Online Dictionary of Computing (
References in periodicals archive ?
This boosts applications with hot integer loops suffering from register pressure. Below are results for a stress test with high register pressure in integer loop.
Moreover now developers can try more aggressive (in terms of register pressure) optimizations like unroll, inline, aggressive invariant motion, copy propagation...
"This sensor can register pressure ranging from a firm pinch between your thumb and forefinger to twice the pressure exerted by an elephant standing on one foot," said Darren Lipomi, a postdoctoral researcher in Bao's lab, who is part of the research team.
--spilling versus splitting: Since both spilling and splitting live ranges reduce register pressure, how does the register allocator make a trade-off between these techniques, and how does it select the live ranges to operate on?
Because spill-code live ranges span only one instruction (and, in our machine model, registers are freed at instruction boundaries), spilling such a live range does not lower register pressure but increases spill code instead.
The net effect of combining splitting with delayed spilling is that the register allocator may spill only those segments of a virtual register's live range that do not contain references but span regions of high register pressure. This effect can be observed for numerous programs and is the reason for the performance improvements discussed in Section 4.
[lr.sub.1] (z) and [lr.sub.2](z) are transparent live ranges and spilled to reduce register pressure. Although the two live ranges do not have spill cost, they need shuffle code to move values between registers and memory.
This step consists of four major components: compute degree, remove nodes with degree less than N, lower register pressure, and commit the live-range unioning decision.
Lowering Register Pressure. If simplification of [MATHEMATICAL EXPRESSION NOT REPRODUCIBLE IN ASCII] blocks, then fusing the interference graphs of [MATHEMATICAL EXPRESSION NOT REPRODUCIBLE IN ASCII] and [MATHEMATICAL EXPRESSION NOT REPRODUCIBLE IN ASCII] along edge E induces high register pressure.
The definition and use may be far apart, and the live range contains a lot of blocks with high register pressure. Splitting the live range is not possible, even though splitting the parts of the live range that have high register pressure is desirable.
Let us, therefore, turn our attention to programs with significant register pressure.
alvinn, nasa7, tomcatv, doduc, and fpppp are the programs with high register pressure, and here we see the limitations of the all-or-nothing approach to spilling that is the foundation of Chaitin-style register allocation.