lkml.org 
[lkml]   [2009]   [Jul]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [tip:perfcounters/urgent] x86: atomic64: The atomic64_t data type should be 8 bytes aligned on 32-bit too


On Fri, 3 Jul 2009, tip-bot for Eric Dumazet wrote:
>
> x86: atomic64: The atomic64_t data type should be 8 bytes aligned on 32-bit too
>
> Locked instructions on two cache lines at once are painful. If
> atomic64_t uses two cache lines, my test program is 10x slower.
>
> The chance for that is significant: 4/32 or 12.5%.

Btw, the comments here are not strictly correct.

It's not necessarily even about "two cachelines". It's true that crossing
cachelines is extra painful, but from a CPU core angle, there's another
access width that matters almost as much, namely the width of the bus
between the core and the L1 cache. If it's not aligned to that, the core
needs to do each 8-byte read/write as two accesses, even if it's to the
same cacheline, and that complicates things.

The cacheline itself is generally larger than the cache access width. I
could easily see a 64B cacheline, but a 256b (32B) bus between the cache
and the core.

Making the atomics be naturally aligned means that you never cross either
one, of course.

Linus


\
 
 \ /
  Last update: 2009-10-18 23:28    [from the cache]
©2003-2014 Jasper Spaans. Advertise on this site