南瓜园

 找回密码
 注册
查看: 1822|回复: 2

CPU究竟需要多大緩存?緩存的前世今生

[复制链接]
发表于 2010-8-25 01:34:06 | 显示全部楼层 |阅读模式
由于超频的平民化,目前不少网友在选择处理器时已经不再像以前那样看中处理器的默认主频了,“反正可以超上去的嘛”,而且由于睿频智能加速和Turbo Core技术的逐渐成熟,CPU的主频不再是一成不变的了。

CPU究竟需要多大缓存?
    对处理器性能影响较大的另外一个因素是处理器的架构。由于处理器的架构更新较多的依赖技术进步,并且处理器的架构更新意味着产品线的变更、生产线的变动,这些都增加了处理器厂商的成本,而且企业不像某些组织可以宣称自己不是以营利为目的的,厂商也要追求上代产品的利润最大化,因此即便是处理器架构更新较频繁的Intel也只是隔一年推出一个新架构,所以近期对处理器来说,一个关注的焦点开始落到了缓存容量上。

大缓存对于大会战作用很大
    在对近期上市的《星际争霸Ⅱ》的相关测试中,我们可以看到,具有大容量缓存的CPU在面对大规模的会战的时候,更能保证游戏的流畅性,那么究竟CPU的缓存经过了怎样的发展变化呢?下面我们就一起回顾一下。
缓存开辟“缓冲区” 容量微小作用大
    CPU缓存(Cache Memory)是位于CPU与内存之间的规模较小的但速度很高的临时存储器,它通常由SRAM(静态随机存储器)组成。用来存放那些被CPU频繁使用的数据,以便使CPU不必依赖于速度较慢的DRAM(动态随机存储器)。不过限于它的昂贵成本,一般容量比内存要小。

SRAM结构简图
    缓存的设计思路是用少量的速度较快的SRAM作为CPU与DRAM存储系统之间的缓冲区,起初是在芯片的外部,到了80486时期,这部分SRAM被集成到了芯片内,因此又叫片内Cache。

DRAM结构简图
    片内Cache即是今天的一级缓存,这部分缓存的容量是很少的,486芯片内只有8KB,到了奔腾高档芯片就升级到了16KB,Power PC可达32KB。后来Pentium微处理器改进片内Cache,采用数据和双通道Cache技术非常灵活、方便,极大地提高了微处理器的性能。
缓存对处理器的性能影响有多大?
    可以说现在处理器厂商对产品的档次划分有着深入的研究,不只是可以按主频的高低划分,还可以按照缓存量的不同而区分开来,而且即使两款处理器的其他参数完全一致,只缓存量略有出入,那么这两款处理器的售价可以相差很多。

CPU的缓存量不同价格相差很大
    缓存的容量目前一般都以MB计量,不同的处理器型号缓存量差别不小,有的拥有1MB二级缓存,而有些则可以高达12MB,而售价却差了好几倍,最高可以差十几倍,那么缓存对处理器的售价影响可见一斑,同时也说明缓存对处理器的性能影响很大。

缓存存储着CPU需要的数据
    缓存的工作原理是当CPU要读取一个数据时,首先会从缓存中查找,如果找到就立即读取并送给CPU处理;如果没有找到,就从速度相对慢得多的内存中读取并送给CPU处理,同时把这个数据所在的数据块调入缓存中,可以使得以后对整块数据的读取都从缓存中进行,不必再调用内存。有此可见缓存对处理器的性能有着重大的影响。
为何Intel对缓存容量这么敏感?
    一般AMD的处理器相比Intel拥有更少的缓存,比如速龙64 X2 5000+缓存量为2X128KB+2X512KB=1.256MB,而定位在同档次的Intel奔腾E5200的缓存量只二级缓存就达到了2MB,目前广为人知的Intel的处理器性能相对更依赖缓存,1MB二级缓存的处理器要比同样架构的、具有2MB二级缓存的处理器性能差很多。

