Intel硬件预取中步长的影响解读及相关术语疑问
Intel硬件预取效果相关疑问解析
手册原文(《Intel® 64 and IA-32 Architectures Optimization Reference Manual》9.5.3节)
图9-2展示了多款微架构实现的有效延迟减少情况。对于固定步长访问模式,自动硬件预取器的收益始于触发阈值距离的一半,当缓存缺失步长为64字节时达到最大收益。
涉及微架构说明
- Family 6 Model 13、14:分别为2004年、2006年推出的Pentium M(Dothan、Yonah)
- Family 15:Netburst架构(Pentium 4),其中Model 0、1、2为早期的Williamette、Northwood型号
- Family 16 Model 3、4:Prescott;Model 6为其后续型号
缓存行配置差异
- Pentium 4:L2缓存采用128字节行(或成对保留的64字节行),L1d缓存为64字节行
- Pentium M:各级缓存均采用64字节行,相比Pentium III的32字节行有提升
疑问解答
1. 图中"Effective Latency Reduction"的正确解读
常规理解的“有效延迟减少率”公式应为(无预取延迟 - 有预取延迟) / 无预取延迟,数值越高收益越大,但图中数值越低表现越好,说明手册里的这个指标定义和常规相反——它实际是「有预取时的延迟与无预取时的延迟的比值」,即有预取延迟 ÷ 无预取延迟。数值越低,代表预取后延迟下降幅度越大,收益越高,完全匹配图中的趋势。
2. 触发阈值距离的具体长度
手册9.5.2节提到“硬件预取器会尝试预取预取流前方的两个缓存行”,这里的“两个缓存行”是预取的目标数据量,而非触发阈值。触发阈值距离指的是当CPU当前访问地址与预取触发点的间距达到该值时,预取器启动工作。
结合图中拐点在132B左右,按照“收益始于触发阈值距离的一半”的描述,触发阈值距离应为264B左右。这和“预取两个64B缓存行”的定义不矛盾:预取器的触发逻辑不是固定的缓存行数量,而是结合访问步长动态调整——当访问步长较大时,需要提前更远触发,才能保证数据在CPU需要前加载到缓存。另外,触发阈值是当前访问位置到触发点的距离,而非到预取数据的距离,所以实际阈值会大于预取的缓存行总长度。
内容的提问来源于stack exchange,提问作者Frontier_Setter
相关产品推荐
相关产品推荐


