RISC-V处理器设计学习-原子指令(1)

1. 两种类型原子操作

内存原子操作
加载保留/条件存储

原子操作:
AMO 指令对内存中的操作数执行一个原子操作,并将目标寄存器设置为操作前的内存
值。原子表示内存读写之间的过程不会被打断,内存值也不会被其它处理器修改。

并将目标寄存器设置为操作前的内存值。 这句话啥意思

为什么要提供两种原子操作指令?
因为程序员假设 处理器已经提供了 比较交换的功能: 比较一个寄存器中的值和另一个寄存器中的内存地址指向的值,如果它们相等,将第三个寄存器中的值和内存中的值进行交换。

那么这个功能,需要 3 个源寄存器和 1 个目标寄存器。源操作数从两个增加到三个,会使得整数数据通路、控制逻辑和指令格式都变得复杂许多。
在这里插入图片描述

2. LR指令

LR 指令格式及其变种如下:
lr.{w/d}.{aqrl} rd, (rs1) 对比下图的 rs1, rd,为什么是5位?
lr 指令是从内存地址 rs1 中加载内容到 rd 寄存器。然后在 rs1 对应地址上设置保留标记(reservation set)。其中 w/d 分别对应 32 位/64 位版本。

实际的用法
lr.w a3,(a0) 就是把 a0 给到 a3

aqrl 什么意思
在这里插入图片描述

3. SC 指令格式及其变种如下

sc.{w/d}.{aqrl} rd, rs2, (rs1)
c 指令在把 rs2 值写到 rs1 地址之前,会先判断 rs1 内存地址是否有设置保留标记,如果设置了,则把 rs2 值正常写入到 rs1 内存地址里,并把 rd 寄存器设置成 0,表示保存成功。如果 rs1 内存地址没有设置保留标记,则不保存,并把 rd 寄存器设置成 1 表示保存失败。不管成功还是失败,sc 指令都会把当前 hart 保留的所有保留标记全部清除。其中 w/d 分别对应 32 位/64 位版本。

aqrl 什么意思,应该是内存访问顺序有关的。aq 是 acquire 的缩写,rl 是 release 的缩写。RISC-V 的内存访问模式并不是完全按照指令的顺序访问,所以LR/SC 和 AMO 指令通过这两个后缀来添加额外的内存顺序限制。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值