[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: SMP, barriers, etc.
From: |
Da Zheng |
Subject: |
Re: SMP, barriers, etc. |
Date: |
Sun, 27 Dec 2009 16:39:04 +0800 |
User-agent: |
Thunderbird 2.0.0.23 (Macintosh/20090812) |
Hi,
Samuel Thibault wrote:
>> After I read this introduction, I checked some atomic operations
>> implementation such as atomic_add_return in Linux for Aphla processors.
>> Before and after these operations change the variable, they put memory
>> barriers. So it's something like this:
>> smp_mb();
>> operations;
>> smp_mb();
>>
>> But the problem is: on SMP, a variable's value can always been changed by
>> another processor after the first memory barrier is called. Thus, the CPU
>> does an operation on the stale value. There seems to be no way that we can
>> guarantee that the variable has the latest value at the moment the CPU is
>> doing the operation on it.
>
> Yes, that's why the operations have a loop that keeps retrying until the
> result is as expected.
I didn't notice there was a loop in the implementation of atomic operations. It
seems most architectures provide a special load instruction that sets a
flag/register, and a conditional store instruction. I found some information
about these instructions but I still have something I'm not sure of. It seems to
me that it should work as follows:
If processor A loads a variable in memory to the register with the special load
instruction, it should monitor *all* cache lines specified by the address
(including the ones on other processors). If any other processors change the
variable in their own cache, processor A has to clear its flag.
After it changes the variable and tries to store the value to memory, the
conditional store instruction might fail. If the store fails, processor A has to
*invalidate* its own cache line so that it can load the latest value in the next
iteration.
Is the process above correct?
Zheng Da
- Re: What would it take...., (continued)
- Re: What would it take...., Da Zheng, 2009/12/23
- Re: What would it take...., Samuel Thibault, 2009/12/23
- Re: What would it take...., Da Zheng, 2009/12/23
- SMP, barriers, etc., Samuel Thibault, 2009/12/23
- Re: SMP, barriers, etc., Da Zheng, 2009/12/26
- Re: SMP, barriers, etc., Samuel Thibault, 2009/12/26
- Re: SMP, barriers, etc.,
Da Zheng <=
- Re: SMP, barriers, etc., Samuel Thibault, 2009/12/27
- Re: SMP, barriers, etc., Da Zheng, 2009/12/27
- Re: SMP, barriers, etc., Samuel Thibault, 2009/12/27
- Re: SMP, barriers, etc., Da Zheng, 2009/12/28
- Re: SMP, barriers, etc., Samuel Thibault, 2009/12/28
- Re: SMP, barriers, etc., Da Zheng, 2009/12/28
- Re: SMP, barriers, etc., Samuel Thibault, 2009/12/28
Re: What would it take...., olafBuddenhagen, 2009/12/23