假设我正在使用 AVX2 的 VGATHERDPS - 这应该使用 8 个 DWORD 索引加载 8 个单精度浮点数。
当要加载的数据存在于不同的缓存行中时会发生什么?指令是否被实现为一个硬件循环,逐个获取缓存行?或者,它可以一次向多个缓存行发出负载吗?
我阅读了几篇陈述前者的论文(这对我来说更有意义),但我想对此了解更多。
一篇论文的链接:http://arxiv.org/pdf/1401.7494.pdf
最佳答案
我对 AVX 收集指令进行了一些基准测试(在 Haswell CPU 上),它似乎是一个相当简单的蛮力实现——即使要加载的元素是连续的,似乎每个元素仍然有一个读取周期,所以性能真的不比只做标量负载好。
注意:这个答案现在已经过时了,因为自 Haswell 以来情况发生了很大变化。有关完整详细信息,请参阅已接受的答案(除非您碰巧针对的是 Haswell CPU)。
关于intel - AVX2 中的收集指令是如何实现的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21774454/