【发布时间】:2019-10-12 05:31:15
【问题描述】:
我一直在浏览 stackoverflow,但找不到与此相关的示例。我了解数据缓存的时间和空间局部性的概念:
临时位置:重新访问地址
空间局部性:每
x次内存访问都会受到打击
但是在 mips 代码中它是什么样子的呢?谁能给出具体的例子并说明它是如何工作的?
【问题讨论】:
标签: memory mips spatial temporal cache-locality
我一直在浏览 stackoverflow,但找不到与此相关的示例。我了解数据缓存的时间和空间局部性的概念:
临时位置:重新访问地址
空间局部性:每
x次内存访问都会受到打击
但是在 mips 代码中它是什么样子的呢?谁能给出具体的例子并说明它是如何工作的?
【问题讨论】:
标签: memory mips spatial temporal cache-locality
时空位置与特定架构、mips 或其他架构无关。它更多是程序的属性以及它们在计算机上的处理方式。
时间局部性表明,如果您访问给定的内存位置,很可能会在一段时间后访问相同的位置。
很难给出一个具体的例子,但想法是,例如,如果你修改了一个变量,这个变量很可能会在程序中的几条指令之后被使用。当然,也可以找到反例,但大多数时候计算完成并存储在变量中,是因为我们稍后需要这个操作的结果。
您对空间局部性的定义不正确。空间局部性表明,如果需要某个内存位置中的信息,很可能一段时间后也需要位于附近内存位置的其他信息。
这个属性是由于许多编程语言的结构对应于存储在连续内存位置的数据。这包括:
数组的元素
结构的字段
堆栈中连续地址中的局部变量
在堆栈中也接近的函数的参数
同样,可以找到反例,但是,例如,如果访问字符串的第一个字符,则可能是对字符串进行某种计算、搜索或其他操作,并且大多数时间,字符串的其他字符也将被访问。
【讨论】: