http://www.cnblogs.com/jqctop1/p/4714116.html
1. 局部性原理
局部性原理是指计算机在执行某个程序时,倾向于使用最近使用的数据。局部性原理有两种表现形式:时间局部性和空间局部性。
时间局部性是指被引用过的存储器位置很可能会被再次引用,例如:重复的引用一个变量时则表现出较好的时间局部性
空间局部性是指被引用过的存储器位置附近的数据很可能将被引用;例如:遍历二维数组时按行序访问数据元素具有较好的空间局部性
2. 缓存与缓冲
缓冲通常在接收者和发送者速度差异较大的场合使用,例如:网络缓冲区;
缓存通常用于补偿不同存储器之间的读写速度差异,例如:Cache;
缓存和缓冲一个重要的区别是:对于缓冲来说,接收者接下来想要使用的数据就在缓冲区中;而缓存的有效性是依赖于局部性的,即对于缓存来说,快速存储器接下来想要使用的数据不一定就在缓冲存储器中。
3. 缓存层次结构
如图所示,最上层的是寄存器,最下层的是远程文件系统,从下到上,存储器的速度更快,造价更贵因而容量更小。
上一层的存储器保存着下一层存储器中部分数据的拷贝,上一层即作为下一层的缓存;
当需要第k+1层的某个数据时,先在第k层中寻找,若找到,则称为缓存命中,若没找到,则称为缓存不命中;
当缓存不命中时,需要从第k+1层拷贝需要的数据到第k层,这样就可能会需要替换第k层中已经缓存的某些数据,需要替换时通常会有个替换策略来指导替换哪些数据;