Related articles |
---|
loop unrolling charles@ircam.ircam.fr (1990-11-05) |
Loop unrolling amelia@roma.quadrics.com (Amelia De Vivo) (1998-09-18) |
Re: Loop unrolling cliff.click@Eng.Sun.COM (Clifford Click) (1998-09-22) |
Loop unrolling amelia@roma.quadrics.com (Amelia De Vivo) (1998-09-26) |
From: | Clifford Click <cliff.click@Eng.Sun.COM> |
Newsgroups: | comp.compilers |
Date: | 22 Sep 1998 14:40:24 -0400 |
Organization: | Sun Microsystems |
References: | 98-09-077 |
Keywords: | optimize |
Amelia De Vivo wrote:
>
> Could someone in this newsgroup suggest me a good reading about loop
> unrolling and related register allocation problems?
> Thank in advance
> Amelia De Vivo
> [There was an exhaustive article on software pipelining in Computing
> Surveys a year or two ago. -John]
Note that loop unrolling != software pipelining.
Software pipelining pretty much requires allocation & scheduling
during the unrolling part. You get a faster schedule, less startup
time, less code. But more compile time and more engineering
complexity (ie. bugs).
In loop unrolling, you just clone the loop body a few times (well, you
also need startup/cleanup loop handling). Then the "normal" code
schedule and register allocation takes place. Much simpler to
implement; harder to screw up (you _can_ blow out I-cache, or not
unroll enough but these are straightforward problems to avoid). Code
is a little slower; you pay pipeline penalties once per trip around
the big loop. Might be a wash on compile time, depending on how fast
you can compile big loop bodies.
Cliff
--
Cliff Click Compiler Designer and Researcher
cliffc at acm.org JavaSoft
(408) 863-3266 MS UCUP02-302
--
Return to the
comp.compilers page.
Search the
comp.compilers archives again.