Intel处理器比较依赖缓存
    为什么Intel的处理器更依赖缓存呢?这主要在于Intel与AMD的缓存逻辑结构设计有关。一般CPU读取的数据(包括指令)中有80%来自一级缓存,对于AMD来说一、二、三级缓存都是用来存储CPU将要处理器的数据的,因此在一级缓存中未找到(命中)的数据可以去二级缓存,甚至三级缓存里去找,而Intel的结构不是这样的。

Intel一级缓存采用“数据代码指令追踪缓存”架构
    Intel的一级缓存采用“数据代码指令追踪缓存”架构,这种架构并不是直接存储CPU可以直接用的数据,而且存储该部分数据的地址(可以理解为目录),而这部分数据则被存储在二级缓存甚至三级缓存里,这样CPU可以根据一级缓存的“目录”来在缓存里面快速找到所需要的数据,因此理论上讲对于Intel处理器二级缓存和三级缓存容量越大越好。
一级缓存遇瓶颈 二级缓存走马上任
    一般CPU中的一级缓存容量都很少,即使是售价高昂的六核酷睿i7-980X,一级缓存也只有2X 6X32KB=384KB,还不到512KB,既然都是最高端的旗舰了,那么为什么CPU厂商不多给这些CPU多设计些一级缓存呢?

酷睿i7-980X具有384KB一级缓存
    前面也提到了一级缓存是集成在芯片内部的,因此就要占用一定的晶体管,这对于核心面积有限的处理器来说更多的缓存意味着要提供更多的地方来添加这些晶体管,其次更重要的是一级缓存的速度极快(达几十GB/S,二级缓存一般为几GB/S,一级缓存比二级缓存要快一个数量级)所以售价很昂贵,这就极大的限制了它的容量,最后缓存是处理器中的发热大户,设计太大容量所带来的发热量是很“可观”的。

CPU缓存分级类似于ADSP-BF561的结构
    那么如何应对这种情况呢?CPU厂商想出的一个办法就是给缓存分级,也就是引入二级缓存,通俗来讲,二级缓存即便是一级缓存的缓冲,主要用来存储那些CPU处理时用到的、一级缓存无法存储的数据(三级缓存相对二级缓存也类似),这样采用缓存分级可以很好的解决延时问题而且效果不亚于增加一级缓存容量,成本也比较低。
2MB“升级”至12MB 二级缓存到尽头
    酷睿2系列处理器的二级缓存容量从1MB到2MB、3MB、4MB再到6MB、8MB、12MB可以说让人眼花缭乱,那么为何二级缓存到了12MB就没有再增加了呢?

赛扬E3200具有1MB二级缓存
    首先二级缓存属于SRAM(静态RAM),成本虽然相比一级缓存有所降低,但仍然意味着较大的成本,其次SRAM虽然有着相比DRAM更高的性能但是却有它的缺点即集成度不如后者高,换句话说相同容量的DRAM内存可以设计得体积较小,而SRAM就需要很大的体积,这对于空间“寸土寸金、房价高昂”的CPU来说,显然不能设计太大容量,最后前面已经提到了给缓存分级,采用多级组织可以有效降低延时,提高cache的命中率。

酷睿2 QX9650具有12MB二级缓存
    二级缓存在达到了让网友惊讶的12MB后就没有再有增加,而且在增加L3缓存后容量有所降低,但是处理器的性能非但没有降低,反而有了更大的提升,那么这又是怎么一回事呢?
三级缓存“出世” 二级缓存稍减
    三级缓存可以看做是二级缓存的缓冲器,使用较快速的储存装置直接从较慢的内存中读取数据并进行拷贝,这对于有效得降低内存的延迟大有好处。

粉红色部分即为三级缓存
    其实最早的L3缓存被应用在AMD发布的K6-III处理器上,当时的L3缓存受限于制造工艺,并没有被集成进芯片内部,而是集成在主板上。在只能够和系统总线频率同步的L3缓存同主内存其实差不了多少。后来使用L3缓存的是英特尔为服务器市场所推出的Itanium处理器,接着就是P4EE和至强MP。

