当前位置: 首页 > article >正文

RISC-V笔记——重叠地址排序

RISC-V的RVWMO模型主要包含了preserved program order、load value axiom、atomicity axiom、progress axiom和I/O Ordering。今天主要记录下preserved program order(保留程序顺序)中的Overlapping-Address Orderings(重叠地址排序)

重叠地址排序

a操作在程序顺序中先于b操作,a和b都访问常规主存,不包含I/O区域,如果存在以下任何一个条件,那么a操作和b操作在全局内存顺序中的顺序也不会变。

  1. b是store,且a和b访问重叠的内存地址。
  2. a和b是load,x是a和b同时读取的字节,且在a和b程序顺序之间没有store操作访问x,a和b放回x的值由不同的内存操作写入。
  3. a是由AMO或SC指令生成的,b是一个load,b返回由a写入的值。

关于第一点,load或store操作永远不能与后面访问重叠内存位置的store操作进行重排序。从微体系架构的角度来看,一般来说,如果投机是无效的,则很难或不可能撤回投机重排序的store操作,因此模型直接不允许这种行为。不过另一方面,store可以forward数据给后面的load操作,这种情况通常发生在store的数据暂时存放在store buffer里,之后load命中store buffer,就直接load数据走了。

关于第二点,其实就是要求同一个hart中,younger的load返回的值不能比同地址older load返回的值更老。这通常被称为“CoRR”(Coherence for Read-Read pairs),或者SC模型(sequential consistency)的要求一部分, RVWMO需要强制执行CoRR排序。如下代码所示,不管程序如何执行,(f)返回的值肯定比(d)的新。

关于第三点,其实就是AMO或成功的SC必须要全局可见后,才能将值返回给后续的load操作。

这三个原则也适用于内存访问之间只有部分重叠的情况,而且基地址也不一定相同的。例如,当使用不同大小的操作访问同一个地址区间时,就可以发生这种情况。当使用非对齐的内存访问时,重叠地址的规则可以独立地应用于每个地址的内存访问。


http://www.kler.cn/news/357488.html

相关文章:

  • |信息爬取与分析|009_django基于Python的耳机信息的爬取与分析2024_2qdh1wz4
  • CentOS 上安装 MySQL(附卸载教程)
  • 券商api怎么获取,如何获取券商API接口?
  • Android便携式WLAN热点分析
  • 2025考研各省网上确认时间汇总!(别忘记)
  • Kubernetes部署练习
  • JS实现一维时间轴动画
  • Nginx超简洁知识:负载均衡-反向代理,动静分离,配置文件
  • 关于OceanBase数据库的poc测试连接经验(by liuhui)
  • ubuntu使用文本编辑器和vim,快捷键
  • 【读书笔记-《30天自制操作系统》-27】Day28
  • 【分立元件】方形贴片固定电阻器制造流程
  • 机器学习数据标准化与归一化:提升模型精度的关键
  • RabbitMQ 持久化与不公平分发
  • sqli-labs less-25a
  • 单片机的寻址方式有哪些?
  • 创建虚拟机并安装操作系统
  • 贪心day4
  • 【人工智能-初级】第9章 神经网络的基础:理解感知器与激活函数
  • qt项目使用其他项目的ui之单继承之成员变量