目前,PC及其服务器系统的发展趋势之一是CPU主频越做越高,系统架构越做越先进,而主存DRAM的结构和存取时间改进较慢。因此,缓存技术愈显重要,在PC系统中缓存越做越大。广大用户已把缓存作为评价和选购PC系统的一个重要指标。在整个CPU当中,缓存大小是CPU的重要指标之一,其结构与大小对CPU速度的影响非常大。CPU作为整台电脑的总指挥部,内部构造当然不会那么简单,缓存也是其结构设计中的一个重要环节。缓存到底是个什么神秘的东东。我想大家未必都了解现在我们就一同了解一下:

  缓存英文名是cache,是一种特殊的存储器子系统,其中复制了频繁使用的数据,以利于CPU快速访问。高速缓冲存储器频繁访问内存中的内容,当处理器引用存储器中的某地址时,高速缓冲存储器便检查是否存有该地址。如果存有该地址,则将数据返回处理器;如果没有保存该地址,则进行常规的存储器访问。因为高速缓冲存储器总是比主RAM 存储器速度快,所以当 RAM 的访问速度低于微处理器的速度时,常使用高速缓冲存储器。其实缓存在CPU中简单的讲就是起到一个临时存储的作用。大家都知道,电脑中临时放置数据的存储设备就是内存,由于内存与CPU相互独立,如果CPU需要调用数据时就会需要一定的时间。CPU每次输出的结果可能需要多次调用数据逐次运算后统一输出,如果CPU每次都必须直接从内存中调用数据的话,就会在一定程度上降低CPU的运算速度。所以设计CPU的工程师们就想了一个办法:直接在CPU内部设计一个被称之为"缓存"的地方进行临时存放数据,这样CPU就不用每次都从内存中寻找数据,大大提高了CPU运行的速度。

  缓存的工作原理

  由于Cache是位于CPU与内存之间的临时存储器,它的容量比内存小但交换速度快。在Cache中的数据是内存中的一小部分,但这一小部分是短时间内CPU即将访问的,当CPU调用大量数据时,就可避开内存直接从Cache中调用,从而加快读取速度。由此可见,在CPU中加入Cache是一种高效的解决方案,这样整个内存储器(Cache+内存)就变成了既有Cache的高速度,又有内存的大容量的存储系统了。Cache对CPU的性能影响很大,主要是因为CPU的数据交换顺序和CPU与Cache间的带宽引起的。CPU要读取一个数据时,首先从Cache中查找,如果找到就立即读取并送给CPU处理;如果没有找到,就用相对慢的速度从内存中读取并送给CPU处理,同时把这个数据所在的数据块调入Cache中,可以使得以后对整块数据的读取都从Cache中进行,不必再调用内存。正是这样的读取机制使CPU读取Cache的命中率非常高(大多数CPU可达90%左右),也就是说CPU下一次要读取的数据90%都在Cache中,只有大约10%需要从内存读取。这大大节省了CPU直接读取内存的时间,也使CPU读取数据时基本无需等待。总的来说,CPU读取数据的顺序是先Cache后内存。

  缓存的发展过程

  Cache并不是生来就有的,其实在286时代,计算机还没有Cache,这是因为当时的CPU速度不快,内存的速度完全可以满足系统的需求。直至386时代,当CPU的速度不断进步,内存的速度却没有得到有效的提升,因此,内存便成为了系统传输的瓶颈,这样就算CPU频率再上升,效能也不会增加。那么问题怎么解决呢?Cache便由此诞生,早期的解决方案是在主板上加入32至64KB的Cache,Cache的速度比主存储器快,作为CPU和内存的缓冲区域。这样使得系统性能迅速提高,人们也初次品尝到Cache的好处。

  其实Intel在386时也曾考虑过将Cache改进CPU内,但由于技术原因,CPU的成品率十分低,故此80386最后也没加上Cache。由于CPU的速度不断进步,而外置Cache受系统总线的影响已经不能完全满足CPU发展的要求,到486时代,Intel终于把Cache放进CPU核心内。80486内置了8KB Cache,由于处于CPU内,令传输速度更有效率,但由于On Die Cache的容量太少,故此当时还是有On Board Cache,称为L2 Cache。而CPU内的Cache称为L1 Cache。当时的L2 Cache就像今天内存一样,是可以插在主板上使用的,不过价格昂贵。

  进入了Pentium时代,CPU芯片商不断去增加Cache的容量去加强效能,当Pentium有16KB时,对手就加入更多,到达32KB甚至64KB,当时AMD的K6-2更有高达84KB的L1 Cache。Intel公司在1995年末推出的Pentium Pro,为了进一步改善系统性能,采用了双穴封装,即除了CPU外,还把256/5l2KB的二级Cache也封装在同一个陶瓷片内。这样,L2也能以处理器的时钟高速运行,大大地提高了系统效率。由于Pentium Pro采用的方式成本很高,在Intel随后推出的Pentium II中,把L2又从CPU陶瓷封装中分立出来,和CPU共同安装在一块称为SEC的卡盒内,而Pentium II处理器则采用了双独立总线结构,其中一条总线联接L2高速缓存,另一条负责主存。由于Pentium II的L2只能以CPU时钟的一半工作。因此比Pentium Pro的L2慢一些。作为一种补偿,Intel将Pentium II上的Ll高速缓存从16K加倍到32K,从而减少了对L2高速缓存的调用频率。而在非Intel CPU中,L1的容量则更大,以期求得更好的系统性能。

  由于卡匣式太贵,Intel再次用回Socket与塑料封装,同时由于制程的进步,L2 Cache也放在核心内,初时的Pentium III拥有512KB L2 Cache,早期的也产生过slot I结构的Pentium III,在卡内出现512k Cache,但和早期的socket 370结构的Pentium III一样Cache只有核心速度的一半,到后来进步至256KB 但行全速。此时期的代表作就是大家了解的铜矿核心Pentium III。

  鉴于L2 Cache 具有重要的作用,在Pentium III时代,Intel Pentium III采用了8路联合相关的L2 Cache,Pentium III和Celeron的L2 Cache都属于经典意义上的包含类型缓存,也就是说L1 Cache(32KB)的内容一定也在L2 Cache(256KB和128KB)内。 此外L2 Cache 在容量上也有发展,在Pentium IV 早期的版本Willamette核心的处理器仍然使用的是256k Cache,但在图拉丁 Pentium III和Northwood的Pentium IV Intel 率新把 L2 cache 增加到512k 随后。

  目前最新的Prescott L2 Cache 容量陡增至 1M。Prescott是Intel下一代的Pentium 4处理器,Prescott使用的第三代NetBrust技术是在Northwood核心上进行革新而来的,增加了pipeline(流水线)的长度,使用更大的16KB的L1 Cache和1MB 8路关联的L2 Cache,更大的16KB L1和1MB L2 Cache允许在每个时钟周期内传输更多的数据,这对于HT技术的帮助很明显,当两个线程同时运行在一颗处理器上需要更多的缓存空间。,而Itanium 2代号为McKinley,Deerfield是Intel即将推出的64位工作站CPU,Deerfield是一个低成本版本的Madison,Madison增加了芯片内高速缓存的数量,Madison和Deerfield会在明年的第二季度推出,分别具有6MB和4MB的Cache。

  随着64位处理器的诞生,Intel已经把高速的L3 加入到其Itanium 2当中,或许这有将带来一场Cache革命,但结局如何?这正是我们期待的。