认清CPU的二级缓存别被它的大小忽悠

时间:2022-09-19 04:22:52

我们的话题是从下面四款cpu的信息对比开始的:

很显然,Intel Core 2 Duo E6320与AMD Athlon64 x2 6000+的价格是差不多的,Intel Core 2 Quad Q6600与AMDphemom×49750的价格差也很小,但是为什么Intel CPU的二级缓存总是比AMD的大上不少呢?

有意思的是,双核的时候,两种品牌的二级缓存的容量相差是1倍,而到了四核,两品牌的二级缓存的容量差距就增大到2倍!难道真的是Intel比AMD“更厚道”?下面就让我们引出今天的主角:CPU的二级缓存。

什么是缓存

缓存CPU寻找存储在内存中的数据的“快捷方式”。简单的说,缓存是数据由内存通往CPU的桥梁。它的速度比内存快得多,但是容量比内存小得多。同时,缓存根据读取速度和容量进步分为一级缓存和二级缓存。在cPu需要数据的时候,遵循“一级缓存一二级缓存一内存”的顺序,从而尽量提高读取速度。这样“缓存+内存”的系统就同时兼具了速度和容量的优点。

我们可以打个比方,假设CPU是一名老师,她现在的任务就是要尽快在一幢教学楼(内存)中找到众多学生(数据)中的一个。当她可能要找的学生(数据)都提前被安排进间教室(一级缓存)中的时候,老师(CPU找起来自然就快多了。如果很不幸教室(级缓存)中找不到那名学生数据),她会再去礼堂(二级缓存)中找找看,都找不到的话,最后老师(CPU)只能将搜索范围扩大到整个教学楼(内存)了。

二级缓存容量差异的“罪魁祸首”

提到二级缓存容量的差距,还得从两大CPU巨头对一级缓存的理解说起。现今的CPU中,Intel对一级缓存的理解是“数据代码指令追踪缓存”即是说一级缓存中存储的其实只是二级缓存中数据和指令的地址而不是这些数据和指令的复制。

我们还用上面的比喻形象说明一下,Intel老师在教室(一级缓存)中并不会看到任何一名学生,而只有一张写着学生座次表(数据地址)。Intel老师拿了座次表之后去礼堂(二级缓存)中按照座位号寻找那名学生(数据)。在这样的架构下,Intel老师自然需要更大的礼堂才能按顺序坐下更多的学生。也就是说,二级缓存容量相当程度上影响

相比之下,AMD对级缓存的定位是“实数据读写缓存”,即二级缓存中的部分数据都要在一定的规则下搬到一级缓存中。对于前面的比方,AMD老师在教室中总能看到刚刚从礼堂(二级缓存)那边赶来的学生(数据)。这样子的结构下,AMD老师也就不需要太大的礼堂来坐下更多的学生了。二级缓存的容量自然对AMD CPU的整体性能影响小些。

正是由于一级缓存的工作方式上有区别,AMD总是试图把一级缓存这间“教室”扩建得更大些。以AMDAthlon64 X2 6000+为例,两个内核各配备64KB数据高速缓存和64KB指令高速缓存,而价格稍高的Intel Core 2 DuoE6320两个内核只配备了32KB数据高速缓存和32KB指令高速缓存。

当然,上面只是Intel与AMD的CPU二级缓存巨大差异的主要原因。事实上CPU对二级缓存容量的“敏感”程度与否还受到诸如内存控制器流水线长度频率,总线架构和指令集等多方面的影响,而在多核CPU中还关乎各个物理内核之间的数据交换问题(简单地说就是多位“老师”能不能查找同一间“礼堂”)。

小提示:在多核心CPU中,对二级缓存的利用效率是有有高低之分的。简单地说,Ietel新一代Core架构对二级缓存的利用最为优秀,AMD的Athton X2系列次之,较老的PentiumD(Pentium EE)系列则相对较差。

越大越好?够用就好!

几年时间里,二级缓存从小小的64KB一举增大到8MB,整整128倍!越来越大的二级缓存是不是真的换来了CPU性能同样“突飞猛进”的发展?还是只不过是Intel和AMD联手玩的数字游戏?

其实,二级缓存容量对性能的影响是渐渐减弱的,当二级缓存从0增加到128KB时,带来的性能提升可能是直线上升的。但是当它从2MB增大到4MB的时候,使用者甚至感觉不到性能的提升。这是因为在当前CPU处理数据的过程中,几乎无时不刻需要用到128KB以下的缓存,但是需要用到1MB以上缓存的时候很少(可能有2%左右机会用到)。因此,虽然二级缓存越来越大,但实际上对CPU性能的影响却是越来越小的。就像文章开头的四款CPU,二级缓存巨大的差异并不会等比例地表现在CPU速度上,消费者完全不必要盲目地追求二级缓存的高容量,够用就好。

写在最后

看到这里,大家应该明白AMD和Intel两种CPU二级缓存方面巨大差异的原因了吧?对于不同架构的CPU,二级缓存的容量大小绝对不是判断优劣的标准!如果下次再有JS想用二级缓存的大小忽悠你,你就理直气壮地告诉他真相吧!

上一篇:如何与IBM竞争 下一篇:应聘华为的“战斗”