1. 前言
在RISC-V中,只有当存在一个全局内存顺序(global memory order)符合preserved program order,并且满足load value axiom、atomicity axiom和progress axiom时,RISC-V程序的执行才遵循RVWMO内存一致性模型。今天主要讲下load value公理、atomicity公理和progress公理。
2. load value公理
loadA读到的每个字节来自于store写入该字节的值,loadA可以读到store的值来自于以下两种场景:
- 在全局内存顺序中,在loadA之前的store写该字节
- 在program order中,在loadA之前的store写该字节 (可以forward)
全局内存顺序排在loadA之前的store,loadA肯定可以观察到。另外第二点意思是现在几乎所有的CPU实现中都存在store buffer,store操作的数据可能会暂时存放在这里面,而且还没有全局可见,后续younger的load其实