digitalmars.D - meaning of 64bit: not only large memory, but large atomic integer
- redsea (1/1) Jan 07 2009 When I implement some high performance program in linux 32bit, 32bit ato...
- Jarrett Billingsley (2/3) Jan 07 2009 ..Congratulations?
- redsea (17/23) Jan 07 2009 You mean scope & RAII ?
- Robert Jacques (9/13) Jan 07 2009 No you can't. On pretty much all 32-bit systems the double wide Compare ...
- Sean Kelly (8/9) Jan 07 2009 for example, If I want to hold a index & a timestamp to a atomic variabl...
- redsea (9/13) Jan 07 2009 Thanks Sean Kelly and Robert Jacques for teaching me.
When I implement some high performance program in linux 32bit, 32bit atomic if often not sufficient, for example, If I want to hold a index & a timestamp to a atomic variable, 32bit is not enough, in 64bit environment, I can do that.
Jan 07 2009
On Wed, Jan 7, 2009 at 10:47 AM, redsea <redsea 163.com> wrote:When I implement some high performance program in linux 32bit, 32bit atomic if often not sufficient, for example, If I want to hold a index & a timestamp to a atomic variable, 32bit is not enough, in 64bit environment, I can do that...Congratulations?
Jan 07 2009
Jarrett Billingsley Wrote:On Wed, Jan 7, 2009 at 10:47 AM, redsea <redsea 163.com> wrote:You mean scope & RAII ? Yes, it works, very well, thanks Walter. I test some dstress fail test case too, according to http://www.incasoftware.de/~kamm/ldc/tests/dmd-1.038-dstress1601/fail.html scope_06_M is also fixed, but some case with goto still failed. scope_06_M in run/s/scope_06_M.d ok now scope_13_A in run/s/scope_13_A.d still no ok, but Walter said it is not a bug. scope_14_A in run/s/scope_14_A.d scope_14_B in run/s/scope_14_B.d scope_14_C in run/s/scope_14_C.d scope_14_E in run/s/scope_14_E.d scope_17_A in run/s/scope_17_A.d failed scope_17_C in run/s/scope_17_C.d failed scope_17_D in run/s/scope_17_D.d other ones can not pass compile (so I wouldn't be afraid of them). And 17_A, 17_C is using goto combine scope/RAII, so, if we avoid the use of goto, we could be safe.When I implement some high performance program in linux 32bit, 32bit atomic if often not sufficient, for example, If I want to hold a index & a timestamp to a atomic variable, 32bit is not enough, in 64bit environment, I can do that...Congratulations?
Jan 07 2009
On Wed, 07 Jan 2009 10:47:03 -0500, redsea <redsea 163.com> wrote:When I implement some high performance program in linux 32bit, 32bit atomic if often not sufficient, for example, If I want to hold a index & a timestamp to a atomic variable, 32bit is not enough, in 64bit environment, I can do that.No you can't. On pretty much all 32-bit systems the double wide Compare and Swap operation is availible, which allows you to use the index + tag method to advoid the ABA problem. However, a decent number of 64-bit systems don't support this operation leaving the vast majority of lock-free algorithms high and dry. (While there are high order bits you could hide a tag in, kernel developers are already using them for OS stuff). Of course, if you're referring to indexing into an array, you can use two shorts, etc. on 32-bit machines for much the same effect.
Jan 07 2009
== Quote from redsea (redsea 163.com)'s articleWhen I implement some high performance program in linux 32bit, 32bit atomic if often not sufficient,for example, If I want to hold a index & a timestamp to a atomic variable, 32bit is not enough, in 64bit environment, I can do that. The IA-32 instruction set contains a 64-bit CAS operation in addition to the 32-bit CAS. You don't even need a 64-bit machine to do it! The atomics module in Tango supports 64-bit storeIf operations on 32-bit Intel platforms. Sean
Jan 07 2009
Sean Kelly Wrote:The IA-32 instruction set contains a 64-bit CAS operation in addition to the 32-bit CAS. You don't even need a 64-bit machine to do it! The atomics module in Tango supports 64-bit storeIf operations on 32-bit Intel platforms.Thanks Sean Kelly and Robert Jacques for teaching me. I read following in linux kernel code, so I think x86 32 can not support 64 CAS. I'm going to read tango atomic code :) #ifdef CONFIG_X86_32 #else #endif
Jan 07 2009