RISC-V笔记——RVWMO基本体

1. 前言

RISC-V使用的内存模型是RVWMO(RISC-V Weak Memory Ordering),它是Release Consistency的扩展,因此,RVWMO的基本特性类似于RC模型。

2. RC模型

Release consistency(RC)的提出是基于一个观察:将所有同步操作用FENCE围在一起是多余的。随着对同步操作的深入理解,同步操作acquire只需要后面放一个FENCE,同步操作release只需要前面放一个FNECE。因此RC提供了ACQUIRE和RELEASE操作,它们和FENCE类似,但是只在一个方向上对memory进行保序,而不是像FENCE那样在两个方向上都进行保序。更一般地说,RC只需要:

  • ACQUIRE -> Load, Store (Load, Store -> ACQUIRE方向不保序)
  • Load, Store -> RELEASE (RELEASE -> Load, Store 方向不保序)
  • ACQUIRE -> ACQUIRE
  • ACQUIRE -> RELEASE
  • RELEASE -> ACQUIRE
  • RELEASE -> RELEASE

如下图,注:LDAR代表load具有acquire语义,STLR代表store具有release语义。

3. RVWMO基本体

在RISC-V中,与RC类似,load和store指令可以携带其它语义:load指令可以携带ACQUIRE语义,store指令可以携带RELEASE语义,以及RMW指令可以携带ACQUIRE、RELEASE或两者都具有。有两种ACQUIRE语义:ACQUIRE-RCpc和ACQUIRE-RCsc。同样,也有两种RELEASE语义:RELEASE-RCpc和RELEASE-RCsc。"RCpc语义"代表"Acquire-RCpc"或"Release-RCpc"。"RCsc语义"代表"Acquire-RCsc"或"Release-RCsc"。Load(store)可以携带任何一种ACQUIRE(RELEASE)语义,而RMW只能携带RCsc语义。这些语义有如下保序:

  • ACQUIRE -> Load,Store (ACQUIRE代表ACQUIRE-RCsc和ACQUIRE-RCpc)
  • Load,Store -> RELEASE (RELEASE 代表RELEASE-RCsc和RELEASE-RCpc)
  • RELEASE-RCsc -> ACQUIRE-RCsc (注意RELEASE-RCpc -> ACQUIRE-RCpc不成立)

从上述保序公式可以看出:

  1. 带有RELEASE-RCpc的older store指令的写数据可以直接被forward给带有ACQUIRE-RCpc的同地址younger load指令。
  2. 如果它们两个是不同地址,那么在younger load指令会先于older store指令出现在global memory order上。

上述这两点是RCsc不允许的,RCsc具有更强的保序行为。为什么RCsc和RCpc有这两点区别,可以看它们的全称就知道了。

"RCpc"代表release consistency with processor-consistent synchronization operations。"RCsc"代表release consistency with sequentially consistent synchronization operations。

RCpc语义有processor-consistent特性。Processor consistency(PC)表示一个Core的store操作按顺序达到其它Core,但不一定同时达到其它Core。TSO模型是PC的特殊情况,其中每个Core都可以立即看到自己的Store操作,但是当任何其它Core看到Store操作时,所有其它Core都可以看到它,这个属性称为write atomicity。

RCsc语义有sequentially consistent特性。Sequential consistency (SC)模型中,memory order保留了每个core的program order。也就是SC模型为同一个线程的两个指令间的所有四种load和store组合(Load -> Load, Load -> Store, Store -> Store, and Store -> Load)保留了顺序。

因此RCpc和RCsc在行为上还是有些区别,RCsc语义可以让RVWMO模型像SC(Sequential Consistency)模型行为一样,RCpc语义可以让RVWMO像TSO(Total Store Order)内存模型行为一样,这极大方便了其它CPU内存模型的代码移植到RISC-V CPU上运行。比如要迁移MIPS R10000的代码到RISC-V CPU上,可以使用RCsc的load和store指令。要迁移Intel/AMD的代码到RSIC-V CPU上,可以使用RCpc的load和store指令。

如下图,注:LDAR代表load具有acquire-RCsc语义,STLR代表store具有release-RCsc语义。LDAPA代表load具有acquire-RCpc语义,STLAR代表store具有release-RCpc语义。

相关推荐
hongmai66688817 小时前
GK7205V300芯片深度解析:H.265低功耗视觉主控,助力安防监控高效选型
arm开发·嵌入式硬件·物联网·智能家居·h.265·risc-v
2301_805962932 天前
在昉星光2(RISC-V)上构建每日短视频自动生成器
音视频·risc-v
hongmai6668883 天前
聊聊ESP32-C3-WROOM-02-N8这颗8MB Flash的RISC-V模组
笔记·嵌入式硬件·物联网·智能路由器·risc-v
hongmai6668884 天前
耐高温小钢炮:ESP32-C3-MINI-1U-H4模组选型分享
笔记·单片机·嵌入式硬件·物联网·risc-v
国科安芯6 天前
卫星星务计算机数据管理中SEU容错机制的技术实现研究——以AS32S601存储器ECC架构为例
网络·单片机·算法·fpga开发·架构·云计算·risc-v
QYR-分析7 天前
RISC-V AI加速器SoC行业研究报告:开放架构赋能AI芯片,高增赛道开启国产化新机遇
人工智能·架构·risc-v
hongmai6668888 天前
ESP8684-WROOM-02C:一块被低估的RISC-V Wi-Fi模组
单片机·嵌入式硬件·物联网·5g·智能路由器·risc-v
深圳市爱派派智能科技有限公司10 天前
“进迭时空 RISC-V 集群服务器 CSB1-N10SPK3:10 节点 K3,600 TOPS 绿色算力“
运维·服务器·risc-v·k3·进迭时空·集群服务器
硅农程序猿10 天前
芯片设计中的门级仿真(GLS):从零延迟验证到 SDF 时序反标
嵌入式硬件·硬件架构·risc-v·芯片
圆山猫10 天前
[Virtualization](四):Linux KVM/RISC-V 的 vCPU 运行路径
java·linux·risc-v