[net.lang] What to do with lots of registers

rcd@nbires.UUCP (Dick Dunn) (07/03/86)

In article <1409@pucc-k>, acz@pucc-k (John R. Jackson) writes:
> I do maintenance and development on the C compiler for the CDC Cyber
> 205 supercomputer.
> 
> Among other oddities about the hardware are a very large set of general
> purpose registers (256 of them!).  All (non-vector) operations are
> performed register to register, so it is best to have as many variables
> declared register as possible...
>...
> A second use of the register file could be to hold global variables.

See a very interesting paper presented at the SIGPLAN Compiler Construction
Conference, Palo Alto, 27 June 1986, appearing in the July SIGPLAN Notices
(the conference proceedings).

The paper is "Global Register Allocation at Link Time", by David Wall of
DEC Western Research Lab.  The idea is to use either data flow analysis or
execution profile information to make decisions about what (scalar)
variables should be allocated to registers, and to include enough
information with the compiled code that the register-allocation decisions
can be deferred to link time so that you can take into account global
considerations.  It was applied to a machine with 64 registers, but results
are also indicated as applicable to machines with a small number of
registers.

I'm not associated with the work in any way; I heard the talk (which was
realistic and well-presented) and it sounded like an interesting idea.
-- 
Dick Dunn	{hao,ucbvax,allegra}!nbires!rcd		(303)444-5710 x3086
   ...Simpler is better.