对于TSO和PSO模型 , 内存屏障只需要在store-load/store-store时需要(写内存屏障) , 最简单的一种方式就是内存屏障指令必须保证store buffer数据全部被清空的时候才继续往后面执行 , 这样就能保证其与SC模型的执行顺序一致 。
而对于RMO , 在PSO的基础上又引入了load-load与load-store乱序 。RMO的读内存屏障就要保证前面的load指令必须先于后面的load/store指令先执行 , 不允许将其访问提前执行 。
我们继续看下面的例子:

文章插图
例如C1执行S1与S2的时候 , 我们在S1与S2之间加上写屏障指令 , 要求C1按照顺序存储模型来进行store的执行 , 而在C2端的L1与L2之间加入读内存屏障 , 要求C2也按照顺序存储模型来进行load操作 , 这样就能够实现内存数据的一致性 , 从而解决乱序的问题 。
ARM的很多微架构就是使用RMO模型 , 所以我们可以看到ARM提供的dmb内存指令有多个选项:
LD load-load/load-store ST store-store/store-load SY any-any这些选项就是用来应对不同情况下的乱序 , 让其回归到顺序一致性模型的执行顺序上去 。
本文修改自:http://www.wowotech.net/memory_management/456.html
本人公众号:技术原理君
【CPU怎么保证内存访问冲突?一致性?】
推荐阅读
- 卫生棉条太干拉不出来怎么办 棉条太干拉不出来怎么办
- 淘宝店铺退保证金在哪里 淘宝网店的保证金怎么退
- 扛住阿里双十一高并发流量,Sentinel是怎么做到的?
- 淘宝商家在哪里设置优惠券 淘宝设置优惠券怎么设置
- 2022清明节天津会下雨吗,2022清明期间天津天气怎么样
- 水培郁金香发霉了怎么办,水培郁金香发霉了还能活吗
- 淘宝开店不用交保证金 淘宝店铺可以不交保证金吗
- 指甲上有白斑
- 老式转盘微波炉怎么烤蛋挞 转盘微波炉可以烤蛋挞吗
- 木头水杯盖有味怎么办 木头杯盖有味怎么去掉