酷睿i7二级缓存核心独享
    不过为什么酷睿i7的二级缓存反而随着三级缓存的采用而减少了呢?仔细观察酷睿i系列处理器的架构即可发现酷睿i7处理器的二级缓存不再是采用酷睿2处理器的共享设计,而是每颗核心具有自己独立的二级缓存,这样就没有必要设计那么大容量的公用资源区了,而这一任务则交给了高达12MB的三级缓存,而且三级缓存和内存一样,容量越大,成本越低,这样将公用数据资源的任务交给L3缓存不仅同样解决了延时,同时也有效降低了成本。
4MB增至12MB 三缓随核心数变化
    在Intel的酷睿i系列处理器中,三级缓存容量继续延续了酷睿2时代L2缓存容量“百花齐放”的局面。

酷睿i3处理器具有4MB L3缓存
    酷睿i3-530具有4MB三级缓存,酷睿i5-750具备8MB三级缓存,酷睿i7-980X具有12MB三级缓存,三级缓存容量随核心数的增加而增加,可以简单理解为,越多的核心可以应对更大的数据量处理,因此更大的三级缓存就很有必要了。

酷睿i5-760具有8MB三级缓存
    那么三级缓存对处理器的性能影响到底有多大呢?实际上三级缓存的速度相比二级缓存要慢很多,但是三级缓存对于大数据量处理的贡献是很大的,尤其是在一些较依赖缓存、运算量较大的游戏中如《英雄连》表现明显,而且三级缓存在服务器处理器中的作用也更为明显。
未来会有四缓么?如何理性看待缓存量
    一般来讲,缓存容量越大对处理器的性能提升越好,但是除了前面所说的成本、发热量限制等因素外,缓存容量并不能纯粹的保持越大越好。

未来会否有四级缓存?
    在实际应用中,CPU处理的数据中大多数都是0KB~128KB大小的数据,128KB~256KB的数据约有10%,256KB~512KB的数据有5%,512KB~1MB的数据仅有3%左右。因此这对于CPU来说,二级缓存容量从0KB增加到256KB对CPU性能的提高几乎是直线性的;增加到512KB对CPU性能的提高就要小一些;而从512KB增加到1MB,大多数情况下普通用户就很难体会到CPU性能有多大提高了。

AMD羿龙II X6 1090T具有6MB三级缓存
    而且经过实际测试,桌面级处理器的三级缓存从2MB增加到6MB只带来大约5%的性能提升,再增加带来的性能提升就更不明显了,这从在多数测试中酷睿i3-530处理器都性能直追酷睿i5-750上可以看出来,而且相比羿龙II四核处理器,AMD羿龙II六核处理器似乎只是增加了1MB的二级缓存,三级缓存容量仍然保持在了6MB,这样合理的控制缓存容量,不仅没有降低多少处理器的性能,还能更好的控制处理器的成本,这对于应对竞争激烈的最高形式——价格战是非常有利的。
● 总结
    处理器的制造工艺不断进步,处理器架构也不断更新,缓存在处理器中将会有何种形式的调整恐怕只有两大处理器巨头的技术工程师知道了,不过缓存作为CPU和内存间的缓冲器的作用在内存的速度赶上处理器速度之前是很难发生改变的。■
发表于 2010-8-25 16:06:10 | 显示全部楼层
一级缓存最重要,因一级缓存无法设计过大,而后缓存级数多,命中率也月高
发表于 2010-8-25 16:09:03 | 显示全部楼层
忘了补充一点,因为I7缓存设计独立,主要是因为超线程技术的缘故,要发挥超线程的性能,大缓存是不可少的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

请大家牢记南瓜园网址 www.nan2008.com

QQ|小黑屋|手机版|Archiver|南瓜园

GMT+8, 2024-11-18 14:17 , Processed in 0.098471 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表