关于数据获取的数据访问和时间局部性的时间局部性

时间:2011-10-17 14:51:40

标签: computer-architecture instructions temporal

我遇到了一个问题,如下所述,

  

描述可能表现出来的节目的一般特征和行为:
      (a)关于数据访问的低时间局部性       (b)关于指令提取的低时间局部性

我理解时间局部性,但我无法理解它对于数据访问和取指令意味着什么。如果有人能向我解释,我会非常感激。

2 个答案:

答案 0 :(得分:1)

他们谈论的是优化用于访问CPU中的数据和指令的缓存。从本质上讲,低时间局部性意味着经常重复使用的东西,但不是在一个大块中(即随着时间的推移而扩散)。

低时间局部性的例子:

read file
process data
output result
....
read file
process data
output result
....
read file
process data
output result

为了改进这一点,您可以重新安排,以便所有读取一起完成,所有处理一起完成,所有输出一起完成。

在CPU的上下文中,您可以说如果您需要经常读取内存,只需读取一次并对其进行缓存,然后在丢弃它之前尽可能多地使用它。对于指令,这意味着将循环指令保存在非常快的缓存中(通常为L1)。对于数据,它意味着缓存您最常使用的任何内容。

请参阅以下链接以获得正确的解释:
http://www.dotnetperls.com/temporal-locality
http://en.wikipedia.org/wiki/Locality_of_reference#Use_of_spatial_and_temporal_locality:_hierarchical_memory

答案 1 :(得分:0)

  • 代码的低时间局部性意味着没有循环,也没有重复使用指令。
  • 代码的高时间局部性意味着具有大量重用的紧密循环。
  • 代码的低空间位置意味着大量跳转到遥远的地方。
  • 代码的高空间位置意味着根本没有分支/跳转。

参考:计算机组织和设计:硬件/软件接口