aha! I think.
Simon Marlow
simonmar at microsoft.com
Thu Oct 27 03:44:10 EDT 2005
On 27 October 2005 01:33, John Meacham wrote:
> I think I might have found why (or partially why) ghc is so slow on
> x86-64..
>
> section 5.10 of the optimization manual
>
http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/
25112.PDF
>
> (which has a whole lot of good info for any processor, including a
> whole chapter on how to write C code that optimizes well independent
> of the CPU)
>
> "don't place code and data on the same cache line"
I'd be surprised if this is an issue. GHC doesn't normally touch the
info tables during execution (with one exception - getting the tag from
a constructor in a datatype with >8 constructors). It touches the info
tables during GC, but it doesn't touch the code during GC. So we might
push some code out of the cache on a GC, but that shouldn't have a large
effect.
It could be an alignment issue, I suppose. Or passing arguments in
registers (we don't, at the moment, on x86_64).
If you have any handy test programs, can you try fiddling with the
alignment of code blocks and see if you get a measurable difference?
(I'm still digesting your other message, I'll reply in due course).
Cheers,
Simon
More information about the Glasgow-haskell-users
mailing list