2024年6月12日发(作者:)

Intel与AMD二级缓存的差别!为什么Intel CPU的二级缓存总是比AMD的大?

为什么Intel CPU的二级缓存总是比AMD的大上不少?

Intel处理器的二级缓存是一本书,一级缓存可以说是一个目录,我需要

看书的内容的时候需要先看目录。而AMD处理器的缓存则是一大一小两个仓库,

一级缓存是小仓库,但离我们比较近,二级缓存是一个大仓库,离我们稍微远点,

当存放货物的时候不管什么都先放到小仓库,小仓库放不下了就往大仓库里扔。

比如Intel的处理器的二级缓存要存储:I love Intel这句话,那么这句话的

所有单词可能都存储在二级缓存中,而一级缓存可能只会存储一些符号例如每个

单词的开头代码:I、L、I,当系统需要读取这段话时先从一级缓存中找到这三

个字母,然后再从二级缓存里调取整句话。

AMD的处理器一级缓存和二级缓存是直接存储和读取数据,比如AMD三个字母,

可以直接写在一级缓存上,如果一级缓存只够存储AM,而不够存储D,那么D

这个字母就存储在二级缓存中。这也是目前AMD处理器一级缓存较大,二级缓存

较小,但性能并不弱的一个原因。

缓存:CPU寻找数据的“快捷方式”.简单的说,缓存是数据由内存通往CPU的桥

梁。它的速度比内存快得多,但是容量也比内存小的多。同时缓存依据读取速度

和容量进一步分为一级和二级。在CPU需要数据的时候,遵循一级缓存→二级缓

存→内存的顺序,从而尽量提高读取速度。这样“缓存+内存”的系统就同时兼

具了速度和容量的优点。

我们可以打个比方,假设CPU是一名“老师”,她现在的任务就是要尽快在

一幢“教学楼”(内存)中找到众多“学生”(数据)中的一个。当她可能要找的

“学生”(数据)都提前被安排进一间“教室”(一级缓存)中的时候,CPU“老

师”找起来自然就快多了。如果很不幸“教室”(一级缓存)中找不到那名“学

生”(数据),她会再去“小礼堂”(二级缓存)中找找看,都找不到的话,最后再

去硕大的“教学楼”(内存)中慢慢搜索。

AMD和Intel:巨大差异皆因设计不同

提到二级缓存容量的差距,还得从两大CPU巨头对一级缓存的理解说起。对,

没看错,就是平常曝光率远逊于二级缓存的“一级缓存”!它才是造成上面提到

巨大差异的“罪魁祸首”。

现今的CPU中,Intel对一级缓存的理解是“数据代码指令追踪缓存”,即

是说一级缓存中存储的其实只是二级缓存中数据和指令的地址,而不是这些数据

和指令的复制。我们还用上面的比喻形象说明一下,Intel老师在“教室”(一

级缓存)中并不会看到任何一名学生,而只有一张写着“学生名字”和“所在座

位号”的座次表(数据地址)。Intel老师会在拿了座次表之后,去那间“小礼

堂”(二级缓存)中按照“座位号”寻找那名“学生”(数据)。在这样的架构下,

Intel老师自然需要更大的“礼堂”来按顺序坐下更多地学生。也就是说,二级

缓存的容量相当程度上影响了Intel CPU的性能。

相比之下,AMD对一级缓存的定位是“实数据读写缓存”,即二级缓存中的

一部分数据都要在一定的规则下搬到一级缓存中。对于前面的比方,AMD老师在

“教室”中总能看到刚刚从“礼堂”(二级缓存)那边赶来的“学生”(数据)。这

样子的结构下,AMD老师也就不需要太大的“礼堂”来坐下更多地“学生”了。

二级缓存的容量自然对AMD CPU的整体性能影响小些。相对的,AMD则总是试图

把一级缓存这间“教室”扩建的更大些。

不仅在一级缓存的工作方式上有区别,而且AMD的CPU在一级缓存的大小上

还占有优势,以AMD Athlon64 X2 6000+ AM2(盒)为例,两个内核各配备64KB

数据高速缓存、64KB指令高速缓存。而价格稍高的Intel Core 2 Duo E6320 (三

年盒),两个内核各配备32KB数据高速缓存、32KB指令高速缓存。

当然,上面只是Intel的AMD的CPU二级缓存巨大差异的主要原因。事实上

CPU对二级缓存容量的“敏感”与否还受到诸如内存控制器,流水线长度、频率、

总线架构和指令集等等多方面的影响。在多核CPU中还关乎各个物理内核之间的

数据交换问题(简单的说就是两位“老师”能不能查找同一间“礼堂”)。

在多核心CPU中,对二级缓存的利用效率有高有低。简单的说,Intel新一

代Core架构二级缓存的利用最为优秀,AMD的Athlon X2系列次之,较老的

Pentium D(Pentium EE)系列最差。

越大越好?够用就好!

几年时间里,二级缓存从小小的64KB一举增长到了8MB,整整128倍!越

来越大的二级缓存是不是真的换来了CPU性能同样“突飞猛进”发展?还是只

