RISC-V原子指令(A扩展)

本文详细介绍了RISC-V的A扩展,主要关注原子指令,包括Load-Reserved/Store-Conditional(LR/SC)和原子内存操作(AMO)。LR/SC指令用于实现复杂的原子操作,如比较交换,提供了内存一致性模型的支持。AMO指令则用于处理器间的同步读-修改-写操作,支持多种二进制运算。通过aq和rl位,这些指令可以添加不同的内存访问顺序约束,以实现如acquire、release和顺序一致性等行为。
摘要由CSDN通过智能技术生成

标准原子指令扩展命名为A,包含对原子原子读-修改-写存储器,以支持不同hart之间对同一片内存空间的同步。A扩展提供了两种原子指令,包括load-reserved/store-conditional和fetch-and-op存储指令。两种指令都支持各种存储器的一致性排序,包括无序、获取、释放和顺序一致性。这些指令使得RISC-V可以支持RCsc内存一致性模型。

原子指令指定顺序

基础RISC-V ISA有一个宽松的内存模型,使用FENCE指令来施加额外的顺序约束。地址空间被执行环境划分为存储器域和I/O域,FENCE指令提供了对其中一个或两个访问地址域的访问顺序。
为了对release consistency提供更有效的支持,每个原子指令包含两个bit:aq和rl,用于额外指定内存访问的顺序约束。这些bit会约束特定域(存储器域或I/O域)内的访问顺序,两个域之间的访问无法做顺序约束,只能使用FENCE指令规定跨域访问顺序。

  • 如果aq和rl都为0,则不对原子操作添加额外的顺序约束;
  • 如果只有aq = 1,则原子内存操作被视为acquire access,即在acquire操作之前,同一个hart上不会执行同一个域的内存操作;
  • 如果只有rl = 1,则原子内存操作被视为release access,即同一个域的内存操作只会在release操作之前执行;
  • 如果aq和rl都为1,则原子内存操作是sequentially consistent,即这个hart上的内存操作是顺序执行的。

Load-Reserved/Store-Conditional指令

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值