(一)缓存的意义
缓存最早是为了解决CPU运算速度和内存读写速度不匹配的矛盾。如今我们把能协调两种数据传输速度/处理速度有差异的组件的结构都称之为缓存。除了CPU和内存以外,内存和硬盘之间,硬盘与网络之间,都可以通过引入缓存来协调两种数据传输/处理速度有差异的组件。
以CPU和主内存之间的Cache为例,当CPU处理数据时,它会先到Cache中去寻找,如果数据因之前的操作已经读取而被暂存其中,就不需要再从随机存取存储器(Random Access Memory)中读取数据。由于CPU的运行速度一般比主内存的读取速度快,主存储器周期(访问主存储器所需要的时间)为数个时钟周期。因此若要访问主内存的话,就必须等待数个CPU周期从而造成浪费。
提供“缓存”的目的是为了让数据访问的速度适应CPU的处理速度,其基于的原理是内存中“程序执行与数据访问的局域性行为”,即一定程序执行时间和空间内,被访问的代码集中于一部分。为了充分发挥缓存的作用,不仅依靠“暂存刚刚访问过的数据”,还要使用硬件实现的指令预测与数据预取技术——尽可能把将要使用的数据预先从内存中取到缓存里。