On 18 August 2011 12:29, Johan Tibell <johan.tib...@gmail.com> wrote:
> On Thu, Aug 18, 2011 at 12:22 PM, Alexander Kjeldaas > <alexander.kjeld...@gmail.com> wrote: > > The Nehalem micro-architecture has made unaligned loads very cheap, as > long > > as they do not cross a cache line boundary. > > I am thinking that this makes it possible for ghc to use 40-bit pointers, > > and generally use "packed" structure layout. This again should improve > > performance by increasing the effective CPU cache size. > > Even given a packed structure layout, the memory allocator could be > improved > > to ensure that no object field will cross a cache line by moving the > object > > a few bytes in either direction. > > Comments? How hard-coded is the ghc object layout? > > I believe there are lots of assumptions about the alignment of heap > objects i.e. we use word sized loads which would fail on some > architectures if allocated memory wasn't word aligned. > > Unaligned word-sized loads work fine on x86, and this would be x86-64 only, or even Nehalem (and later) only. Or, from a cost perspective, it could be interesting for non-Nehalem as well, as RAM is (usually) the most expensive component when running a server. (But anyways, developing features for pre-Nehalem is slightly pointless IMHO). So I guess the alignment would be per-architecture or a flag. If it is currently hardcoded, it would have to be configurable. Alexander -- Johan >
_______________________________________________ Cvs-ghc mailing list Cvs-ghc@haskell.org http://www.haskell.org/mailman/listinfo/cvs-ghc