This is the mail archive of the guile@cygnus.com mailing list for the guile project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: gc notes available


[ Graham, I'm CCing this to the Guile list because I think it is of
  general interest. ]

Graham Hughes <ghughes@cs.ucsb.edu> writes:

> >>>>> "Marius" == Marius Vollmer <mvo@zagadka.ping.de> writes:
> 
>     Marius> [ compared to just a function call when making write
>     Marius> barriers explicit. ]
> 
>     Marius> But the assumption is that the page faults will be quite
>     Marius> rare, no?  MOst mutations occur in the youngest
>     Marius> generation, and the older generations are static so that
>     Marius> they don't need to be treated at every gc turn.
> 
> One of the problems with this line of thinking is that actual data is
> lacking.  So: as for the page fault itself, Ben Zorn has measurements
> suggesting that the true cost of a protection fault may be close to
> 10,000 cycles in 1990. (Jones & Lin, _Garbage Collection_, p213), when
> Urs Holzle has come up with a way to do write barriers in only two
> additional SPARC instructions (p173 in same).
> 
> Even if Zorn's measurements are an order of magnitude off, it's still
> ridiculous compared to the alternative.
> 
>     Marius> We would incur the function call overhead at every
>     Marius> *potential* mutation of a older generation, not only at
>     Marius> the *actual* mutations.
> 
> Yes, but this overhead is two instructions compared to thousands.

Yes, that makes the explicit `software' write barriers preferable, I
think.  This is a good thing, because getting the needed support for
`hardware' write barriers from the OS might be tricky (or not, I'm
really not the right guy to discuss this topic).  When we can get by
with software barriers, we should do so.

Could you post more details how Urs has done the two-instruction
trick?