美文网首页
时间局部性和空间局部性

时间局部性和空间局部性

作者: 痞老板丶 | 来源:发表于2021-06-22 20:00 被阅读0次
局部性

一个编写良好的计算机程序常常具有良好的局部性。也就是,它们倾向于引用邻近于它最近引用过的数据项,或者最近引用的数据项本身。这种倾向被称为局部性原理。

局部性原理对于高速缓存存储器的应用有重要意义,一个良好的局部性程序更能发挥高速缓存的作用

  • 时间局部性

一个具有良好时间局部性的程序,被引用过一次的内存位置很可能在不愿的将来再被多次引用

  • 空间局部性

在一个具有良好空间局部性的程序中,如果一个内存位置被引用了一次,那么程序很可能在不远的未来引用附近的一个内存位置。

  • 取指令的局部性

程序指令可以看作一个不可修改的数据,所以它的局部性也适用于时间局部性和空间局部性。一个好的局部性需要指令可以重复多次被执行。

int sumvec(int v[N])
{
  int i,sum=0;
  for(i =0 ; i < N ;i++)
  {
    sum += v[i];
  }
  return sum;
}

这是一个求和程序,变量sum在每次的循环迭代中都会被引用一次,因此对于sum来说有良好时间局部性。另一方面,因为sum是标量,对于sum来说没有空间局部性。

对于向量V来说,每次访问都是按照地址空间一个接一个读取的具有良好的空间局部性,但是时间局部性很差,因为每个元素都只被访问一次。

for(i=0; i < N ; i+=2) 一般而言,随着步长的增长,空间局部性会降低。但是因为循环展开和多路并行的存在,空间局部性的降低并不一定会降低程序的性能,相反有可能会明显提升程序性能。

// 程序1
int sumvec(int v[M][N])
{
  int i,j,sum=0;
  for(i =0 ; i < M ;i++)
    for(j=0; j < N ;j ++)
      sum += a[i][j]
  return sum;
}

// 程序2
int sumvec(int v[M][N])
{
  int i,j,sum=0;
  for(i =0 ; i <N ;i++)
    for(j=0; j < M ;j ++)
      sum += a[i][j]
  return sum;
}

由于对于数组来说,是按照行优先的方式存储在内存中。所以对于程序1来说,它是按照行优先的顺序遍历的,所以它的空间局部性比较好,而对于程序2来说,是按照列优先顺序遍历的,所以它的空间局部性比较差。

小结
  • 重复引用相同变量的程序有良好的时间局部性。
  • 对于具有步长为K的引用模式的程序,步长越小,空间局部性越好。在内存中以大步长跳来跳去的程序空间局部性会很差。
  • 对于取指令来说,循环有很好的时间和空间局部性。循环体越小,循环迭代次数越多,局部性越好。
参考内容

《深入理解计算机系统》

相关文章

  • 局部性原理

    局部性通常有两种不同的形式:时间局部性和空间局部性。 时间局部性 在一个具有良好的时间局部性的程序中,被访问过一次...

  • 计算机组成与体系结构知识点二

    局部性原理局部性原理是指在指定的时间内,程序趋于在有限的内存区域内重复访问。通常将局部性分为空间局部性和时间局部性...

  • 时间局部性和空间局部性

    局部性 一个编写良好的计算机程序常常具有良好的局部性。也就是,它们倾向于引用邻近于它最近引用过的数据项,或者最近引...

  • OS访问局部性Locality of Reference

    访问局部性分为两种 时间局部性 空间局部性 我们说一个程序符合局部性原只要他满足时间和空间其中一种,因为两种不可能...

  • web系统架构及cache基础详解

    中小型公司的web系统架构 缓存基础 缓存首先是个代理程序具有局部性,时间局部性,空间局部性key-value:k...

  • cache的原理

    cache的工作原理:利用空间局部性和时间局部性原理,通过自有的存储空间,缓存一部分内存的指令和数据,减少cpu访...

  • 第五章虚拟存储器--合集

    常规存储器管理方式的特征 程序执行时局部性 程序执行的特点 时间局部性 空间局部性 虚拟存储管理 虚拟存储器的特征...

  • Linux之Varnish

    缓存的基础知识 1、程序本身具有局部性 时间局部性过去访问到的数据,也有可能被两次访问 空间局部性一个数据被访问到...

  • 缓存知识前奏

    程序运行的局部性 时间局部性:一个数据访问后,很快被再次访问空间局部性:一个数据被访问时,其周边数据也有可能被访问...

  • 码农知道的“潜规则”

    1.局部性原理时间局部性 :常用命令再次被调用空间局部性 : 相邻空间也会被使用2.缓存3.抽象《深入理解计算机原...

网友评论

      本文标题:时间局部性和空间局部性

      本文链接:https://www.haomeiwen.com/subject/sypmyltx.html