操作系统之局部性原理
1.局部性
局部性原理:倾向于引用邻近于其他最近引用过的数据项的数据项,或者引用过的数据项本身。
时间局部性良好(引用过一次的内存位置可能在不远的将来再被多次引用)
空间局部性良好(一个内存位置被引用,不久可能引用附近的内存位置)
现代计算机系统各个层次,从硬件到操作系统,应用程序都应用到了局部性设计。硬件层:引入高速缓存存储器保存最近被引用的指令和数据项,提高访问速度;操作系统中:使用主存作为虚拟地址空间最近被引用的高速缓存。
1.1对程序数据引用的局部性
顺序访问一个向量的每个元素,具有步长为1的引用模式(顺序引用模式)。随着步长增加,空间局部性下降。
对于多维数组求和,双重循环嵌套按照行优先原则读取元素,此时的步长为1。该程序具有良好的空间局部性。
但是如果更改循环顺序,交换i和j的循环,也就是我们不是按照行优先进行遍历,这样就会让遍历步长增加到N,也就会使得空间局部性下降。
1.2取指令局部性
1.3局部性总结
量化评价局部性的原则:
- 重复引用相同的变量的程序具有良好的事件局部性;
- 对于步长为k的引用模式的程序,步长越小,空间局部性越好。在内存中以大步长跳转的程序空间局部性很差;
- 对于取指令而言,循环有好的时间和空间局部性。循环体越小,循环迭代次数越多,局部性越好。
参考
《深入理解计算机系统》