OS中的时空局部性

转自:https://blog.csdn.net/u013315650/article/details/56347793

知乎 https://www.zhihu.com/question/25142664/answer/154497286

1.时间局部性和空间局部性

在CPU访问寄存器时,无论是存取数据抑或存取指令,都趋于聚集在一片连续的区域中,这就被称为局部性原理。

时间局部性(temporal locality)

时间局部性指的是:被引用过一次的存储器位置在未来会被多次引用(通常在循环中)。

空间局部性(spatial locality)

如果一个存储器的位置被引用,那么将来他附近的位置也会被引用。

2.例子

int a[N] = {0, 1, 2, 3, 4};
int sum = 0;

for (int i = 0; i < 5; ++i)
{
    sum = sum + a[i];
}
  • for循环内的指令具有良好的时间局部性,因为被多次使用。
  • 对于步长位k的引用程序,步长越小,空间局部性越小。步长为1的引用具有良好的空间局部性。k越大,空间局部性越差。举例:二维数组按行访问比按列访问速度更快,因为前者的空间局部性更好,二维数组是按行存储的。

 

 3.提高局部性

降低不命中率,这个和程序的运行时间相关的。

 

posted @ 2021-01-29 21:17  lypbendlf  阅读(304)  评论(0编辑  收藏  举报