高速缓存Cache的作用

时间:2022-06-24 07:37:45

 高速缓存Cache的作用

  现在使用的绝大多数CPU都带有高速缓存――Cache,有的甚至集成了多极缓存;而我们选择主板时,板上的Cache数量也是一个重要的考虑因素。早期的486集成了4~8K的一级片内Cache,而现在的Pentium II至强处理器不仅集成了32K一级片内Cache,还将512K~2M的二级Cache全速Cache集成进去。那么,Cache对于系统的作用是什么呢?为什么要集成越来越多的Cache呢?

  现在计算机系统中都采用高速 DRAM(动态RAM)芯片作为主存储器。早期的 CPU 速度比较慢,CPU与内存间的数据交换过程中,CPU处于等待状态的情况很多。以早期的8MHz的286为例,其时钟周期为125ns,而DRAM的存取时间一般为60~100ns。因此CPU与主存交换数据无须等待,这种情况称为零等待状态。所以CPU与内存直接打交道是完全不影响速度的。可是近年来CPU的时钟频率的发展速度远远超过了DRAM读写速度的进展。在短短几年内,CPU的时钟周期从100ns加速到几个ns,而DRAM经历了FPM,EDO,SDRAM几个发展阶段,速度只不过从几十ns提高到10ns左右,DRAM和CPU之间的速度差,使得CPU在存储器读写总线周期中必须插入等待周期;由于CPU与内存的频繁交换数据,这极大地影响了整个系统的性能。这使得存储器的存取速度已成为整个系统的瓶颈。当然,另一种方案是采用高速的静态 RAM(SRAM)作为主存储器与CPU匹配,问题是SRAM结构复杂,不仅体积大而且价格昂贵。因此,除了大力加快DRAM的存取速度之外,当前解决这个问题的最佳方案是采用Cache技术。Cache即高速缓冲存储器,它是位于CPU和DRAM主存之间的规模小的速度快的存储器,通常由SRAM组成。Cache的工作原理是保存CPU最常用数据;当Cache中保存着CPU要读写的数据时,CPU直接访问Cache。由于Cache的速度与CPU相当,CPU就能在零等待状态下迅速地实现数据存取。只有在Cache中不含有CPU所需的数据时CPU才去访问主存。Cache在CPU的读取期间依照优化命中原则淘汰和更新数据,可以把Cache看成是主存与CPU 之间的缓冲适配器,借助于Cache,可以高效地完成DRAM内存和CPU之间的速度匹配。

  386以前的芯片一般都没有Cache,对后来的486以及奔腾级甚至更高级芯片,已把Cache集成到芯片内部,称为片内Cache。片内Cache的容量相对较小,可以存储CPU最常用的指令和数据。别看容量小,片内Cache灵活方便,对系统效率有相当的提高。你可以试着在BIOS中关掉你的CPU的内部Cache,你可以发现这可能会使你的系统性能下降一半甚至更多。

  但是,片内Cache容量有限,在CPU内集成大量的SRAM会极大的降低CPU的成品率,增加CPU的成本。在这种情况下,采取的措施是在CPU芯片片内Cache与DRAM间再加Cache,称为片外二级 Cache(Secondary Cache)。片外二级Cache实际上是CPU与主存之间的真正缓冲。由于主板DRAM的响应时间远低于CPU的速度,如果没有片外二级Cache,就不可能达到CPU的理想速度。片外二级 Cache的容量通常比片内Cache大一个数量级以上。

  主板上的片外Cache工作在CPU的外频下,与CPU主频速度通常相差几倍。为了进一步提高系统性能,在CPU片内Cache和主板 Cache之间可以加入真正的二级Cache。这就是片内二级Cache。它通常以CPU主频的半速或全速工作,容量一般为128K~512K,而新的至强处理器则达到2M以上。全速的二级Cache可以极大地加速大型密集性程序的运行速度,带有同速的Cache的Pentium II 至强、 Pentium Pro系列处理器是大型服务器的首选CPU。但集成高密度的二级Cache同样会加大CPU的成本;所以这一类的处理器都是价格昂贵的产品;而去掉二级Cache的处理器性能虽然有不少下降,但价格可以降得很多。市场上的赛扬处理器就是一个很好的例子。使用这种带有二级Cache的CPU时,主板的Cache就成了实际上的三级Cache。

  如今的高档机中,Cache是系统必不可少的一个重要组成部分,了解一些Cache的基本原理,对于我们进行系统优化和配置是极其重要的。