菜鸟进阶十一:彻底认识硬件之"CPU"篇
大家应该经常听到“处理器缓存”这个词,也听话说过什么一级缓存二级缓存,可是缓存究竟是干什么用的,和内存有什么区别,更大的缓存为什么能提高处理器的工作效率?
1、缓存是什么
缓存的英文是CACHE,目前常见的缓存是片内一级缓存和二级缓存,所谓“片内”,也就是和CPU核心封装在一块晶圆里面。这么做的好处是可以大幅降低核心到缓存的延迟时间,获得最高的传输效率,而坏处就是缓存必须使用于精密的CPU核心一样的制造和封装工艺,成本很高,而且增加的大量晶体管,会造成核心部分的功耗增加,散热不良。也就是说,CPU片内缓存不可能做的很大,即使是不计成本,也很难突破晶体管数量这个物理极限。CPU的缓存和我们平时见到的DRAM内存不同,缓存是SRAM,存取速度方面的性能是天壤之别,目前市售最快的DRAM,也只是DDR2 800MHZ,而CPU的缓存,是和处理器的核心频率同频的。打个比方说,你使用的是P4 3.2G的处理器,那么你的处理器的缓存的工作频率,也是3.2GHZ。加上处理器和缓存之间使用的是256BIT的带宽,其存取速度和数据流量是很恐怖的。
2、缓存怎样工作
常见的处理器,一般拥有一级缓存(L1 CACHE)和二级缓存(L2 CACHE),一级缓存主要是用来存放处理器指令集和正在处理器流水线中运算的数据的镜像和一些初步运算的结果,所以有时候我们会听到一级数据缓存与一级指令缓存的说法。二级缓存和一级缓存不同,他和处理器之间有一定的延迟,所以存取速度比一级缓存略慢,但是容量要大的多。
二级缓存的主要作用,首先是为一级缓存充当临时的存储空间,一级缓存运算时,过一会就要用到的数据,如果存入内存的话,存取时间过长,如果留在一级缓存中的话,又会影响其他数据的载入,所以放在略慢于一级缓存,而比内存快很多倍的二级缓存中,是最好的选择。
二级缓存的另一个重要作用就是放置内存镜像表,也可以理解为内存中所存数据的总目录。这样做的好处就是,一旦需要存取的数据过大或者数据不在LI\\L2缓存中的时候,需要从主内存中调用的时候,可以方便的从主内存中存取,而省去了搜索这个数据所需的时间。要知道进行一次主内存的搜索,对于高速运转的处理器来说,就好像数年那样漫长。
现在,随着多核心处理器的发展,三级缓存也走入了中低端CPU,三级缓存是为读取二级缓存后未命中的数据设计的—种缓存,在拥有三级缓存的CPU中,只有约5%的数据需要从内存中调用,这进一步提高了CPU的效率。
缓存是决定CPU的重要性能参数之一,AMD和Intel的各级别产品,缓存大小也会不一样,大家在选购CPU时可以注意这一点。