有个配角叫缓存

硬派学堂

虽然秋天到了,但天气依然很热,长期呆在空调房里,很容易就害了空调病。去医院,医生建议如果想快快好起来的话,最好的方法就是打点滴。当点滴瓶挂在架子上,发现药水并不是从药瓶子直接滴到我们的身体里,而是先注入到一根常常的小塑料管中……等一下,那根小塑料管,不就是缓存吗?

缓存都很快

CPU里面有缓存、硬盘里面有缓存、光驱里面有缓存……在电脑的很多部件中,缓存常常作为一个配角存在——当人们说起CPU,第一个说到的是频率,第二说到的是制程;当人们说到硬盘,第一个说的是总体容量,第二是单碟容量;当人们说到光驱,第一说的是速度,第二说的是价格……缓存的知名度远远不如那些“核心”耀眼。但它在计算机中的地位,绝对是举足轻重的。

缓存,虽然名字中有个“缓”字,但并不代表它行动很缓慢。相反,它甚至可以说是在电脑中,除了CPU以外,最“勤快”的部件了。“缓”在这里更多代表的是一种“缓冲、缓解矛盾”的含义。我们平时知道缓存的存在,最多的还是从CPU上面,其次是硬盘以及光驱。缓存存在的地方,必然是数据交换频繁的地方。

作为核心的CPU处理数据的速度极快,内存跟不上,怎么办?缓存来帮忙。硬盘磁头频繁读写忙不过来,怎么办?缓存来帮忙。刻录机在等待从硬盘上读取数据,一时没找到,眼看就要刻录失败,怎么办?还是缓存来帮忙。

CPU的缓存能提升CPU的性能,硬盘的缓存能提升硬盘的读写速度,刻录机中的缓存能让刻录更稳定。总的来说,缓存的三大作用,就是预读取(预先读取将要载入的数据)、存储临时访问过的数据和对写入的数据进行暂时存放。有点耳熟?不错,这些听起来有点像内存的用途。不过缓存的工作地点,总是先于内存。它是一个缓冲区,是一个让内存不与那些“核心”直接打交道,避免“引发冲突”的重要部件。

举个例子,在CPU里面,缓存是高速的,老鸟们一般喜欢称它为“Cache”。现在普通的家用CPU一般都有一级和二级缓存(也称为L1、L2缓存),有的甚至还有L3缓存。让缓存夹在CPU与内存之间,CPU缓存的存在,主要是为了解决内存的“慢速”与CPU的“快速”之间的矛盾。当年Intel曾经推出过一些由奔腾阉割而来的无缓存赛扬,但无缓存的CPU性能实在不怎么样,近来也就再没有类似产品问世。

36-20-1.jpg
CPU中的缓存
36-20-2.jpg
硬盘PCB板上的缓存
36-20-3.jpg
刻录机PCB板上的缓存

缓存都很小

一般来说,我们看到的缓存容量都不大。比如,目前热门的Pentium E5200/5300,它的L1缓存为64KB×2,L2缓存(二级缓存)也仅为2MB,而Athlon Ⅱ X2 240的L1缓存为128KB×2,L2也不大,为2MB。就算是目前售价为999美元的顶级桌面处理器酷睿i7 975 EE,其L2缓存不过8192KB,而历史上L2缓存最大的酷睿2 QX9650,也不过才12MB。

对于目前市面上销售的传统家用硬盘,缓存也不过在 8MB~32MB(少数企业级硬盘会达到64MB),而光驱的缓存也是512KB~2MB不等。

如果仅从缓存容量的大小来看,显然无法与当前电脑内部动辄上4GB的内存与上TB的硬盘容量相提并论。

缓存都很贵

或许你会问,“为什么那些硬件厂商如此抠门,把缓存做大一点会死人啊?”要解答这一问题,还得从两方面入手。第一,因为缓存对性能影响很大,所以,它就成了当厂商划分市场的绝好方式。比如:Pentium E5300的主频为2.6GHz,L2为2MB,现在的售价为470元;同是45nm制程,架构基本相同的酷睿2 E7300的主频为2.66GHz,但L2为3MB,售价则达到了630元。在制程、主频、核心架构、核心数量都相差无几的情况下,那1MB的L2缓存就带来了160元的价格差距。而恰恰是这1MB的差距,在实际测试中,让E7300在某些情况下,最高能领先E5300近20%(一般情况下,领先5%~15%不等)。

第二,从理论上说,把缓存加大,虽然对性能的提升有帮助,但在成本方面投入却是不成正比的。举一个不太规范的例子,对于CPU来说,将L2缓存从1MB提升为2MB,性能可能会有50%的提升,如果将2MB提升为4MB,可能会有20%的性能提升,从8MB提升至12MB,可能这个提升幅度也仅有5%。当缓存大到一定程度的时候,提升的幅度就越小,而成本却是在成倍增加。这也是处理器、硬盘、光驱厂商不会贸然大幅度提升缓存的原因。

除了“性价比”的限制让厂商不会拼命提升缓存容量外,缓存越大,相应地也会让产品的功耗和发热量增加。在成本和带来的收益不成正比的情况下,现在的硬件缓存在容量方面的发展也就比较慢。

写在最后

总结一下,计算机中的缓存有快、小、贵三个特点。它的作用是预读取、存储临时访问过的数据和对写入的数据进行暂时存放。当然,我们也可以将“缓存”这个概念扩大一点,比如显卡上的显存、主板上的板载显存,其实也是一种缓存。结合现实生活中的例子来理解缓存,比如车站就是汽车运输的缓存,就会觉得以前作为配角存在的缓存其实是无所不在的。(四川 吴鹏)

你知道吗:为什么Intel处理器与AMD处理器的缓存差异很大?

如果综观市面上所有的CPU缓存,细心的朋友或许会发现,Intel和AMD的处理器在缓存方面有个特征——Intel处理器的L1缓存往往比较小(一个核心为32KB的居多),而L2缓存则相对较大;AMD则是L1较大(一个核心有64KB及以上的居多),L2则以2MB、4MB居多,没有Intel那么夸张。

这是因为Intel和AMD处理器在对处理数据的算法上有所不同。Intel处理器中的L1缓存并不存放实际的数据,而仅仅是存放实际数据的地址,实际的数据存放在L2缓存中。而AMD在L1中就会存放那些最常用的数据,在L2中存放比较常用的数据。从它们的不同结构中,我们能得出的结论就是Intel处理器因为自身的算法原因,对L2缓存的需求比AMD大。因此,L2缓存的大小会直接影响到Intel处理器的性能,对AMD处理器的影响就没那么大。

小贴士:如何查看CPU缓存

由于CPU缓存是封装在CPU内部的,我们无法通过外形来识别,只能通过软件检测。通常使用CPU-Z来检查CPU的缓存信息,在CPU-Z主界面的右下角显示的就是缓存的大小和信息。

36-20-4.jpg
CPU-Z检测的CPU信息,包含各级缓存的大小