什么是内存屏障 内存屏障理解

内存屏障是保障不同CPU之间数据可见性的一种技术或者协议或者CPU的指令,今天小编就来说说关于什么是内存屏障 内存屏障理解?下面更多详细答案一起来看看吧!

什么是内存屏障 内存屏障理解

什么是内存屏障 内存屏障理解

内存屏障是保障不同CPU之间数据可见性的一种技术或者协议或者CPU的指令。

由于CPU的运行速度远大于内存,为了避免对内存的延迟,最常见的是采用指令管道化,然后对管道内的指令进行重排序,这样会造成一些变量无法及时回刷到缓存或者主存,对其他CPU不可见。

内存屏障就是为了确保屏障两边的所有指令从外部看是有序的,禁止重排序的,从内部看实现数据的可见性,确保内存数据会同步到不同CPU的缓存中。

内存屏障的指令有:

Store Barrier:强制所有该内存屏障指令之前的store指令都在该内存屏障指令之前执行,并把store缓冲区的数据回刷到各个CPU缓存中去。

Load Barrier:强制所有在该内存屏障指令之后的load指令都在该内存屏障之后执行,并且一直等到load缓冲区被该CPU读完才能执行之后的load命令。

Full Barrier:结合二者

Volatile的内存屏障:

被volatile修饰的变量会在写指令之后生成一个store barrier,在读指令之前插入一个load barrier。

final的内存屏障:

一个类的final字段会在初始化后生成一个store内存屏障,确保在初始化之后被可见。

内存屏障的缺点:

由于禁止了CPU降低内存的延迟的优化,所以必须考虑其带来的损失,最后模块化操作。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页