内存屏障(内存栅栏)及具体类型

参考

https://www.jianshu.com/p/64240319ed60
https://www.jianshu.com/p/08a0a8c984ab

内存屏障(内存栅栏)

内存屏障(Memory Barrier)
内存栅栏(Memory Fence)

因为编译器和处理器的指令重排,所以 多核 处理器需要使用 内存屏障指令 来确保 一致性

内存屏障指令 作用于CPU与其缓存之间

定义两个指令:

  • Store:将处理器缓存的数据刷新到内存中。即
  • Load:将内存存储的数据拷贝到处理器的缓存中。即

内存屏障类型:

  • LoadLoad Barriers
    Load1;   LoadLoad;   Load2
    确保 Load1 先于 Load2
  • StoreStore Barriers
    Store1;   StoreStore;   Store2
    确保 Store1 立刻刷新数据到内存 (使其对其他处理器可见) 的操作先于 Store2
  • LoadStore Barriers
    Load1;   LoadStore;   Store2
    确保 Load1 先于 Store2
  • StoreLoad Barriers
    Store1;   StoreLoad;   Load2
    确保 Store1先于 Load2 。它会使该屏障之前的所有内存访问指令(存储指令和访问指令) 完成之后,才执行该屏障之后的内存访问指令

StoreLoad Barriers 同时具备其他三个屏障的效果,因此也称之为 全能屏障(mfence),是目前大多数处理器所支持的;但是相对其他屏障,该屏障的开销相对昂贵。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值