All of lore.kernel.org
 help / color / mirror / Atom feed
* Other-multicopy atomicity
@ 2017-09-02  4:09 Akira Yokosawa
  2017-09-03  0:57 ` Paul E. McKenney
  0 siblings, 1 reply; 5+ messages in thread
From: Akira Yokosawa @ 2017-09-02  4:09 UTC (permalink / raw)
  To: Paul E. McKenney; +Cc: perfbook, Akira Yokosawa

Hi Paul,

I have a comment on the term "other-multicompy atomicity".

It took a while for me to realize that the "other-" stands for "other than self CPU".
At first, it sounded like "other type of multicompy atomicity", which looked
quite vague.

Commit 43236beadb1 ("memorder: Expand on cumulativity and {other,} multicopy
atomicity") helped me to realize your intention. May I suggest to add a footnote
on the use of "other-"?

Also, you failed to replace tabs to white spaces in listing added in the
above mentioned commit.

       Thanks, Akira


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Other-multicopy atomicity
  2017-09-02  4:09 Other-multicopy atomicity Akira Yokosawa
@ 2017-09-03  0:57 ` Paul E. McKenney
  2017-09-03  2:02   ` Akira Yokosawa
  0 siblings, 1 reply; 5+ messages in thread
From: Paul E. McKenney @ 2017-09-03  0:57 UTC (permalink / raw)
  To: Akira Yokosawa; +Cc: perfbook

On Sat, Sep 02, 2017 at 01:09:37PM +0900, Akira Yokosawa wrote:
> Hi Paul,
> 
> I have a comment on the term "other-multicompy atomicity".
> 
> It took a while for me to realize that the "other-" stands for "other than self CPU".
> At first, it sounded like "other type of multicompy atomicity", which looked
> quite vague.
> 
> Commit 43236beadb1 ("memorder: Expand on cumulativity and {other,} multicopy
> atomicity") helped me to realize your intention. May I suggest to add a footnote
> on the use of "other-"?

I am trying to do a bit too much with that paragraph, aren't I?

How about the patch below?

> Also, you failed to replace tabs to white spaces in listing added in the
> above mentioned commit.

Good eyes, fixed!  (Not yet pushed, will get there.)

							Thanx, Paul

------------------------------------------------------------------------

commit 87b29716cee78c5505039ba933c2f991ed3b1dec
Author: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Date:   Sat Sep 2 17:48:39 2017 -0700

    memorder: Clarify other-multicopy atomicity
    
    Reported-by: Akira Yokosawa <akiyks@gmail.com>
    Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>

diff --git a/memorder/memorder.tex b/memorder/memorder.tex
index 62544ae8ed52..90e2b5e2f294 100644
--- a/memorder/memorder.tex
+++ b/memorder/memorder.tex
@@ -1703,32 +1703,32 @@ and other counterintuitive behavior, as discussed in the next section.
 
 Threads running on a \emph{multicopy atomic}~\cite{Stone:1995:SP:623262.623912}
 platform are guaranteed
-to agree on the order of writes, even to different variables.
+to agree on the order of stores, even to different variables.
 A useful mental model of such a system is the single-bus architecture
 shown in
 Figure~\ref{fig:memorder:Global System Bus And Multi-Copy Atomicity}.
-If each write resulted in a message on the bus, and if the bus could
-accommodate only one write at a time, then any pair of CPUs would
-agree on the order of all writes that they observed.
+If each store resulted in a message on the bus, and if the bus could
+accommodate only one store at a time, then any pair of CPUs would
+agree on the order of all stores that they observed.
 Unfortunately, building a computer system as shown in the figure,
 without store buffers or even caches, would result in glacial computation.
-CPU vendors have therefore taken one of three approaches:
-(1)~Provide store buffers, caches, and the rest and abandon
-multicopy atomicity (weakly ordered platforms),
-(2)~Provide all those hardware optimizations, and invest many transistors
-into preserving multicopy atomicity (TSO platforms), or
-(3)~Define a slightly weaker \emph{other-multicopy atomicity} that allows
-a given CPU's stores to become visible to that CPU before they become visible
-to other CPUs, but in which each of those stores becomes visible to all
-the other CPUs simultaneously~\cite{ARMv8A:2017}.
-Perhaps there will come a day when all platforms provide some flavor
-of multi-copy atomicity, but
-in the meantime, non-multicopy-atomic platforms do exist, and so software
-does need to deal with them.
+CPU vendors interested in providing multicopy atomicity have therefore
+instead provided the slightly weaker
+\emph{other-multicopy atomicity}~\cite{ARMv8A:2017},
+which excludes the CPU doing a given store from the requirement that all
+CPUs agree on the order of all stores.
+This means that if only a subset of CPUs are doing stores, the
+other CPUs will agree on the order of stores, hence the ``other''
+in ``other-multicopy atomicity''.
+Unlike multicopy-atomic platforms, within other-multicopy-atomic platforms,
+the CPU doing the store is permitted to observe its
+store early, which allows its later loads to obtain the newly stored
+value directly from the store buffer.
+This in turn improves performance.
 
 \QuickQuiz{}
 	Can you give a specific example showing different behavior for
-	multicopy atomic on the one hand and other multicopy atomic
+	multicopy atomic on the one hand and other-multicopy atomic
 	on the other?
 \QuickQuizAnswer{
 \begin{listing}[tbp]
@@ -1790,6 +1790,12 @@ exists (1:r1=1 /\ 1:r2=0)
 	which in turn allows the \co{exists} clause to trigger.
 } \QuickQuizEnd
 
+
+Perhaps there will come a day when all platforms provide some flavor
+of multi-copy atomicity, but
+in the meantime, non-multicopy-atomic platforms do exist, and so software
+does need to deal with them.
+
 \begin{listing}[tbp]
 { \scriptsize
 \begin{verbbox}[\LstLineNo]

--
To unsubscribe from this list: send the line "unsubscribe perfbook" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  https://urldefense.proofpoint.com/v2/url?u=http-3A__vger.kernel.org_majordomo-2Dinfo.html&d=DwIBAg&c=jf_iaSHvJObTbx-siA1ZOg&r=ux41CW3B5BSVxDMRNRWyLbUmPebZc70Kq4AkfdiRGMI&m=4C4QF7BfbGArvD2WxudLaa7Qm9wEkEiEvkE5vbtD8PE&s=jilcBkgE1e1AY60gJfhiKpDB00kxiL--FmmprNHWFw0&e= 


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: Other-multicopy atomicity
  2017-09-03  0:57 ` Paul E. McKenney
