第六章 存储器层次结构 第二节 局部性

局部性通常有两种不同的形式: 时间局部性和空间局部性

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

量化评价程序中局部性的一些简单原则:

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

例子:图中三个函数, 以不同的空间局部性程度, 执行相同的操作。请对这些函数就空间局部性进行排序。解释你是如何得到排序结果的。
在这里插入图片描述
在这里插入图片描述解决这个问题的关键在干想象出数组是如何在内存中排列的,然后分析引用模式。函数clear1以步长为1 的引用模式访问数组,因此明显地具有最好的空间局部性。函数clear2依次扫描N个结构中的每一个,这是好的,但是在每个结构中,它以步长不为1的模式跳到下列相对于结构起始位置的偏移处: 0、12、4、16、8、20 。所以clear2的空间局部性比clearl的要差。函数clear3不仅在每个结构中跳来跳去,而且还从结构跳到结构,所以clear3的空间局部性比clear2和clear1都要差。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值