Boost logo

Boost :

Subject: Re: [boost] [lockfree::fifo] Review
From: Andy Venikov (avenikov_at_[hidden])
Date: 2009-12-10 18:37:16


Tim Blechmann wrote:
>>> all 32 bit platforms that i know of are using the full 32bit as address
>>> space (the lower two bits are 0 because of 32bit alignment) ... on 64bit
>>> platforms it is quite different ... ppc64, ia64 and x86_64 all use just
>>> a part of the full address space (iirc 48 bit for x86_64) ... the rest
>>> should be usable as aba prevention tag.
>> 48 bits is only for the current x86_64 platforms, it will get upgraded
>> to 64 bits eventually.
>>
>> However, such platforms will also support DWCAS, so you have your backup
>> solution.
>
> it is also performance related, though ... on x86_64 (nehalem) my fifo
> stress test runs about 25% faster with pointer/tag compression than with
> cmpxchg16b ...
> that said, the lock-free property is for me more important than the
> throughput, since i am using it for soft real-time systems ...

Yes, this has also been my fear that cmpxchg outperforms cmpxch8b which
outperforms cmpxch16b.

Tim, have you read the replies to my post on c.p.t regarding ABA bits?
Even on this thread someone (I think Helge) argued that even 32 bits may
not be enough. Now I'm thinking that maybe "generation counter" solution
may not be workable as a general solution.

Andy.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk