On Tue, 30 Mar 2004, Simon Marlow wrote:
The upshot of what he found is that we could benefit from some prefetching, perhaps on the order of 10-20%. Particularly prefetching in the allocation area during evaluation, to ensure that memory about to be written to is in the cache, and similar techniques during GC could help. However, actually taking advantage of this is quite hard - prefetching instructions aren't standard, and even when they are getting any benefit can depend on cache architecture and other effects which vary between processor families. Getting things wrong often results in a slowdown. It's just too brittle.
Exactly: prefetching sucks, particularly for a compiler supporting multiple architectures, using native and via-C compilation.
Simon, did you ever try separating the code and data for each closure?
Not recently. But I'd be very surprised if things have changed: the cache benefits need to be pretty big to outweigh the slowdown caused by the extra indirection when entering a closure. Cheers, Simon