【发布时间】:2019-11-05 08:06:16
【问题描述】:
在csapp 教科书中,内存山的描述表示增加工作大小会恶化时间局部性,但我觉得size 和stride 因素都只对空间局部性有贡献,因为当更多数据被存储时吞吐量会降低稀疏地存储在较低级别的缓存中。
这里的时间局部性在哪里起作用?据我所知,这意味着在不久的将来会再次引用相同的特定内存地址,如此答案所示:What is locality of reference?
【问题讨论】:
-
引用教科书:
... Smaller values of size result in a smaller working set size, and thus better temporal locality. Smaller values of stride result in better spatial locality. ... -
您对“时间局部性”的理解是正确的,我相信。假设以恒定的访问速率完全随机访问数据,请注意较小的工作大小意味着任何给定的内存地址将被更频繁地访问。这将直接转化为改进的时间局部性。相反,随着工作大小的增加,每个内存地址的访问频率都会降低。考虑在整个工作数据集中重复循环的退化示例。集合越小,您完成循环和重复的频率就越高,从而访问与以前相同的地址。
-
时间局部性取决于数据集遍历的性质,因此无论其大小如何,它都以顺序步幅存在。但是,由于必须通过有限机制来利用时间局部性,因此在较小的数据集上提取和存储会更容易。
-
顺便说一句,您的链接上的定义有点不对,试图在那里详细说明。
标签: performance x86 intel cpu-architecture cpu-cache