预取距离和预取程度

时间:2010-10-27 12:49:28

标签: prefetch

预取距离和预取程度有什么区别?

2 个答案:

答案 0 :(得分:1)

预取通常处理整个缓存行。因此,给定的预取请求将引入将保存指定地址的缓存行。

由于内存速度的巨大差异,将数据带入缓存可能需要很多周期。如果不是更长的话,一些延迟会在几十个周期内。现在,真正受益于预取的唯一方法是在实际使用数据之前发布它,以便机器有足够的时间将数据提取到缓存中。这意味着数据访问是可预测的,因此可以预测缓存中需要的内存。最简单的情况是通过线性阵列前进。现在,一个常见的场景(在“科学代码”中)是一个循环,它读取数据然后处理它。高速缓存未命中损失可能很高并且处理器可能非常快,并且简单地预取下一个高速缓存行可能是不够的,因为我们可能已经完成处理对应于当前高速缓存行的阵列并且等待相邻高速缓存行中的数据。在数据到达缓存之前。所以我们可能需要比下一个缓存行更远。

预取的距离是指距离,例如512字节。预取程度是缓存行的距离,即如果缓存行为256字节,则预取程度为2.

答案 1 :(得分:0)

预取度是每次触发时预取的缓存行数。

预取距离是循环内数组的概念。 D = ceil(l / s),l是循环次数的平均存储器等待时间,s是最短执行路径的循环时间。 D是某个数组元素前面的迭代次数,因此可以覆盖内存延迟。