现在高速缓存的概念已被扩充,不仅在CPU和主内存之间有高速缓存而且在内存和硬盘之间也有Cache(磁盘高速缓存),乃至在硬盘与网络之间也有某种意义上的 Cache(Internet 临时文件夹)——凡是位于速度相差较大的两种硬件之间的,用于协调两者数据传输速度差异的结构,均可称之为Cache。Cache与上下流之间的数据交换都是程序局部性原理。这次我们主要讨论CPU的高速缓存,前面已经介绍了CPU高速缓存是内存储器的一种,下面将介绍其产生的原因及演变。
早期计算机的CPU与主存的工作速度较为接近,主内存的速度并不影响整机的运算速度。随着IC设计和半导体制造工艺的发展,CPU的运行速度远高于主内存的速度。这要求系统中主存的存取速度提高,存储容量增大。而主存储器一般采用DRAM (动态随机存储器) ,其容量的提高是比较快的,但是读取速度的提高却很慢,因此在速度上与CPU主频的提高产生了不相配的情况。为解决高速CPU 与低速内存之间的速度差异,最经济、有效的方法是在两者之间插入容量不大但操作速度很高的存储器高速缓存(Cache) ,起到缓冲作用,解决了两者速度的平衡和匹配问题,对微处理器整体性能有很大提高。
486时代的两个代表产品486DX和486SX
早期的80486相当于把80386和完成浮点运算的数学协处理器80387以及8kB的高速缓存集成到一起,这种片内高速缓存称为一级(L1)缓存,80486还支持主板上的二级(L2)缓存。缓存概念由此诞生,并一直延续到今天成为影响CPU性能的重要因素。
四核Nehalem架构拥有高达8M的三级高速缓存
随着CPU制造工艺的发展,二级缓存和三级缓存也能轻易的集成在CPU内核中,容量也在逐年提升。至今,在中低端产品中集成三级缓存的CPU也不少见。
当然,有人可能要问,为什么不直接把内存的速度提高到和缓存一样快呢?这涉及到两个方面,为了得到更高的速度,那信号的发射频率必须提升,而为了得到更大的容量,就必须减少集成电路中信号传输中存在干扰,干扰与传播速度又正相关,如果频率提高,干扰就会增强,所以两者比较难以统一。
构成缓存的6T SRAM晶体管结构图
另一方面是“经济”原因,高速缓存缓存通常都是静态RAM (SRAM),速度是非常的快, 但是静态RAM集成度低,存储相同的数据,静态RAM的体积是动态RAM的6倍,高同容量的静态RAM价格是动态RAM的四倍。这就限制了静态RAM容量的进一步扩大,同时缓存大小也成了CPU级别的一个重要标志。
虽然我们知道了高速缓存可以大幅的提高CPU的速度,那么,它们工作的具体原理是什么呢?