loadu和load之间有什么区别?

问题描述 投票:0回答:1

什么更有效,为什么?

特别是_mm_loadu_si128与C中的_mm_load_si128

(编者注:或者这是标记的汇编,可能他们的意思是movdqumovdqa手写的asm。这不是一回事,特别是没有AVX,因为_mm_load_si128可以编译成ALU指令的内存操作数而没有单独的movdqa根本。)

assembly x86 sse simd intrinsics
1个回答
6
投票

loadu用于未对齐的载荷(来自未对齐到16字节倍数的地址),load用于对齐的载荷。如果你知道你的源地址是正确对齐的那么load通常会更有效率,因为它只需要一个读周期而不必处理修复多个未对齐数据块。在较旧的Intel CPU上,未对齐负载的性能损失非常大(通常> 2x),但在最近的CPU(例如Core i5 / i7)上,惩罚几乎可以忽略不计。请注意,除了上述性能损失之外,使用loadu进行对齐数据是正常的,但使用带有未对齐数据的load将产生异常(即崩溃)。

© www.soinside.com 2019 - 2024. All rights reserved.