Precise GC

Kagamin spam at here.lot
Fri Apr 13 07:25:04 PDT 2012


On Friday, 13 April 2012 at 13:54:39 UTC, Manu wrote:
> No other processors have branch prediction units anywhere near
> the sophistication of modern x86. Any call through a function 
> pointer
> stalls the pipeline, pipelines are getting longer all the time, 
> and PPC has
> even more associated costs/hazards.
> Most processors can only perform trivial binary branch 
> prediction around an
> 'if'.
> It also places burden on the icache (unable to prefetch), and 
> of course the
> dcache, both of which are much less sophisticated than x86 
> aswell.

Allocation of small aggregated objects usually involves 
allocation of several equally small objects of different types in 
a row, so they sit one after another in heap and gc will visit 
them in a row every time calling function different from the 
previous time, so to x86 processor it would result in constant 
misprediction: AFAIK x86 processor caches only one target address 
per branch (ARM caches a flag?). And icache should not suffer in 
both cases: once you prefetched the function, it will remain in 
the icache and be reused from there the next time.


More information about the Digitalmars-d mailing list