假设我正在使用AVX2的VGATHERDPS - 这应该使用8个DWORD索引加载8个单精度浮点数.
当要加载的数据存在于不同的缓存行中时会发生什么?指令是作为硬件循环实现的,它逐个获取缓存行吗?或者,它是否可以立即向多个缓存行发出负载?
我读了几篇论述前者的文章(这是对我更有意义的文章),但我想更多地了解这一点.
链接到一篇论文:http://arxiv.org/pdf/1401.7494.pdf
我想加载一个128位寄存器与32位非连续浮点数.实际上,那些浮点数在内存中间隔128位.
所以如果内存看起来像那样:
| Float 0 | Float X | Float X | Float X |
| Float 4 | Float X | Float X | Float X |
| Float 8 | Float X | Float X | Float X |
| Float 12 | Float X | Float X | Float X |
Run Code Online (Sandbox Code Playgroud)
我想加载这样的矢量:
| Float 0 | Float 4 | Float 8 | Float 12 |
Run Code Online (Sandbox Code Playgroud)