📜  高速缓存中引用和高速缓存操作的局部性

📅  最后修改于: 2021-06-28 09:04:07             🧑  作者: Mango

参考位置是指一种现象,在该现象中,计算机程序倾向于在特定时间段内访问同一组存储位置。换句话说,引用位置是指计算机程序访问地址彼此接近的指令的趋势。引用局部性的属性主要由程序中的循环和子例程调用显示。

  1. 在循环的情况下,程序控制处理单元会重复引用构成循环的指令集。
  2. 在子程序调用的情况下,每次从内存中获取指令集。
  3. 对数据项的引用也会被本地化,这意味着一次又一次地引用同一数据项。

在上图中,您可以看到CPU要读取或获取数据或指令。首先,它将访问高速缓存附近的内容并提供非常快速的访问。如果找到所需的数据或指令,则将其提取。这种情况称为缓存命中。但是,如果在高速缓存中找不到所需的数据或指令,则这种情况称为高速缓存未命中。现在将在主存储器中搜索所需的数据或正在搜索的指令,如果找到,将通过以下两种方式之一进行操作:

  1. 第一种方法是CPU应该获取所需的数据或指令并使用它,仅此而已,但是,当再次需要相同的数据或指令时,CPU又必须访问相同的主存储器位置,并且我们已经知道该主数据或指令了内存是最慢的访问。
  2. 第二种方法是将数据或指令存储在高速缓存中,以便在不久的将来再次需要时,可以以更快的方式来获取数据或指令。

缓存操作:
它基于引用的局部性原则。从主存储器中提取数据或指令并将其存储在高速缓存中的方式有两种。这两种方式如下:

  1. 时间地点–
    时间局部性意味着可能很快需要获取正在获取的当前数据或指令。因此,我们应该将该数据或指令存储在高速缓存中,以便避免再次在主存储器中搜索相同的数据。

    当CPU访问当前的主存储器位置以读取所需的数据或指令时,它也将存储在高速缓存中,这是基于在不久的将来可能需要相同的数据或指令的事实。这称为时间局部性。如果引用了某些数据,则很有可能在不久的将来再次引用它们。

  2. 空间局部性–
    空间局部性是指在不久的将来可能需要接近正在获取的当前存储位置的指令或数据。这与时间局部性略有不同。在这里,我们谈论的是位于近处的内存位置,而在时间上的局域中,我们则在谈论正在获取的实际内存位置。

缓存性能:
缓存的性能是根据命中率来衡量的。当CPU引用内存并在高速缓存中找到数据或指令时,这称为高速缓存命中。如果在高速缓存中找不到所需的数据或指令,并且CPU引用主存储器来查找该数据或指令,则称为高速缓存未命中。

Hit + Miss  = Total CPU Reference
Hit Ratio(h) = Hit / (Hit+Miss) 

任何内存系统的平均访问时间都包含两个级别:缓存和主内存。如果Tc是访问高速缓存的时间,而Tm是访问主内存的时间,那么我们可以这样写:

Tavg = Average time to access memory
Tavg = h * Tc + (1-h)*(Tm + Tc)