1

什么更有效,为什么?

特别是_mm_loadu_si128_mm_load_si128C 中的对比。

(编者注:或者这是被标记的程序集,可能它们的意思是movdqumovdqa手写 asm 相比。这不是一回事,尤其是没有 AVX,因为_mm_load_si128可以编译成 ALU 指令的内存操作数,根本没有单独movdqa的。)

4

1 回答 1

9

loadu用于未对齐的加载(从未对齐到 16 字节倍数的地址)并load用于对齐的加载。如果您知道您的源地址正确对齐,那么load通常会更有效,因为它只需要一个读取周期并且不必处理修复多个未对齐数据块。在较旧的 Intel CPU 上,未对齐负载的性能损失非常显着(通常 > 2 倍),但在较新的 CPU(例如 Core i5/i7)上,损失几乎可以忽略不计。请注意,loadu除了上述性能损失外,使用对齐数据是可以的,但使用load未对齐数据会产生异常(即崩溃)。

于 2013-04-12T06:21:40.363 回答