@ 2017-09-03  2:02   ` Akira Yokosawa
  2017-09-03  3:06     ` Paul E. McKenney
  0 siblings, 1 reply; 5+ messages in thread
From: Akira Yokosawa @ 2017-09-03  2:02 UTC (permalink / raw)
  To: Paul E. McKenney; +Cc: perfbook, Akira Yokosawa

On 2017/09/02 17:57:44 -0700, Paul E. McKenney wrote:
> On Sat, Sep 02, 2017 at 01:09:37PM +0900, Akira Yokosawa wrote:
>> Hi Paul,
>>
>> I have a comment on the term "other-multicompy atomicity".
>>
>> It took a while for me to realize that the "other-" stands for "other than self CPU".
>> At first, it sounded like "other type of multicompy atomicity", which looked
>> quite vague.
>>
>> Commit 43236beadb1 ("memorder: Expand on cumulativity and {other,} multicopy
>> atomicity") helped me to realize your intention. May I suggest to add a footnote
>> on the use of "other-"?
> 
> I am trying to do a bit too much with that paragraph, aren't I?
> 
> How about the patch below?

Please see the comments below.

> 
>> Also, you failed to replace tabs to white spaces in listing added in the
>> above mentioned commit.
> 
> Good eyes, fixed!  (Not yet pushed, will get there.)
> 
> 							Thanx, Paul
> 
> ------------------------------------------------------------------------
> 
> commit 87b29716cee78c5505039ba933c2f991ed3b1dec
> Author: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
> Date:   Sat Sep 2 17:48:39 2017 -0700
> 
>     memorder: Clarify other-multicopy atomicity
>     
>     Reported-by: Akira Yokosawa <akiyks@gmail.com>
>     Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
> 
> diff --git a/memorder/memorder.tex b/memorder/memorder.tex
> index 62544ae8ed52..90e2b5e2f294 100644
> --- a/memorder/memorder.tex
> +++ b/memorder/memorder.tex
> @@ -1703,32 +1703,32 @@ and other counterintuitive behavior, as discussed in the next section.
>  
>  Threads running on a \emph{multicopy atomic}~\cite{Stone:1995:SP:623262.623912}
>  platform are guaranteed
> -to agree on the order of writes, even to different variables.
> +to agree on the order of stores, even to different variables.
>  A useful mental model of such a system is the single-bus architecture
>  shown in
>  Figure~\ref{fig:memorder:Global System Bus And Multi-Copy Atomicity}.
> -If each write resulted in a message on the bus, and if the bus could
> -accommodate only one write at a time, then any pair of CPUs would
> -agree on the order of all writes that they observed.
> +If each store resulted in a message on the bus, and if the bus could
> +accommodate only one store at a time, then any pair of CPUs would
> +agree on the order of all stores that they observed.
>  Unfortunately, building a computer system as shown in the figure,
>  without store buffers or even caches, would result in glacial computation.
> -CPU vendors have therefore taken one of three approaches:
> -(1)~Provide store buffers, caches, and the rest and abandon
> -multicopy atomicity (weakly ordered platforms),
> -(2)~Provide all those hardware optimizations, and invest many transistors
> -into preserving multicopy atomicity (TSO platforms), or
> -(3)~Define a slightly weaker \emph{other-multicopy atomicity} that allows
> -a given CPU's stores to become visible to that CPU before they become visible
> -to other CPUs, but in which each of those stores becomes visible to all
> -the other CPUs simultaneously~\cite{ARMv8A:2017}.
> -Perhaps there will come a day when all platforms provide some flavor
> -of multi-copy atomicity, but
> -in the meantime, non-multicopy-atomic platforms do exist, and so software
> -does need to deal with them.
> +CPU vendors interested in providing multicopy atomicity have therefore
> +instead provided the slightly weaker
> +\emph{other-multicopy atomicity}~\cite{ARMv8A:2017},

On the ARMv8 multicopy atomicity, I found a paper "Simplifying ARM Concurrency:
Multicopy-atomic Axiomatic and Operational Models for ARMv8" at
https://urldefense.proofpoint.com/v2/url?u=http-3A__www.cl.cam.ac.uk_-7Epes20_armv8-2Dmca_armv8-2Dmca-2Ddraft.pdf&d=DwICaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=ux41CW3B5BSVxDMRNRWyLbUmPebZc70Kq4AkfdiRGMI&m=1JFkyKvDbZmHr-CRbzC5HuCgZZCSnpvTioqYoFTfMog&s=BdlEGULkAzO_ibDzx4a3IT6_-zC815dPjOwJa9qPLLo&e=  (Draft, July 12, 2017)
by Christopher Pulte, et.al. It is a draft, but could also be cited here.
As you know, "ARM ARM" is quite a large document. If you specified where to look
in the manual, it would be even better.

> +which excludes the CPU doing a given store from the requirement that all
> +CPUs agree on the order of all stores.
> +This means that if only a subset of CPUs are doing stores, the
> +other CPUs will agree on the order of stores, hence the ``other''
> +in ``other-multicopy atomicity''.

Yes, now the meaning of "other-" is clear enough.

      Thanks, Akira

> +Unlike multicopy-atomic platforms, within other-multicopy-atomic platforms,
> +the CPU doing the store is permitted to observe its
> +store early, which allows its later loads to obtain the newly stored
> +value directly from the store buffer.
> +This in turn improves performance.
>  
>  \QuickQuiz{}
>  	Can you give a specific example showing different behavior for
> -	multicopy atomic on the one hand and other multicopy atomic
> +	multicopy atomic on the one hand and other-multicopy atomic
>  	on the other?
>  \QuickQuizAnswer{
>  \begin{listing}[tbp]
> @@ -1790,6 +1790,12 @@ exists (1:r1=1 /\ 1:r2=0)
>  	which in turn allows the \co{exists} clause to trigger.
>  } \QuickQuizEnd
>  
> +
> +Perhaps there will come a day when all platforms provide some flavor
> +of multi-copy atomicity, but
> +in the meantime, non-multicopy-atomic platforms do exist, and so software
> +does need to deal with them.
> +
>  \begin{listing}[tbp]
>  { \scriptsize
>  \begin{verbbox}[\LstLineNo]
> 
> 


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Other-multicopy atomicity
  2017-09-03  2:02   ` Akira Yokosawa
@ 2017-09-03  3:06     ` Paul E. McKenney
  2017-09-03  5:40       ` Akira Yokosawa
  0 siblings, 1 reply; 5+ messages in thread
From: Paul E. McKenney @ 2017-09-03  3:06 UTC (permalink / raw)
  To: Akira Yokosawa; +Cc: perfbook

On Sun, Sep 03, 2017 at 11:02:55AM +0900, Akira Yokosawa wrote:
> On 2017/09/02 17:57:44 -0700, Paul E. McKenney wrote:
> > On Sat, Sep 02, 2017 at 01:09:37PM +0900, Akira Yokosawa wrote:
> >> Hi Paul,
> >>
> >> I have a comment on the term "other-multicompy atomicity".
> >>
> >> It took a while for me to realize that the "other-" stands for "other than self CPU".
> >> At first, it sounded like "other type of multicompy atomicity", which looked
> >> quite vague.
> >>
> >> Commit 43236beadb1 ("memorder: Expand on cumulativity and {other,} multicopy
> >> atomicity") helped me to realize your intention. May I suggest to add a footnote
> >> on the use of "other-"?
> > 
> > I am trying to do a bit too much with that paragraph, aren't I?
> > 
> > How about the patch below?
> 
> Please see the comments below.
> 
> > 
> >> Also, you failed to replace tabs to white spaces in listing added in the
> >> above mentioned commit.
> > 
> > Good eyes, fixed!  (Not yet pushed, will get there.)
> > 
> > 							Thanx, Paul
> > 
> > ------------------------------------------------------------------------
> > 
> > commit 87b29716cee78c5505039ba933c2f991ed3b1dec
> > Author: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
> > Date:   Sat Sep 2 17:48:39 2017 -0700
> > 
> >     memorder: Clarify other-multicopy atomicity
> >     
> >     Reported-by: Akira Yokosawa <akiyks@gmail.com>
> >     Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
> > 
> > diff --git a/memorder/memorder.tex b/memorder/memorder.tex
> > index 62544ae8ed52..90e2b5e2f294 100644
> > --- a/memorder/memorder.tex
> > +++ b/memorder/memorder.tex
> > @@ -1703,32 +1703,32 @@ and other counterintuitive behavior, as discussed in the next section.
> >  
> >  Threads running on a \emph{multicopy atomic}~\cite{Stone:1995:SP:623262.623912}
> >  platform are guaranteed
> > -to agree on the order of writes, even to different variables.
> > +to agree on the order of stores, even to different variables.
> >  A useful mental model of such a system is the single-bus architecture
> >  shown in
> >  Figure~\ref{fig:memorder:Global System Bus And Multi-Copy Atomicity}.
> > -If each write resulted in a message on the bus, and if the bus could
> > -accommodate only one write at a time, then any pair of CPUs would
> > -agree on the order of all writes that they observed.
> > +If each store resulted in a message on the bus, and if the bus could
> > +accommodate only one store at a time, then any pair of CPUs would
> > +agree on the order of all stores that they observed.
> >  Unfortunately, building a computer system as shown in the figure,
> >  without store buffers or even caches, would result in glacial computation.
> > -CPU vendors have therefore taken one of three approaches:
> > -(1)~Provide store buffers, caches, and the rest and abandon
> > -multicopy atomicity (weakly ordered platforms),
> > -(2)~Provide all those hardware optimizations, and invest many transistors
> > -into preserving multicopy atomicity (TSO platforms), or
> > -(3)~Define a slightly weaker \emph{other-multicopy atomicity} that allows
> > -a given CPU's stores to become visible to that CPU before they become visible
> > -to other CPUs, but in which each of those stores becomes visible to all
> > -the other CPUs simultaneously~\cite{ARMv8A:2017}.
> > -Perhaps there will come a day when all platforms provide some flavor
> > -of multi-copy atomicity, but
> > -in the meantime, non-multicopy-atomic platforms do exist, and so software
> > -does need to deal with them.
> > +CPU vendors interested in providing multicopy atomicity have therefore
> > +instead provided the slightly weaker
> > +\emph{other-multicopy atomicity}~\cite{ARMv8A:2017},
> 
> On the ARMv8 multicopy atomicity, I found a paper "Simplifying ARM Concurrency:
> Multicopy-atomic Axiomatic and Operational Models for ARMv8" at
> https://urldefense.proofpoint.com/v2/url?u=http-3A__www.cl.cam.ac.uk_-7Epes20_armv8-2Dmca_armv8-2Dmca-2Ddraft.pdf&d=DwICaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=ux41CW3B5BSVxDMRNRWyLbUmPebZc70Kq4AkfdiRGMI&m=1JFkyKvDbZmHr-CRbzC5HuCgZZCSnpvTioqYoFTfMog&s=BdlEGULkAzO_ibDzx4a3IT6_-zC815dPjOwJa9qPLLo&e=  (Draft, July 12, 2017)
> by Christopher Pulte, et.al. It is a draft, but could also be cited here.
> As you know, "ARM ARM" is quite a large document. If you specified where to look
> in the manual, it would be even better.

Section B2.3, which I have now included in the citation.  Please see
below for updated patch.

> > +which excludes the CPU doing a given store from the requirement that all
> > +CPUs agree on the order of all stores.
> > +This means that if only a subset of CPUs are doing stores, the
> > +other CPUs will agree on the order of stores, hence the ``other''
> > +in ``other-multicopy atomicity''.
> 
> Yes, now the meaning of "other-" is clear enough.

Glad it helped!

							Thanx, Paul

------------------------------------------------------------------------

commit 8223c00857dca7eef47015744b77c126d0c8626e
Author: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Date:   Sat Sep 2 17:48:39 2017 -0700

    memorder: Clarify other-multicopy atomicity
    
    Reported-by: Akira Yokosawa <akiyks@gmail.com>
    Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>

diff --git a/memorder/memorder.tex b/memorder/memorder.tex
index 62544ae8ed52..1d4256d76e7a 100644
--- a/memorder/memorder.tex
+++ b/memorder/memorder.tex
@@ -1703,32 +1703,32 @@ and other counterintuitive behavior, as discussed in the next section.
 
 Threads running on a \emph{multicopy atomic}~\cite{Stone:1995:SP:623262.623912}
 platform are guaranteed
-to agree on the order of writes, even to different variables.
+to agree on the order of stores, even to different variables.
 A useful mental model of such a system is the single-bus architecture
 shown in
 Figure~\ref{fig:memorder:Global System Bus And Multi-Copy Atomicity}.
-If each write resulted in a message on the bus, and if the bus could
-accommodate only one write at a time, then any pair of CPUs would
-agree on the order of all writes that they observed.
+If each store resulted in a message on the bus, and if the bus could
+accommodate only one store at a time, then any pair of CPUs would
+agree on the order of all stores that they observed.
 Unfortunately, building a computer system as shown in the figure,
 without store buffers or even caches, would result in glacial computation.
-CPU vendors have therefore taken one of three approaches:
-(1)~Provide store buffers, caches, and the rest and abandon
-multicopy atomicity (weakly ordered platforms),
-(2)~Provide all those hardware optimizations, and invest many transistors
-into preserving multicopy atomicity (TSO platforms), or
-(3)~Define a slightly weaker \emph{other-multicopy atomicity} that allows
-a given CPU's stores to become visible to that CPU before they become visible
-to other CPUs, but in which each of those stores becomes visible to all
-the other CPUs simultaneously~\cite{ARMv8A:2017}.
-Perhaps there will come a day when all platforms provide some flavor
-of multi-copy atomicity, but
-in the meantime, non-multicopy-atomic platforms do exist, and so software
-does need to deal with them.
+CPU vendors interested in providing multicopy atomicity have therefore
+instead provided the slightly weaker
+\emph{other-multicopy atomicity}~\cite[Section B2.3]{ARMv8A:2017},
+which excludes the CPU doing a given store from the requirement that all
+CPUs agree on the order of all stores.
+This means that if only a subset of CPUs are doing stores, the
+other CPUs will agree on the order of stores, hence the ``other''
+in ``other-multicopy atomicity''.
+Unlike multicopy-atomic platforms, within other-multicopy-atomic platforms,
+the CPU doing the store is permitted to observe its
+store early, which allows its later loads to obtain the newly stored
+value directly from the store buffer.
+This in turn improves performance.
 
 \QuickQuiz{}
 	Can you give a specific example showing different behavior for
-	multicopy atomic on the one hand and other multicopy atomic
+	multicopy atomic on the one hand and other-multicopy atomic
 	on the other?
 \QuickQuizAnswer{
 \begin{listing}[tbp]
@@ -1790,6 +1790,12 @@ exists (1:r1=1 /\ 1:r2=0)
 	which in turn allows the \co{exists} clause to trigger.
 } \QuickQuizEnd
 
+
+Perhaps there will come a day when all platforms provide some flavor
+of multi-copy atomicity, but
+in the meantime, non-multicopy-atomic platforms do exist, and so software
+does need to deal with them.
+
 \begin{listing}[tbp]
 { \scriptsize
 \begin{verbbox}[\LstLineNo]

--
To unsubscribe from this list: send the line "unsubscribe perfbook" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  https://urldefense.proofpoint.com/v2/url?u=http-3A__vger.kernel.org_majordomo-2Dinfo.html&d=DwIBAg&c=jf_iaSHvJObTbx-siA1ZOg&r=ux41CW3B5BSVxDMRNRWyLbUmPebZc70Kq4AkfdiRGMI&m=Q7EVeNleJycyxaIDU8zrQ-TvAloij0JpWYOZrXIKx4c&s=etV_KUVGGzv0WanXWYzQHz5KX51L3c3orpwBfwRCyvY&e= 


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: Other-multicopy atomicity
  2017-09-03  3:06     ` Paul E. McKenney
@ 2017-09-03  5:40       ` Akira Yokosawa
  0 siblings, 0 replies; 5+ messages in thread
From: Akira Yokosawa @ 2017-09-03  5:40 UTC (permalink / raw)
  To: Paul E. McKenney; +Cc: perfbook, Akira Yokosawa

On 2017/09/02 20:06:18 -0700, Paul E. McKenney wrote:
> On Sun, Sep 03, 2017 at 11:02:55AM +0900, Akira Yokosawa wrote:
>> On 2017/09/02 17:57:44 -0700, Paul E. McKenney wrote:
>>> On Sat, Sep 02, 2017 at 01:09:37PM +0900, Akira Yokosawa wrote:
>>>> Hi Paul,
>>>>
>>>> I have a comment on the term "other-multicompy atomicity".
>>>>
>>>> It took a while for me to realize that the "other-" stands for "other than self CPU".
>>>> At first, it sounded like "other type of multicompy atomicity", which looked
>>>> quite vague.
>>>>
>>>> Commit 43236beadb1 ("memorder: Expand on cumulativity and {other,} multicopy
>>>> atomicity") helped me to realize your intention. May I suggest to add a footnote
>>>> on the use of "other-"?
>>>
>>> I am trying to do a bit too much with that paragraph, aren't I?
>>>
>>> How about the patch below?
>>
>> Please see the comments below.
>>
>>>
>>>> Also, you failed to replace tabs to white spaces in listing added in the
>>>> above mentioned commit.
>>>
>>> Good eyes, fixed!  (Not yet pushed, will get there.)
>>>
>>> 							Thanx, Paul
>>>
>>> ------------------------------------------------------------------------
>>>
>>> commit 87b29716cee78c5505039ba933c2f991ed3b1dec
>>> Author: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
>>> Date:   Sat Sep 2 17:48:39 2017 -0700
>>>
>>>     memorder: Clarify other-multicopy atomicity
>>>     
>>>     Reported-by: Akira Yokosawa <akiyks@gmail.com>
>>>     Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
>>>
>>> diff --git a/memorder/memorder.tex b/memorder/memorder.tex
>>> index 62544ae8ed52..90e2b5e2f294 100644
>>> --- a/memorder/memorder.tex
>>> +++ b/memorder/memorder.tex
>>> @@ -1703,32 +1703,32 @@ and other counterintuitive behavior, as discussed in the next section.
>>>  
>>>  Threads running on a \emph{multicopy atomic}~\cite{Stone:1995:SP:623262.623912}
>>>  platform are guaranteed
>>> -to agree on the order of writes, even to different variables.
>>> +to agree on the order of stores, even to different variables.
>>>  A useful mental model of such a system is the single-bus architecture
>>>  shown in
>>>  Figure~\ref{fig:memorder:Global System Bus And Multi-Copy Atomicity}.
>>> -If each write resulted in a message on the bus, and if the bus could
>>> -accommodate only one write at a time, then any pair of CPUs would
>>> -agree on the order of all writes that they observed.
>>> +If each store resulted in a message on the bus, and if the bus could
>>> +accommodate only one store at a time, then any pair of CPUs would
>>> +agree on the order of all stores that they observed.
>>>  Unfortunately, building a computer system as shown in the figure,
>>>  without store buffers or even caches, would result in glacial computation.
>>> -CPU vendors have therefore taken one of three approaches:
>>> -(1)~Provide store buffers, caches, and the rest and abandon
>>> -multicopy atomicity (weakly ordered platforms),
>>> -(2)~Provide all those hardware optimizations, and invest many transistors
>>> -into preserving multicopy atomicity (TSO platforms), or
>>> -(3)~Define a slightly weaker \emph{other-multicopy atomicity} that allows
>>> -a given CPU's stores to become visible to that CPU before they become visible
>>> -to other CPUs, but in which each of those stores becomes visible to all
>>> -the other CPUs simultaneously~\cite{ARMv8A:2017}.
>>> -Perhaps there will come a day when all platforms provide some flavor
>>> -of multi-copy atomicity, but
>>> -in the meantime, non-multicopy-atomic platforms do exist, and so software
>>> -does need to deal with them.
>>> +CPU vendors interested in providing multicopy atomicity have therefore
>>> +instead provided the slightly weaker
>>> +\emph{other-multicopy atomicity}~\cite{ARMv8A:2017},
>>
>> On the ARMv8 multicopy atomicity, I found a paper "Simplifying ARM Concurrency:
>> Multicopy-atomic Axiomatic and Operational Models for ARMv8" at
>> https://urldefense.proofpoint.com/v2/url?u=http-3A__www.cl.cam.ac.uk_-7Epes20_armv8-2Dmca_armv8-2Dmca-2Ddraft.pdf&d=DwICaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=ux41CW3B5BSVxDMRNRWyLbUmPebZc70Kq4AkfdiRGMI&m=1JFkyKvDbZmHr-CRbzC5HuCgZZCSnpvTioqYoFTfMog&s=BdlEGULkAzO_ibDzx4a3IT6_-zC815dPjOwJa9qPLLo&e=  (Draft, July 12, 2017)
>> by Christopher Pulte, et.al. It is a draft, but could also be cited here.
>> As you know, "ARM ARM" is quite a large document. If you specified where to look
>> in the manual, it would be even better.
> 
> Section B2.3, which I have now included in the citation.  Please see
> below for updated patch.

Looks good!

     Thanks, Akira

> 
>>> +which excludes the CPU doing a given store from the requirement that all
>>> +CPUs agree on the order of all stores.
>>> +This means that if only a subset of CPUs are doing stores, the
>>> +other CPUs will agree on the order of stores, hence the ``other''
>>> +in ``other-multicopy atomicity''.
>>
>> Yes, now the meaning of "other-" is clear enough.
> 
> Glad it helped!
> 
> 							Thanx, Paul
> 
> ------------------------------------------------------------------------
> 
> commit 8223c00857dca7eef47015744b77c126d0c8626e
> Author: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
> Date:   Sat Sep 2 17:48:39 2017 -0700
> 
>     memorder: Clarify other-multicopy atomicity
>     
>     Reported-by: Akira Yokosawa <akiyks@gmail.com>
>     Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
> 
> diff --git a/memorder/memorder.tex b/memorder/memorder.tex
> index 62544ae8ed52..1d4256d76e7a 100644
> --- a/memorder/memorder.tex
> +++ b/memorder/memorder.tex
> @@ -1703,32 +1703,32 @@ and other counterintuitive behavior, as discussed in the next section.
>  
>  Threads running on a \emph{multicopy atomic}~\cite{Stone:1995:SP:623262.623912}
>  platform are guaranteed
> -to agree on the order of writes, even to different variables.
> +to agree on the order of stores, even to different variables.
>  A useful mental model of such a system is the single-bus architecture
>  shown in
>  Figure~\ref{fig:memorder:Global System Bus And Multi-Copy Atomicity}.
> -If each write resulted in a message on the bus, and if the bus could
> -accommodate only one write at a time, then any pair of CPUs would
> -agree on the order of all writes that they observed.
> +If each store resulted in a message on the bus, and if the bus could
> +accommodate only one store at a time, then any pair of CPUs would
> +agree on the order of all stores that they observed.
>  Unfortunately, building a computer system as shown in the figure,
>  without store buffers or even caches, would result in glacial computation.
> -CPU vendors have therefore taken one of three approaches:
> -(1)~Provide store buffers, caches, and the rest and abandon
> -multicopy atomicity (weakly ordered platforms),
> -(2)~Provide all those hardware optimizations, and invest many transistors
> -into preserving multicopy atomicity (TSO platforms), or
> -(3)~Define a slightly weaker \emph{other-multicopy atomicity} that allows
> -a given CPU's stores to become visible to that CPU before they become visible
> -to other CPUs, but in which each of those stores becomes visible to all
> -the other CPUs simultaneously~\cite{ARMv8A:2017}.
> -Perhaps there will come a day when all platforms provide some flavor
> -of multi-copy atomicity, but
> -in the meantime, non-multicopy-atomic platforms do exist, and so software
> -does need to deal with them.
> +CPU vendors interested in providing multicopy atomicity have therefore
> +instead provided the slightly weaker
> +\emph{other-multicopy atomicity}~\cite[Section B2.3]{ARMv8A:2017},
> +which excludes the CPU doing a given store from the requirement that all
> +CPUs agree on the order of all stores.
> +This means that if only a subset of CPUs are doing stores, the
> +other CPUs will agree on the order of stores, hence the ``other''
> +in ``other-multicopy atomicity''.
> +Unlike multicopy-atomic platforms, within other-multicopy-atomic platforms,
> +the CPU doing the store is permitted to observe its
> +store early, which allows its later loads to obtain the newly stored
> +value directly from the store buffer.
> +This in turn improves performance.
>  
>  \QuickQuiz{}
>  	Can you give a specific example showing different behavior for
> -	multicopy atomic on the one hand and other multicopy atomic
> +	multicopy atomic on the one hand and other-multicopy atomic
>  	on the other?
>  \QuickQuizAnswer{
>  \begin{listing}[tbp]
> @@ -1790,6 +1790,12 @@ exists (1:r1=1 /\ 1:r2=0)
>  	which in turn allows the \co{exists} clause to trigger.
>  } \QuickQuizEnd
>  
> +
> +Perhaps there will come a day when all platforms provide some flavor
> +of multi-copy atomicity, but
> +in the meantime, non-multicopy-atomic platforms do exist, and so software
> +does need to deal with them.
> +
>  \begin{listing}[tbp]
>  { \scriptsize
>  \begin{verbbox}[\LstLineNo]
> 
> 


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2017-09-03  5:40 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-09-02  4:09 Other-multicopy atomicity Akira Yokosawa
2017-09-03  0:57 ` Paul E. McKenney
2017-09-03  2:02   ` Akira Yokosawa
2017-09-03  3:06     ` Paul E. McKenney
2017-09-03  5:40       ` Akira Yokosawa

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.