[cpp-threads] memory model

Alexander Terekhov alexander.terekhov at gmail.com
Mon May 2 10:07:37 BST 2005


On 5/1/05, Peter Dimov <pdimov at mmltd.net> wrote:
[...]
> In Sparc-like terms, load_acq is
> 
>    load
>    #LoadLoad | #LoadStore

(Just for the sake of completeness)

load_hlb is

   load
   #LoadLoad 

load_hsb is

   load
   #LoadStore

> 
> load_ccacq is
> 
>    load
>    #LoadLoad

load_cchlb is

   load
   #LoadLoad 

load_cchsb is

   load

> 
> because control-dependent stores are implicitly ordered, and load_ddacq is
> 
>    load

same for load_ddhlb and load_ddhsb.

> 
> because data-dependent accesses are implicitly ordered.
> 
> (I hope I got these right.)

Likewise. 

Note that "emulation" of acq stuff with trailing bidirection 
Spac-like fences still orders way too much so to speak. "Ideal" 
hardware would provide Itanic-like unidirectional labels, but 
would also allow naked "semaphore" stuff and hlb-only/hsb-only 
relaxation (in addition to classic acquire), and would also 
have labels for constituent sink barriers of classic release.

regards,
alexander.




More information about the cpp-threads mailing list