CPU缓存一致性和伪共享

本文深入探讨了多核CPU带来的优势,详细解释了CPU如何读取内存数据,包括CPU高速缓存的层级结构和工作原理。重点讨论了CPU缓存一致性协议,如MESI协议,以及伪共享问题及其对性能的影响。最后,提出了避免伪共享的方法,如使用@sun.misc.Contended注解。
摘要由CSDN通过智能技术生成

多核cpu的好处

在不提升cpu主频之后,多核cpu提升吞吐率。

CPU:

寄存器:

cpu cache: L1 L2 L3 使用SRAM(SRAM(Static Random-Access Memory,静态随机存取存储器))存储,SRAM一旦断电,数据就会丢失了。

L1 嵌入在CPU内部

L1 L2 L3 访问的速度递减

cpu cache高速缓存分成了指令缓存(Instruction Cache)和数据缓存(Data Cache)两部分。

内存:

内存使用DRAM(DRAM(Dynamic Random Access Memory,动态随机存取存储器)

因为存储在电容里面的,电容不会漏电,所以需要定时刷新充电,保证电容不丢失。

硬盘:

SSD(固态硬盘) HDD (机械硬盘)

请添加图片描述

访问越慢,价格越便宜。

存储器中数据的局部性原理(Principle of Locality):

时间局部性和空间局部性。

时间局部性:如果一个数据被访问了,那么它在短时间内还会被再次访问。

空间局部性:一个数据被访问了,那么和它相邻的数据也很快会被访问。

局部性原理放之四海而皆准
现实生活中的人际关系也是如此啊

CPU中的L1 L2 L3在内存中长什么样子?

请添加图片描述

Core里还有L1/L2 Cache。 CPU 中大量的空间已经被 SRAM 占据

CPU如何读取内存中的数据?

请添加图片描述

内存block加载进入CPU cache和 cpu cache读取内存block

cpu cache中的基本存储单元, cache line(缓存块) 通常是 64 字节

概念:CPU 从内存中读取数据到 CPU Cache 的过程中,是一小块一小块来读取数据的,而不是按照单个数组元素来读取数据的。这样一小块一小块的数据,在 CPU Cache 里面,我们把它叫作 Cache Line(缓存块)

内存中 单元块(block)

block 如何加载进 cache line中?

使用直接映射,

确保任何一个内存块的地址,始终映射到一个固定的 CPU Cache 地址(Cache Line)

通过mod 运算

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值