参考位置是什么?
引用位置是指计算机程序在特定时间段内访问同一组内存位置的趋势。引用局部性的特性主要通过程序中的循环和子程序调用来表现。
在抽象层面上,有两种类型的地方如下-
时域
空间局部性
时域
这种类型的优化包括在短时间内将频繁访问的内存引用引入附近的内存位置,以便将来的访问速度更快。
例如,如果在一个指令集中,我们有一个声明的变量被非常频繁地访问,我们将该变量放入一个内存寄存器中,该寄存器是内存层次结构中最近的,以便更快地访问。
空间局部性
这种类型的优化假设如果一个内存位置已被访问,则很可能还会访问附近/连续的内存位置,因此我们也将附近的内存引用引入附近的内存位置以加快访问速度。
例如,在任何指令集中遍历一维数组都将受益于这种优化。
使用这些优化,我们可以大大提高程序的效率,并且可以在硬件级别或软件级别上实现。
让我们看看引用关系的局部性与缓存和命中率。
与高速缓存的关系
缓存是专门设计的更快但更小的内存区域,通常用于保留最近引用的数据和最近引用的数据附近的数据,这可以导致潜在的性能提升。
缓存中的数据不一定对应于在主内存中空间接近的数据。然而,数据元素一次被带入缓存一个缓存行。这意味着空间局部性再次重要。如果一个元素被引用,几个相邻元素也将被带入缓存。
最后,时间局部性在最低层发挥作用,因为被非常紧密地引用在一起的结果可以保存在机器寄存器中。C等编程语言允许程序员建议将某些变量保存在寄存器中。
与命中率的关系
命中率是为内存层次结构的任何两个相邻级别定义的概念。它是在我们正在查看的内存中找到信息项的概率。
因此,参考位置需要良好的命中率才能实现快速访问时间。