From: Alan Stern <stern@rowland.harvard.edu>
To: Jade Alglave <j.alglave@ucl.ac.uk>
Cc: Will Deacon <will@kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
Segher Boessenkool <segher@kernel.crashing.org>,
"Paul E. McKenney" <paulmck@kernel.org>,
Andrea Parri <parri.andrea@gmail.com>,
Boqun Feng <boqun.feng@gmail.com>,
Nick Piggin <npiggin@gmail.com>,
David Howells <dhowells@redhat.com>,
Luc Maranget <luc.maranget@inria.fr>,
Akira Yokosawa <akiyks@gmail.com>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
linux-toolchains@vger.kernel.org,
linux-arch <linux-arch@vger.kernel.org>
Subject: Re: [RFC] LKMM: Add volatile_if()
Date: Mon, 2 Aug 2021 17:18:41 -0400 [thread overview]
Message-ID: <20210802211841.GB344022@rowland.harvard.edu> (raw)
In-Reply-To: <20210730172020.GA32396@knuckles.cs.ucl.ac.uk>
On Fri, Jul 30, 2021 at 06:20:22PM +0100, Jade Alglave wrote:
> I hope this material can help inform this conversation and I would love
> to hear your thoughts.
More comments...
I find the herd-style diagrams (Figures 2, 3, 5, 7, 9, and so on) almost
impossible to decipher. While they might be useful to people running
herd, they have several drawbacks for readers of this report:
They include multiple instructions, not just the one for which
you want to illustrate the internal dependencies. How about
getting rid of the extraneous instructions?
Each box contains three lines of information, of which only the
first is really significant, and it is hard to figure out. How
about getting rid of the second and third lines, and replacing
things like "e: R0:X1q=x" in the first line with something more
along the lines of "RegR X0" or "tmp1 = RegR X0"?
The "iico" in the dependency arrows doesn't add anything.
Section 1.1 mentions order, data, and control Intrinsic dependencies but
doesn't give so much as a hint as to what they are. Instead the reader
is forced to invent his own generalizations by reading through several
complex special-case examples. There should be a short description of
what each Intrinsic dependency represents. For instance, the first
sentence in 1.3 would be a great way to explain data dependencies. (And
is it not true that control dependencies are mainly needed for
situations where an instruction's inputs and outputs may include the
same register or memory address, when it is necessary to enforce that
the input value is read before the output value is written?)
Some of the dependencies listed for CAS are surprising, but there is no
explanation. Why is C2 a control dependency rather than a data
dependency? After all, the value read from [Xn] is stored in Xs in both
cases. In fact, Df1 supersedes C2 in the failure case, doesn't it? And
why are C1 and Ds1 a control and data dependency respectively rather
than both order dependencies?
Section 2.1: Although the Store F is independent of the conditional
branch and so might be made visible to other observers early, isn't it
true that neither ARMv8 nor any other type of processor will do this?
General question: How does this discussion of conditional branches
relate overall to the way computed branches are handled?
Alan
next prev parent reply other threads:[~2021-08-02 21:18 UTC|newest]
Thread overview: 127+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-06-04 10:12 [RFC] LKMM: Add volatile_if() Peter Zijlstra
2021-06-04 10:44 ` Will Deacon
2021-06-04 11:13 ` Will Deacon
2021-06-04 11:31 ` Peter Zijlstra
2021-06-04 13:44 ` Will Deacon
2021-06-04 13:56 ` Peter Zijlstra
2021-06-04 15:13 ` Will Deacon
2021-06-04 15:22 ` Peter Zijlstra
2021-06-04 15:36 ` Alan Stern
2021-06-04 15:42 ` Peter Zijlstra
2021-06-04 15:51 ` Alan Stern
2021-06-04 16:17 ` Peter Zijlstra
2021-06-04 18:27 ` Alan Stern
2021-06-04 19:09 ` Linus Torvalds
2021-06-04 19:18 ` Linus Torvalds
2021-06-04 20:56 ` Paul E. McKenney
2021-06-04 21:27 ` Linus Torvalds
2021-06-04 21:40 ` Paul E. McKenney
2021-06-04 22:19 ` Linus Torvalds
2021-06-05 14:57 ` Alan Stern
2021-06-06 0:14 ` Paul E. McKenney
2021-06-06 1:29 ` Alan Stern
2021-06-06 3:41 ` Linus Torvalds
2021-06-06 4:43 ` Paul E. McKenney
2021-06-06 13:17 ` Segher Boessenkool
2021-06-06 19:07 ` Paul E. McKenney
2021-06-06 12:59 ` Segher Boessenkool
2021-06-06 13:47 ` Alan Stern
2021-06-06 17:13 ` Segher Boessenkool
2021-06-06 18:25 ` Linus Torvalds
2021-06-06 19:19 ` Segher Boessenkool
2021-06-06 18:41 ` Alan Stern
2021-06-06 18:59 ` Jakub Jelinek
2021-06-06 19:15 ` Paul E. McKenney
2021-06-06 19:22 ` Linus Torvalds
2021-06-06 20:11 ` Segher Boessenkool
2021-06-06 21:19 ` Alexander Monakov
2021-06-06 22:38 ` Linus Torvalds
2021-06-06 23:39 ` Rasmus Villemoes
2021-06-06 23:44 ` Rasmus Villemoes
2021-06-07 8:01 ` Alexander Monakov
2021-06-07 8:27 ` Marco Elver
2021-06-07 15:28 ` Paul E. McKenney
2021-06-07 17:04 ` Marco Elver
2021-06-08 9:30 ` Marco Elver
2021-06-08 11:22 ` Peter Zijlstra
2021-06-08 15:28 ` Segher Boessenkool
2021-06-09 12:44 ` Marco Elver
2021-06-09 15:31 ` Segher Boessenkool
2021-06-09 16:13 ` Marco Elver
2021-06-09 17:14 ` Segher Boessenkool
2021-06-09 17:31 ` Nick Desaulniers
2021-06-09 20:24 ` Segher Boessenkool
2021-06-09 18:25 ` Linus Torvalds
2021-06-07 17:52 ` Segher Boessenkool
2021-06-07 18:07 ` Alexander Monakov
2021-06-07 18:18 ` Segher Boessenkool
2021-06-07 17:42 ` Segher Boessenkool
2021-06-07 20:31 ` Linus Torvalds
2021-06-07 22:54 ` Segher Boessenkool
2021-06-06 11:53 ` Segher Boessenkool
2021-06-06 13:45 ` Alan Stern
2021-06-06 18:04 ` Linus Torvalds
2021-06-06 18:22 ` Alan Stern
2021-06-06 18:43 ` Linus Torvalds
2021-06-07 10:43 ` Peter Zijlstra
2021-06-07 11:52 ` Will Deacon
2021-06-07 15:25 ` Paul E. McKenney
2021-06-07 16:02 ` Will Deacon
2021-06-07 18:08 ` Paul E. McKenney
[not found] ` <20210730172020.GA32396@knuckles.cs.ucl.ac.uk>
2021-07-30 20:35 ` Alan Stern
2021-08-02 21:18 ` Alan Stern [this message]
2021-08-02 23:31 ` Paul E. McKenney
2021-08-04 20:09 ` Alan Stern
2021-08-05 19:47 ` Alan Stern
2021-08-07 0:51 ` Alan Stern
2021-06-06 18:40 ` Segher Boessenkool
2021-06-06 18:48 ` Linus Torvalds
2021-06-06 18:53 ` Linus Torvalds
2021-06-06 19:52 ` Segher Boessenkool
2021-06-06 20:11 ` Linus Torvalds
2021-06-06 20:26 ` Segher Boessenkool
2021-06-06 23:37 ` Paul E. McKenney
2021-06-07 14:12 ` Segher Boessenkool
2021-06-07 15:27 ` Paul E. McKenney
2021-06-07 18:23 ` Segher Boessenkool
2021-06-07 19:51 ` Alan Stern
2021-06-07 20:16 ` Paul E. McKenney
2021-06-07 22:40 ` Segher Boessenkool
2021-06-07 23:26 ` Paul E. McKenney
2021-06-07 10:52 ` Peter Zijlstra
2021-06-07 14:16 ` Segher Boessenkool
2021-06-04 22:05 ` Peter Zijlstra
2021-06-05 3:14 ` Alan Stern
2021-06-05 16:24 ` Linus Torvalds
2021-06-04 15:50 ` Segher Boessenkool
2021-06-04 15:47 ` Segher Boessenkool
2021-06-04 11:44 ` Peter Zijlstra
2021-06-04 14:13 ` Paul E. McKenney
2021-06-04 15:35 ` Segher Boessenkool
2021-06-04 16:10 ` Peter Zijlstra
2021-06-04 16:40 ` Segher Boessenkool
2021-06-04 18:55 ` Paul E. McKenney
2021-06-04 19:53 ` Segher Boessenkool
2021-06-04 20:40 ` Paul E. McKenney
2021-06-06 11:36 ` Segher Boessenkool
2021-06-06 19:01 ` Paul E. McKenney
2021-06-04 14:25 ` Alan Stern
2021-06-04 16:09 ` Segher Boessenkool
2021-06-04 16:33 ` Peter Zijlstra
2021-06-04 16:30 ` Linus Torvalds
2021-06-04 16:37 ` Peter Zijlstra
2021-06-04 16:52 ` Segher Boessenkool
2021-06-04 17:10 ` Linus Torvalds
2021-06-04 17:24 ` Segher Boessenkool
2021-06-04 17:38 ` Linus Torvalds
2021-06-04 18:25 ` Segher Boessenkool
2021-06-04 19:17 ` Peter Zijlstra
2021-06-04 20:43 ` Paul E. McKenney
2021-06-04 18:23 ` Alan Stern
2021-06-08 12:48 ` David Laight
2021-09-24 18:38 ` Mathieu Desnoyers
2021-09-24 19:52 ` Alan Stern
2021-09-24 20:22 ` Mathieu Desnoyers
2021-09-24 19:55 ` Segher Boessenkool
2021-09-24 20:39 ` Mathieu Desnoyers
2021-09-24 22:07 ` Mathieu Desnoyers
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210802211841.GB344022@rowland.harvard.edu \
--to=stern@rowland.harvard.edu \
--cc=akiyks@gmail.com \
--cc=boqun.feng@gmail.com \
--cc=dhowells@redhat.com \
--cc=j.alglave@ucl.ac.uk \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-toolchains@vger.kernel.org \
--cc=luc.maranget@inria.fr \
--cc=npiggin@gmail.com \
--cc=parri.andrea@gmail.com \
--cc=paulmck@kernel.org \
--cc=peterz@infradead.org \
--cc=segher@kernel.crashing.org \
--cc=torvalds@linux-foundation.org \
--cc=will@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).