Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!uunet!world!esegue!compilers-sender From: hankd@ecn.purdue.edu (Hank Dietz) Newsgroups: comp.compilers Subject: Re: Compilers taking advantage of architectural enhancements Summary: CRegs strike again! Keywords: optimize, design Message-ID: <9010180555.AA09900@dynamo.ecn.purdue.edu> Date: 18 Oct 90 05:55:17 GMT References: <1990Oct11.223224.26604@rice.edu> <1990Oct12.231125.1275@esegue.segue.boston.ma.us> Sender: compilers-sender@esegue.segue.boston.ma.us Reply-To: hankd@ecn.purdue.edu (Hank Dietz) Organization: Purdue University Engineering Computer Network Lines: 49 Approved: compilers@esegue.segue.boston.ma.us In article <1990Oct12.231125.1275@esegue.segue.boston.ma.us> aglew@crhc.uiuc.edu (Andy Glew) writes: >>In the proceedings of Sigplan 90, there's a paper about how to chew >>lots of registers. >> >> Improving Register Allocation for Subscripted Variables >> Callahan, Carr, Kennedy >> >>I suggested the subtitle "How to use of all those FP registers" but nobody >>was impressed. Also, there's a limit to how many registers you need, at >>least for scientific fortran. It depends on the speed of memory and cache, >>speed of the FPU, and the actual applications. The idea is that once the >>FPU is running at full speed, more registers are wasted. > >I'm pretty sure that being able to put elements of aggregates into >registers is the next big step - subscripted variables and structure fields. It isn't hard to use lots of registers... the trick is to benefit from doing so. Fetching from outside the processor is harmless provided that it never slows the system down, and that point often can be reached with a surprisingly small number of registers. Unrolling and better alias analysis are two good approaches to making more registers useful -- there is also the hardware fix called CRegs (see the paper in Supercomputing 1988), which allows aliased values to be kept in registers (really CRegs). ... >>>Heterogenous register file ... >>At first glance, the problem seems susceptable to coloring. >>Perhaps I'm missing something. > >I agree with you --- I really don't understand why heterogenous >register files are so hard to handle. But homogenous register files >are one thing that compiler people have gone into rhapsodies wrt. RISC >about. > >Here's one example: the Intel 80x86 is basically a heterogenous >register file machine. Get a copy of the Compiler Writer's Guide. I have one for the 286. It presents a very reasonable scheme for using coloring with multiple classes of registers (as in a 286). In fact, I think it is one of the most understandable descriptions of the coloring technique in general. -hankd@ecn.purdue.edu -- Send compilers articles to compilers@esegue.segue.boston.ma.us {ima | spdcc | world}!esegue. Meta-mail to compilers-request@esegue.