为什么CPU要分一级缓存、二级缓存和三级缓存

说到CPU缓存,我必须告诉你我当时遇到的一个陷阱。

2 003 年我刚入行的时候,是做服务员的。
那时,CPU 和内存速度完全不同。
想想看,CPU 转得很快,但是内存呢?速度像蜗牛一样慢。
结果? CPU 在运行时无法继续运行。
您必须等待,并且没有发送任何内存数据。
这是浪费时间。

然后我接触了分层缓存并了解发生了什么。
我们先来说说L1 它的速度确实很快,但容量却很小。
例如,2 5 6 KB应该包含最常用的。
我当时测试了一下,通过添加L1 缓存,单线程速度提升了一倍。
但L1 价格昂贵且电路复杂。
将所有内容都放在 L1 上会增加 CPU 成本。

我们来谈谈L2 L2 的容量更大,速度比 L1 慢,但比内存快得多。
例如,在i7 -8 7 00时代,每个核心有2 5 6 KB的L2 ,总共1 .5 MB。
我们发现,将 L1 中未命中的数据放入 L2 可以加快处理速度,因为 CPU 不必不断地将这些数据移至内存。
重要的是每个核心都有自己的L2 ,不存在冲突,多核心运行流畅。

最重要的是L3 它很大并且所有核心都是共享的。
在配置服务器时,我有几个大于 1 0 MB 的 CPUL3 我们发现,当多个核心繁忙时,例如在科学计算中,多个核心可能会请求相同的数据。
这就是 L3 派上用场的地方。
数据放置在 L3 中,任何需要的人都可以使用。
不需要跑遍你的记忆。
我们经过测试,添加L3 缓存可以显着加快多核任务的速度,并显着降低内存访问延迟,在某些情况下可以降低7 0%以上。

换句话来说,这种分层缓存是速度和成本之间平衡的结果。
L1 快但小,L2 大而慢,L3 大而慢但共享。
CPU首先在L1 中查找,如果没有找到,则在L2 中查找,如果没有找到,最后到内存中查找。
这样既保证了速度,又控制了成本。
在多核 CPU 上,没有 L3 几乎无法运行。

当然,现在CPU缓存技术又发展起来了,像我这样的老书呆子对此不太了解。
如果你问我现代CPU缓存是什么样的,我不得不说我从来没有接触过这个领域,也不打算乱说。

一级缓存 、二级缓存差距越大越好吗

一级缓存体积小,价格昂贵。
二级缓存是临时存储,用于存储一级缓存无法容纳的数据。

三级缓存和内存都是二级缓存,容量增大,成本降低。

一级指令缓存存储指令,另一级缓存存储数据。

AMD的一级缓存存储真实数据。
Intel P4 一级缓存存储地址是基于二级缓存的。

二级缓存越大越好,但并不能提高性能一倍。