【发布时间】:2018-10-14 07:58:34
【问题描述】:
我正在为我的架构期末考试而学习,并遇到了以下代码行:
for(i = 0; i <= N ;i++){
a[i] = b[i] + c[i];
}
问题是:“这段代码sn-p如何演示时间和空间局部性的例子?一定要考虑 数据和指令的内存引用。”
就空间局部性而言,我相信代码通过访问连续的内存位置(a[0] 然后 a[i] 等)来演示它。然而,我的困惑来自时间局部性。我不确定这段代码的 sn-p 如何在短时间内引用相同的位置?任何形式的帮助将不胜感激。
【问题讨论】:
-
代码不会在短时间内引用同一个位置,因为它只“引用”每个位置一次,除非
a == b || a == c || b == c。 -
变量
i在短时间内被大量访问。 -
@JGroven 问题是关于
a[0]然后a[i]等 虽然您的观点确实考虑了 请务必考虑数据和指令的内存引用 -
@WeatherVane 这只是 OP 对空间局部性的解释,而不是问题。问题是关于空间和时间的局部性。
-
我在您输入时编辑了之前的评论。
标签: c cache-locality