论文部分内容阅读
今天的话题从下面两款CPU的信息开始
Intel Pentium D 930……二级缓存容量:2×2MB ……市场参考价格:730元,
AMD Athlon 64 X2 4200+……二级缓存容量:2×512KB ……市场参考价格:780元。
为什么价格差不多,Intel CPU的二级缓存总是比AMD的大上不少?上文两种CPU二级缓存的容量更是整整相差了4倍(1MB=1024KB)!你一定也曾经有这样的疑问。难道真的是Intel比AMD“更厚道”?下面就让我们引出今天的主角:CPU中的二级缓存。
缓存:CPU寻找数据的“快捷方式”
简单地说,缓存是数据由内存通往CPU的桥梁。它的速度比内存快得多,但是容量也比内存小得多。同时缓存依据读取速度和容量进一步分为一级和二级。在CPU需要数据的时候,遵循一级缓存→二级缓存→内存的顺序,从而尽量提高读取速度。这样“缓存+内存”的系统就同时兼具了速度和容量的优点。
我们可以打个比方,假设CPU是一名“老师”,她现在的任务就是要尽快在一幢“教学楼”(内存)中找到众多“学生”(数据)中的一个。当她可能要找的“学生”(数据)都提前被安排进一间“教室”(一级缓存)中的时候,我们可爱的CPU“老师”找起来自然就快多了。如果很不幸“教室”(一级缓存)中找不到那名“学生”(数据),她会再去“小礼堂”(二级缓存)中找找看,都找不到的话,最后再去硕大的“教学楼”(内存)中慢慢搜索。
AMD和Intel:巨大差异皆因设计不同
提到二级缓存容量的差距,还得从两大CPU巨头对一级缓存的理解说起。对,没看错,就是平常曝光率远逊二级缓存的“一级缓存”!它才是造成上面提到巨大差异的“罪魁祸首”。
现今的CPU中,Intel对一级缓存的理解是“数据代码指令追踪缓存”,即是说一级缓存中存储的其实只是二级缓存中数据的地址,而不是这些数据的复制。我们还用上面的比喻形象说明一下,Intel老师在“教室”(一级缓存)中并不会看到任何一名学生,而只有一张写着“学生名字”和“所在座位号”的座次表(数据地址)。Intel老师会在拿了座次表之后,去那间“小礼堂”(二级缓存)中按照“座位号”寻找那名“学生”(数据)。在这样的架构下,Intel老师自然需要更大的“礼堂”来按顺序坐下更多的学生。也就是说,二级缓存的容量相当程度上影响了Intel CPU的性能(见图1)。
相比之下,AMD对一级缓存的定位是“实数据读写缓存”,即二级缓存中的一部分数据都要在一定的规则下搬到一级缓存中。对于前面的比方,AMD老师在“教室”中总能看到刚刚从“礼堂”(二级缓存)那边赶来的“学生”(数据)。这样子的结构下,AMD老师也就不需要太大的“礼堂”来坐下更多的“学生”了。二级缓存的容量自然对AMD CPU的整体性能影响小些。相对地,AMD则总是试图把一级缓存这间“教室”扩建得更大些(见图2)。
当然,上面只是Intel和AMD的CPU二级缓存巨大差异的主要原因。事实上CPU对二级缓存容量的“敏感”与否还受到诸如内存控制器,流水线长度、频率、总线架构和指令集等等多方面的影响。在多核CPU中还关乎各个物理内核之间的数据交换问题(简单地说就是两位“老师”能不能查找同一间“礼堂”)。碍于篇幅所限,这里就不再赘述了。
越大越好?够用就好!
几年时间里,二级缓存从小小的64KB一举增长到了4MB,整整64倍!
其实,二级缓存容量对性能的影响是渐渐减弱的,当二级缓存从没有增长到128KB时,带来的性能提升可能是直线上升的。但是当它从2MB增长到4MB的时候,可能使用者甚至感觉不到性能的提升。这是因为在当前CPU所处理数据的过程中,几乎无时无刻不需要用到128KB以下的缓存,但是需要用到1MB以上缓存的时候很少(2%左右)。因此虽然二级缓存越涨越大,实际上对CPU性能的影响却是越来越小的。像文章开头的两款CPU,二级缓存巨大的差异并不会最终表现在CPU速度上。因此,完全不必要盲目追求二级缓存的高容量,够用就好。
看到这里,亲爱的读者们应该明白两种CPU二级缓存方面巨大差异的原因了吧。正是这样的原因,对于不同架构的CPU,二级缓存的容量绝对不是判断优劣的标准!如果下次再有JS想用二级缓存的大小忽悠你,理直气壮地告诉他真相吧!!
Intel Pentium D 930……二级缓存容量:2×2MB ……市场参考价格:730元,
AMD Athlon 64 X2 4200+……二级缓存容量:2×512KB ……市场参考价格:780元。
为什么价格差不多,Intel CPU的二级缓存总是比AMD的大上不少?上文两种CPU二级缓存的容量更是整整相差了4倍(1MB=1024KB)!你一定也曾经有这样的疑问。难道真的是Intel比AMD“更厚道”?下面就让我们引出今天的主角:CPU中的二级缓存。
缓存:CPU寻找数据的“快捷方式”
简单地说,缓存是数据由内存通往CPU的桥梁。它的速度比内存快得多,但是容量也比内存小得多。同时缓存依据读取速度和容量进一步分为一级和二级。在CPU需要数据的时候,遵循一级缓存→二级缓存→内存的顺序,从而尽量提高读取速度。这样“缓存+内存”的系统就同时兼具了速度和容量的优点。
我们可以打个比方,假设CPU是一名“老师”,她现在的任务就是要尽快在一幢“教学楼”(内存)中找到众多“学生”(数据)中的一个。当她可能要找的“学生”(数据)都提前被安排进一间“教室”(一级缓存)中的时候,我们可爱的CPU“老师”找起来自然就快多了。如果很不幸“教室”(一级缓存)中找不到那名“学生”(数据),她会再去“小礼堂”(二级缓存)中找找看,都找不到的话,最后再去硕大的“教学楼”(内存)中慢慢搜索。
AMD和Intel:巨大差异皆因设计不同
提到二级缓存容量的差距,还得从两大CPU巨头对一级缓存的理解说起。对,没看错,就是平常曝光率远逊二级缓存的“一级缓存”!它才是造成上面提到巨大差异的“罪魁祸首”。
现今的CPU中,Intel对一级缓存的理解是“数据代码指令追踪缓存”,即是说一级缓存中存储的其实只是二级缓存中数据的地址,而不是这些数据的复制。我们还用上面的比喻形象说明一下,Intel老师在“教室”(一级缓存)中并不会看到任何一名学生,而只有一张写着“学生名字”和“所在座位号”的座次表(数据地址)。Intel老师会在拿了座次表之后,去那间“小礼堂”(二级缓存)中按照“座位号”寻找那名“学生”(数据)。在这样的架构下,Intel老师自然需要更大的“礼堂”来按顺序坐下更多的学生。也就是说,二级缓存的容量相当程度上影响了Intel CPU的性能(见图1)。
相比之下,AMD对一级缓存的定位是“实数据读写缓存”,即二级缓存中的一部分数据都要在一定的规则下搬到一级缓存中。对于前面的比方,AMD老师在“教室”中总能看到刚刚从“礼堂”(二级缓存)那边赶来的“学生”(数据)。这样子的结构下,AMD老师也就不需要太大的“礼堂”来坐下更多的“学生”了。二级缓存的容量自然对AMD CPU的整体性能影响小些。相对地,AMD则总是试图把一级缓存这间“教室”扩建得更大些(见图2)。
当然,上面只是Intel和AMD的CPU二级缓存巨大差异的主要原因。事实上CPU对二级缓存容量的“敏感”与否还受到诸如内存控制器,流水线长度、频率、总线架构和指令集等等多方面的影响。在多核CPU中还关乎各个物理内核之间的数据交换问题(简单地说就是两位“老师”能不能查找同一间“礼堂”)。碍于篇幅所限,这里就不再赘述了。
越大越好?够用就好!
几年时间里,二级缓存从小小的64KB一举增长到了4MB,整整64倍!
其实,二级缓存容量对性能的影响是渐渐减弱的,当二级缓存从没有增长到128KB时,带来的性能提升可能是直线上升的。但是当它从2MB增长到4MB的时候,可能使用者甚至感觉不到性能的提升。这是因为在当前CPU所处理数据的过程中,几乎无时无刻不需要用到128KB以下的缓存,但是需要用到1MB以上缓存的时候很少(2%左右)。因此虽然二级缓存越涨越大,实际上对CPU性能的影响却是越来越小的。像文章开头的两款CPU,二级缓存巨大的差异并不会最终表现在CPU速度上。因此,完全不必要盲目追求二级缓存的高容量,够用就好。
看到这里,亲爱的读者们应该明白两种CPU二级缓存方面巨大差异的原因了吧。正是这样的原因,对于不同架构的CPU,二级缓存的容量绝对不是判断优劣的标准!如果下次再有JS想用二级缓存的大小忽悠你,理直气壮地告诉他真相吧!!