Skip to content

Commit 1c538d9

Browse files
authored
Update ch8 2lock.rst
1 parent 00b7877 commit 1c538d9

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

source/chapter8/2lock.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -705,7 +705,7 @@ RISC-V 提供的另一类原子指令被称为加载保留/条件存储(Load R
705705

706706
那么 SC 指令是如何判断此前一段时间该内存中的值是否被修改呢?在 RISC-V 架构下,存在一个 **保留集** (Reservation Set) 的概念,这也是“加载保留”这种叫法的来源。保留集用来实现 LR/SC 的检查机制:当 CPU 执行 LR 指令的时候,硬件会记录下此时内存中的值是多少,此外还可能有一些附加信息,这些被记录下来的信息就被称为保留集。之后,当其他 CPU 或者外设对内存这个值进行修改的时候,硬件可以将这个值对应的保留集标记为非法或者删除。等到之前执行 LR 指令的 CPU 执行 SC 指令的时候,CPU 就可以检查保留集是否存在/合法或者保留集记录的值是否与内存中现在的值一致,以这种方式来决定是否进行写入以及目标寄存器 ``rd`` 的值。
707707

708-
RISC-V 并不原生支持 CAS/TAS 原子指令,但我们可以通过 LR/SC 指令对来实现它。比如下面是通过 LR/SC 指令对来模拟 CAS 指令。有兴趣的同学可以对照注释自行研究。
708+
RISC-V 支持 TAS 原子指令 ``amoswap`` ,并不原生支持 CAS 原子指令,但我们可以通过 LR/SC 指令对来实现它。比如下面是通过 LR/SC 指令对来模拟 CAS 指令。有兴趣的同学可以对照注释自行研究。
709709

710710
.. code-block:: riscv
711711
:linenos:

0 commit comments

Comments
 (0)