不过是Intel和AMD联手玩的数字游戏?

其实,二级缓存容量对性能的影响是渐渐减弱的,当二级缓存从没有增长到

128KB时,带来的性能提升可能是直线上升的。但是当它从2MB增长到4MB的时

候,可能使用者甚至感觉不到性能的提升。这是因为在当前CPU所处理数据的过

程中,几乎无时不刻需要用到128KB以下的缓存,但是需要用到1MB以上缓存的

时候很少(2%左右)。因此虽然二级缓存越涨越大,实际上对CPU性能的影响却

是越来越小的。像文章开头的两款CPU,二级缓存巨大的差异并不会最终表现在

CPU速度上。因此,完全不必要盲目追求二级缓存的高容量,够用就好。

看到这里,大家应该明白AMD和Intel两种CPU二级缓存方面巨大差异的原

因了吧。正是这样的原因,对于不同架构的CPU,二级缓存的容量绝对不是判断

优劣的标准!如果下次再有JS想用二级缓存的大小忽悠你,理直气壮的告诉他

真相吧!!

土老冒:俺知道电脑里最重要的就是处理器,也就是你们经常用洋文表示的CPU,

它好比是电脑的大脑,负责进行各方面的运算,俺经常听你们说,CPU的二级缓

存很重要,它有1M、512K什么的,你能跟俺解释一下什么是二级缓存吗?

Z博士:土老冒这个问题问得不错啊,二级缓存是考量CPU性能好坏的一个重要

标准。不过谈它前要先谈谈什么是CPU缓存。CPU缓存(英文叫 Cache Memory)

是位于CPU与内存之间的临时存储器,它的容量比内存小但交换速度快。在缓存

中的数据是内存中的一小部分,但这一小部分是短时间内CPU即将访问的,当

CPU调用大量数据时,就可避开内存直接从缓存中调用,从而加快读取速度。在

CPU中加入缓存是一种高效的解决方案,这样整个内存储器(缓存+内存)就变

成了既有缓存的高速度,又有内存的大容量的存储系统了。缓存对CPU的性能影

响很大,主要是因为CPU的数据交换顺序和CPU与缓存间的带宽引起的。

土老冒:完全不懂你的解释方法,你认为对俺这种没文化的人,你这样说有用吗?

不请你喝可乐了!

Z博士:„„那我就举个简单的例子吧,仓库中临时堆放货物的地方你应该知道

吧?货物从运输车辆上放下时临时堆放在这个地方,然后再搬到规定的位置长时

间存放。货物在这个临时地方存放的时间很短,可以把它看成是一个临时货场。

土老冒:这下俺听懂了,说白了就是一个临时货物堆放地,不过你好像并没有提

到我问的二级缓存!

Z博士:最初缓存只有一级,后来随着处理器速度提升,一级缓存就开始不够用

了,于是就添加了二级缓存。二级缓存比一级缓存速度要慢,但容量更大,不过

这个二级缓存对不同的处理器也是不同的,比如现在的Intel处理器和AMD处理

器的二级缓存工作方式就完全不一样。

土老冒:有什么不一样?我发现Intel的处理器二级缓存都比同档次的AMD处理

器二级缓存大,它们的工作方式到底有什么不同?

Z博士:在回答这个问题前,先补充一下个问题,一级缓存的速度比二级缓存快

很多。目前,AMD的处理器一级缓存和二级缓存是直接存储和读取数据,比如 AMD

三个字母,可以直接写在一级缓存上,如果一级缓存只够存储AM,而不够存储D,

那么D这个字母就存储在二级缓存中。这也是目前AMD处理器一级缓存较大,二

级缓存较小,但性能并不弱的一个原因。

土老冒:那么Intel又是怎样的呢?我发现Intel处理器的二级缓存都很大,好

像四核的处理器目前已经达到8M了,而AMD最大的才2M。

Z博士:Intel自Pentium 4起就使用数据缓存+指令追踪缓存两个部分。传统指

令缓存暂存的是正在执行的指令信息,而追踪缓存记录的则是过去若干周期指令

执行状况,相当于提供一个指针功能。估计这么解释你又晕了,我还是举个例子

吧:如果比如Intel的处理器的二级缓存要存储:I love Intel这句话,那么

这句话的所有单词可能都存储在二级缓存中,而一级缓存可能只会存储一些符号

例如每个单词的开头代码:I、L、I,当系统需要读取这段话时先从一级缓存中

找到这三个字母,然后再从二级缓存里调取整句话。

土老冒谈硬件 什么是处理器的二级缓存

Intel处理器的缓存好似一本书,L1是目录,L2是具体内容

土老冒:俺有些似懂非懂的,你看这样理解对吗?比如说Intel处理器的二级缓

存是一本书,一级缓存可以说是一个目录,我需要看书的内容的时候需要先看目

录。而AMD处理器的缓存则是一大一小两个仓库,一级缓存是小仓库,但离我们

比较近,二级缓存是一个大仓库,离我们稍微远点,当存放货物的时候不管什么

都先放到小仓库,小仓库放不下了就往大仓库里扔。

/tyc6982/blog/item/