RV32A\CSR\Counters\Wait-on-Reservation-Set指令集

一、RV32A指令集

“A”的标准原子指令扩展包含以原子方式读取-修改-写入内存的指令,以支持在同一内存空间中运行的多个 RISC-V harts之间的同步。提供的两种形式的原子指令是加载保留/存储条件指令和原子取操作内存指令。两种类型的原子指令都支持各种内存一致性排序,包括无序、获取、释放和顺序一致的语义。这些指令允许RISC-V 支持 RCsc 内存一致性模型。

1、Load-Reserved/Store-Conditional Instructions

在这里插入图片描述
aq位代表原子内存操作被视为获取访问

rl位代表原子内存操作被视为释放访问

LR.W

LR.W 指令用于实现“加载-保留”操作,将一个字(32 位)从内存中加载到目标寄存器中,并在加载完成后锁定该内存地址,以确保其他处理器在此期间无法访问该内存地址。其语法如下:

lr.w rd, (rs1)

其中 rd 表示目标寄存器,rs1 表示源寄存器,括号中的内容表示内存地址。

SC.W

SC.W 指令用于实现“存储-条件执行”操作,将一个字(32 位)存储到内存中,并检查此前是否已经执行过 LR.W 操作锁定了该内存地址。如果已经被锁定,则存储失败,否则存储成功。其语法如下:

sc.w rd, rs2, (rs1)

其中 rd 表示目标寄存器,rs1 表示源寄存器1(存储地址),rs2 表示源寄存器2(存储值)。

2、Atomic Memory Operations

在这里插入图片描述

原子内存操作 (AMO) 指令为多处理器执行读-修改-写操作同步,并用 R 型指令格式编码。这些 AMO指令从 rs1 中的地址原子加载数据值,将值放入寄存器 rd,将二元运算符应用于加载的值和 rs2 中的原始值,然后将结果存储回去到 rs1 中的地址。

AMOSWAP.W

AMOSWAP.W 指令用于实现“原子交换”操作,其语法如下:

amoswap.w rd, rs2,(rs1)

将rs2寄存器中的值与地址(rs1)中存储的值进行原子交换,并将原始值存储到rd寄存器中。其中,aq表示请求获取队列,在多核情况下可以保证操作的全局排序;rl表示释放锁,标识该操作完全完成后会释放对应的锁。

AMOADD.W

AMOADD.W 指令用于实现“原子加”操作,将一个字(32 位࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值