预取距离和预取程度有什么区别?
问问题
2125 次
2 回答
1
预取通常处理整个高速缓存行。因此,给定的预取请求将带入保存指定地址的缓存行。
由于内存速度的巨大差异,将数据带入缓存可能需要很多周期。如果不是更长的话,一些延迟在几十个周期内。现在,真正从预取中受益的唯一方法是在实际使用数据之前发出足够远的时间,以便机器有足够的时间将数据拉入缓存。这意味着数据访问是可预测的,因此可以预测缓存中需要哪些内存。最简单的情况是通过线性阵列。现在,一个常见的场景(在“科学代码”中)是一个读取数据然后处理它的循环。缓存未命中惩罚可能很高,处理器可能非常快,并且仅仅预取下一个缓存行可能是不够的,因为我们可能已经完成了与当前缓存行对应的数组的处理,并在数据到达缓存之前等待相邻缓存行中的数据。所以我们可能不得不在比下一个缓存行更远的地方获取。
您预取多远是距离,例如 512 字节。预取程度是缓存行的距离,即如果您的缓存行是 256 字节,则预取程度为 2。
于 2013-03-20T06:08:42.523 回答
0
预取度是每次触发时预取的缓存行数。
预取距离是循环内数组的概念。D = ceil(l / s),l 是以周期数表示的平均内存延迟,s 是最短执行路径的周期时间。D 是某个数组元素的迭代次数,以便覆盖内存延迟。
于 2014-03-20T20:50:30.917 回答