引言
存储器系统是一个具有不同容量、成本以及访问时间的存储设备的层次结构。
局部性(locality)是计算机程序的一个基本属性。
局部性
局部性的两周形式:
- 时间局部性(temporal locality):具有良好时间局部性的程序,被引用过一次的存储器位置很可能在不远的将来继续被多次引用。
- 空间局部性(spatial locality):具有良好空间局部性的程序,如果一个存储器位置被引用了一次,那么不久的将来,附近的存储器位置很可能被引用。
程序员要理解局部性原理并应用到代码中,有良好局部性的程序比局部性差的程序运行得更快。
引用程序数据的局部性
一个连续向量中,每隔k个元素进行访问,被称为步长为k的引用模式。
取指令的局部性
由于程序指令是存放在存储器中的,CPU需要取出这些指令,所以一个程序也具有取指令的局部性。
局部性小结
- 重复引用同一个变量的程序具有良好的时间局部性。
- 对于取指令,循环具有较好的时间和空间局部性。循环体越小,循环迭代次数越多,局部性越好。
存储器的层次结构
存储器层次结构的中心思想是,k层的更快更小的存储设备作为k+1层的更大更慢的存储设备的缓存。也就是说,存储器层次结构的本质是每一层存储设备都是较低一层的缓存。
数据以块为传送单元在第k层和第k+1层之间来回拷贝。
高速缓存存储器
参考文献
- (美)布莱恩特(Bryant, R. E.), (美)奥哈拉伦(O’Hallaron),等. 深入理解计算机系统[M]. 机械工业出版社, 2012.