1

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

描述一个程序的一般特征和行为,它将表现出:
(a) 关于数据访问的
低时间局部性 (b) 关于指令提取的低时间局部性

我了解时间局部性,但我无法理解它对数据访问和指令获取的意义。如果有人可以向我解释,我将不胜感激。

4

2 回答 2

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

于 2011-10-17T15:03:37.520 回答
1
  • 代码的低时间局部性意味着没有循环和指令的重用。
  • 代码的高时间局部性意味着具有大量重用的紧密循环。
  • 代码的低空间局部性意味着很多跳转到很远的地方。
  • 代码的高空间局部性意味着根本没有分支/跳转。

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

于 2013-06-29T18:59:01.060 回答