Dar*_*rda 5 assembly prefetch blas
有没有人有使用 Core 2 Duo 处理器的预取指令的经验?
我一直在为一系列 P4 机器成功使用(标准?)预取集(prefetchnta
、prefetcht1
等),但是在 Core 2 Duo 上运行代码时,prefetcht(i)
指令似乎什么都不做,而且prefetchnta
指令更少有效的。
我评估性能的标准是 BLAS 1 向量向量 (axpy) 操作的计时结果,当向量大小足以实现缓存外行为时。
英特尔是否引入了新的预取指令?
从有关 Intel 64 和 IA-32 架构的Intel 参考文档中,查看第 163 和 77 页:
\n\n\n\n基于 Intel NetBurst 微体系结构的 Pentium 4 和 Intel Xeon 处理器除了软件预取之外还引入了硬件预取。硬件预取器透明地从内存中获取数据和指令流,无需程序员干预。随后的微架构继续改进并为硬件预取机制添加功能。早期硬件预取机制的实现侧重于从内存预取数据和指令到 L2;更新的实现提供了额外的功能来将数据从 L2 预取到 L1。在英特尔 NetBurst 微架构中,硬件预取器可以跟踪 8 个独立的流。
\n\nPentium M 处理器还提供数据硬件预取器。它可以向前跟踪 12 个单独的流,向后跟踪 4 个流。处理器\xe2\x80\x99s\n PREFETCHNTA 指令还将64 字节提取到\n 一级数据缓存中,而不会污染\n 二级缓存。
\n\n与 Pentium M 处理器相比,Intel Core Solo 和 Intel Core Duo 处理器提供了更先进的数据硬件预取器。表 2-10 总结了主要差异。
\n