缓存是决定CPU性能的主要参数之一,它是存在于内存与CPU之间的存储器,虽然容量比较小但速度比内存高得多,接近于CPU的速度,是用于减少CPU访问内存所需的平均时间的部件。结构上,一个直接匹配缓存由若干缓存段构成,每个缓存段存储具有连续内存地址的若干个存储单元。
高速缓存的工作原理是:当CPU要读取一个数据时,首先从高速缓存中查找,如果找到就立即读取并进行处理,这个过程只需2~4纳秒;如果没有找到,就用相对慢的速度从内存中读取并进行处理,同时把这个数据所在的数据块调入高速缓存中,这样可以使得以后对整块数据的读取都从高速缓存中进行,不必再到内存调用,这个过程需要花费最少120纳秒,如图3-14所示。
图3-14 缓存数据读
为了更好地了解缓存,我们可以将CPU理解为位于市中心的工厂,内存为位于远郊的仓库,而缓存则位于CPU与内存之间。CPU、缓存、内存的位置关系如图3-15所示。距离CPU工厂最近的仓库是一级缓存,其次为二级缓存、三级缓存。工厂所需的物资,可以直接存储在缓存仓库中,而不必到很远的郊区内存处提取。
图3-15 CPU、缓存、内存位置关系
这样的读取机制使得CPU读取高速缓存的命中率非常高,通常CPU下一次要读取的数据90%都在高速缓存中,只有大约10%需要从内存读取。这大大节省了CPU直接读取内存的时间,也使CPU读取数据时基本无须等待。
正因为高速缓存的命中率非常高,所以缓存对CPU性能的影响很大,CPU中的缓存越多,整体性能越好。
目前CPU中一般包含三级缓存,分别是L1(一级缓存)、L2(二级缓存)和L3(三级缓存)。CPU的缓存信息都能够通过软件进行检测,如图3-16所示为Intel Core i57400处理器的缓存信息,一级缓存为256KB,二级缓存为1024KB,三级缓存为6MB。
图3-16 缓存信息检测
L1(一级缓存)是CPU第1层高速缓存,分为数据缓存和指令缓存。内置的L1高速缓存的容量和结构对CPU的性能影响较大,目前主流的双核CPU的一级缓存通常为128KB。
L2(二级缓存)是CPU的第2层高速缓存,分内部和外部两种芯片。内部芯片的二级缓存运行速度与CPU的主频相同,而外部的二级缓存速度则只有主频的一半。目前主流的双核CPU的二级缓存通常为1MB,服务器的二级缓存有的高达8MB~19MB,如图3-17所示。
L3(三级缓存)分为两种,早期的三级缓存是外置的(即在CPU的外面),而目前的三级缓存都采用内置的(即和CPU封装在一起)。三级缓存和一级缓存、二级缓存相比,距离CPU核心较远,速度较慢,但其容量要比前两级缓存大很多。目前主流的双核CPU的三级缓存通常为2MB~12MB,甚至更多。CPU缓存位置关系图如图3-18所示。
图3-17 二级缓存
图3-18 CPU缓存位置关系图
注意
CPU缓存并不是越大越好。因为缓存采用的是速度快、价格昂贵的静态RAM(SRAM),由于每个SRAM内存单元都由4~6个晶体管构成,增加缓存会带来CPU集成晶体管个数大增,发热量也随之增大,给设计制造带来很大的难度。所以,就算缓存容量做得很大,但若设计不合理也会造成缓存的延时,CPU的性能也未必能得到提高。