预热距离和预热程度有什么区别?
发布于 2013-03-20 14:08:43
预取通常处理整个高速缓存线。因此,给定的预取请求将引入将保存指定地址的高速缓存线。
由于内存速度的巨大差异,可能需要许多周期才能将数据放入缓存。一些延迟在几十个周期中,如果不是更长的话。现在,真正从预取中获益的唯一方法是在数据实际使用之前发出预取,这样机器就有足够的时间将数据提取到缓存中。这意味着数据访问是可预测的,因此可以预测缓存中需要什么内存。最简单的情况是行进通过线性数组。现在,一个常见的场景(在“科学代码”中)是一个读取数据并对其进行处理的循环。高速缓存未命中惩罚可能很高,并且处理器可能非常快,并且简单地预取下一个高速缓存线可能是不够的,因为我们可能已经完成了对对应于当前高速缓存线的阵列的处理,并且在数据到达高速缓存之前等待相邻高速缓存线中的数据。因此,我们可能需要在比下一个缓存线更远的地方获取数据。
您预取的距离是多远,例如512字节。预取的程度是高速缓存线的距离,即如果您的高速缓存线是256字节,则预取的程度是2。
发布于 2014-03-21 04:50:31
预取程度是指在每次触发时要预取的缓存线的数量。
预取距离是来自循环内数组的概念。D= ceil(l / s),l是以周期数表示的平均存储延迟,s是最短执行路径的周期时间。D是某一数组元素提前迭代次数,因此覆盖了存储器等待时间。
https://stackoverflow.com/questions/4033363
复制相似问题