【深入理解JVM】3、CPU储存器+MESI+CPU伪共享+CPU乱序问题及代码论证【面试必备】
程序员文章站
2022-04-15 18:23:01
1、存储器的层次结构2、cache line 缓存行由于共享变量在CPU缓存中的存储是以缓存行为基本单位,一个缓存行可以存储多个变量(存满当前缓存行的字节数);而CPU对缓存的修改又是以缓存行为最小单位的,那么就会出现上诉的伪共享问题。Cache Line可以简单的理解为CPU Cache中的最小缓存单位,今天的CPU不再是按字节访问内存,而是以64字节为单位的块(chunk)拿取,称为一个缓存行(cache line)。当你读一个特定的内存地址,整个缓存行将从主存换入缓存,并且访问同一个缓...
上一篇:【深入理解JVM】1、在JVM类加载如何加载?双亲委派加载类及混合模式,代码演示【面试必备】
1、存储器的层次结构
2、cache line 缓存行
由于共享变量在CPU缓存中的存储是以缓存行为基本单位,一个缓存行可以存储多个变量(存满当前缓存行的字节数);而CPU对缓存的修改又是以缓存行为最小单位的,那么就会出现伪共享问题。
Cache Line可以简单的理解为CPU Cache中的最小缓存单位,今天的CPU不再是按字节访问内存,通常是以64字节为单位的块(chunk)拿取,称为一个缓存行(cache line)。当你读一个特定的内存地址,整个缓存行将从主存换入缓存,并且访问同一个缓存行内的其它值的开销是很小的。
3、为什么会出现伪共享的问题呢?
如下图:在T1,T2等多线程的情况下,假如想,X,Y两个共享变量在同一个缓存行中,CPU1修改变量X,会导致CPU2
本文地址:https://blog.csdn.net/zw764987243/article/details/109502616