zl程序教程

您现在的位置是:首页 >  系统

当前栏目

OS中的时空局部性

OS 时空
2023-09-14 09:11:21 时间

转自: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.提高局部性

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