了解MIPS代码中的数据缓存位置

时间:2019-05-26 10:01:16

标签: memory mips spatial temporal cache-locality

我一直在浏览stackoverflow,但实际上找不到与此相关的示例。我了解数据缓存的时间和空间局部性的概念:

  

Temporarl的位置:重新访问地址

     

空间局部性:每x次内存访问都会受到影响

但是在mips代码中看起来如何?谁能给出具体的例子并说明其工作原理?

1 个答案:

答案 0 :(得分:1)

空间和时间位置与特定的体系结构,mip或另一种体系结构无关。它更多地是程序的属性以及它们在计算机上的处理方式。

临时位置表明,如果您访问给定的内存位置,则很可能在之后的几次访问相同的位置。

很难举一个具体的例子,但是这个想法是,例如,如果您修改一个变量,则很有可能在程序中的一些指令之后使用该变量。当然,可以找到反例,但是在大多数情况下,计算完成并存储在变量中后,这是因为我们稍后需要此操作的结果。

您给的空间局部性定义不正确。空间局部性表明,如果需要某个存储位置中的信息,则很可能在一段时间后还需要位于附近存储位置中的其他信息。

此属性的原因是许多编程语言的构造对应于存储在连续内存位置中的数据。这包括:

  • 数组元素

  • 结构域

  • 在堆栈的连续地址中的
  • 局部变量

  • 在堆栈中也很接近的函数的参数

同样,可以找到反例,但是,例如,如果访问一个字符串的首字符,则可能要对字符串进行某种计算,搜索或其他操作,并且大多数时间,该字符串的其他字符也将被访问。