【发布时间】:2009-11-16 13:12:26
【问题描述】:
有没有人使用过 Core 2 Duo 处理器的预取指令?
我一直在为一系列 P4 机器成功使用(标准?)预取集(prefetchnta、prefetcht1 等),但在 Core 2 Duo 上运行代码时,@ 987654324@ 指令什么都不做,prefetchnta 指令效果较差。
我评估性能的标准是 BLAS 1 向量向量 (axpy) 操作的时序结果,当向量大小足够大以支持缓存外行为时。
英特尔是否引入了新的预取指令?
【问题讨论】:
-
我看到的结果如下。在 P4 上:使用 prefetchnta 可确保性能与向量大小成线性关系,即使达到缓存外行为也是如此。使用 prefetchnta 不会降低小尺寸的性能。在 Core2 上:虽然 prefetchnta 在大尺寸上有些帮助,但不保留线性缩放。它还会降低小尺寸的性能(大约 1/3!)。硬件预取是否妨碍了我,还是我需要在 core 2 duo 上使用 prefetchnta 做一些特别的事情?
-
软件预取必须是tuned for the microarchitecture,例如在加载之前预取多远。此外,在具有更好硬件预取的较新 uarch 中,一些模式不再受益于 SW 预取