summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAkira Yokosawa <akiyks@gmail.com>2023-09-22 22:55:44 +0900
committerPaul E. McKenney <paulmck@kernel.org>2023-09-23 01:11:21 -0700
commit85c4861b8afcaca822e42e644ef91c3d878bdcc0 (patch)
tree8c621824a8cb4f26644d53e8ca4282199c09ef15
parent425148ef220e81be505c29f9f96eea127c9c9e9e (diff)
downloadperfbook-85c4861b8afcaca822e42e644ef91c3d878bdcc0.tar.gz
memorder: Add index markers for 'address/control/data dependency', take 2
Add a few more index markers. Note that the macro \IXpl{} and its friends don't work for the plural form of "dependencies". \IXalth{}{}{} is used instead. Signed-off-by: Akira Yokosawa <akiyks@gmail.com> Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
-rw-r--r--memorder/memorder.tex11
1 files changed, 7 insertions, 4 deletions
diff --git a/memorder/memorder.tex b/memorder/memorder.tex
index 9610618b..9af41194 100644
--- a/memorder/memorder.tex
+++ b/memorder/memorder.tex
@@ -3411,7 +3411,8 @@ In contrast, the penalty for failing to use them when needed can be quite high.
\label{sec:memorder:Address- and Data-Dependency Difficulties}
\OriginallyPublished{sec:memorder:Address- and Data-Dependency Difficulties}{Address- and Data-Dependency Difficulties}{the Linux kernel}{PaulEMcKenney2014rcu-dereference}
-The low overheads of the address and data dependencies discussed in
+The low overheads of the \IXalth{address}{address}{dependency}
+and \IXalth{data dependencies}{data}{dependency} discussed in
\cref{sec:memorder:Address Dependencies,%
sec:memorder:Data Dependencies},
respectively, makes their use extremely attractive.
@@ -3770,7 +3771,7 @@ compiler-generated assembly code.
\subsection{Control-Dependency Calamities}
\label{sec:memorder:Control-Dependency Calamities}
-The control dependencies described in
+The \IXalth{control dependencies}{control}{dependency} described in
\cref{sec:memorder:Control Dependencies}
are attractive due to their low overhead, but are also especially
tricky because current compilers do not understand them and can easily
@@ -5403,7 +5404,8 @@ One could place an \co{smp_rmb()} primitive
between the pointer fetch and dereference in order to force Alpha
to order the pointer fetch with the later dependent load.
However, this imposes unneeded overhead on systems (such as \ARM,
-Itanium, PPC, and SPARC) that respect address dependencies on the read side.
+Itanium, PPC, and SPARC) that respect
+\IXalth{address dependencies}{address}{dependency} on the read side.
A \co{smp_read_barrier_depends()} primitive was therefore added to the
Linux kernel to eliminate overhead on these systems, but was removed
in v5.9 of the Linux kernel in favor of augmenting Alpha's definition
@@ -5550,7 +5552,8 @@ similar to that of \Power{}'s cumulativity, both of which are
stronger than \IXacr{lkmm}'s cumulativity described in
\cref{sec:memorder:Cumulativity}.
-\ARM\ also implements control dependencies, so that if a conditional
+\ARM\ also implements \IXalth{control dependencies}{control}{dependency},
+so that if a conditional
branch depends on a load, then any store executed after that conditional
branch will be ordered after the load.
However, loads following the conditional branch will \emph{not}