加入收藏 | 设为首页 | 会员中心 | 我要投稿 揭阳站长网 (https://www.0663zz.cn/)- 机器学习、行业智能、决策智能、云计算、AI应用!
当前位置: 首页 > 站长资讯 > 评论 > 正文

程序员相关的CPU缓存知识

发布时间:2021-03-01 14:11:09 所属栏目:评论 来源:互联网
导读:越离 CPU 近就越小,速度也越快,越离 CPU 远,速度也越慢。 再往后面就是内存,内存的后面就是硬盘。我们来看一些他们的速度: L1 的存取速度: 4 个 CPU 时钟周期 L2 的存取速度: 11 个 CPU 时钟周期 L3 的存取速度: 39 个 CPU 时钟周期 RAM 内存的存取
  • 越离 CPU 近就越小,速度也越快,越离 CPU 远,速度也越慢。

再往后面就是内存,内存的后面就是硬盘。我们来看一些他们的速度:

  • L1 的存取速度:4 个 CPU 时钟周期
  • L2 的存取速度: 11 个 CPU 时钟周期
  • L3 的存取速度:39 个 CPU 时钟周期
  • RAM 内存的存取速度:107 个 CPU 时钟周期

我们可以看到,L1 的速度是 RAM 的 27 倍,但是 L1/L2 的大小基本上也就是 KB 级别的,L3 会是 MB 级别的。例如:Intel Core i7-8700K ,是一个 6 核的 CPU,每核上的 L1 是 64KB(数据和指令各 32KB),L2 是 256K,L3 有 12MB(我的苹果电脑是 Intel Core i9-8950HK,和 Core i7-8700K 的 Cache 大小一样)。

我们的数据就从内存向上,先到 L3,再到 L2,再到 L1,最后到寄存器进行 CPU 计算。为什么会设计成三层?这里有下面几个方面的考虑:

  • 一个方面是物理速度,如果要更大的容量就需要更多的晶体管,除了芯片的体积会变大,更重要的是大量的晶体管会导致速度下降,因为访问速度和要访问的晶体管所在的位置成反比,也就是当信号路径变长时,通信速度会变慢。这部分是物理问题。
  • 另外一个问题是,多核技术中,数据的状态需要在多个 CPU 中进行同步,并且,我们可以看到,cache 和 RAM 的速度差距太大,所以,多级不同尺寸的缓存有利于提高整体的性能。

这个世界永远是平衡的,一面变得有多光鲜,另一面也会变得有多黑暗。建立这么多级的缓存,一定就会引入其它的问题,这里有两个比较重要的问题,

  • 一个是比较简单的缓存的命中率的问题。
  • 另一个是比较复杂的缓存更新的一致性问题。

尤其是第二个问题,在多核技术下,这就很像分布式的系统了,要对多个地方进行更新。

缓存的命中

在说明这两个问题之前。我们需要要解一个术语 Cache Line。缓存基本上来说就是把后面的数据加载到离自己近的地方,对于 CPU 来说,它是不会一个字节一个

(编辑:揭阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读