什么是更有效的,为什么?
具体来说,_mm_loadu_si128与_mm_load_si128在C.
(编者注:或者这是有标记的程序集,可能是指movdqu对movdqa的手工编写的asm. )这不是一回事,特别是没有AVX,因为_mm_load_si128可以编译成一个内存操作数,用于一个ALU指令,完全没有单独的movdqa。)
发布于 2013-04-12 06:21:40
loadu用于对齐负载(来自未对齐16字节的地址),load用于对齐负载。如果您知道源地址是正确对齐的,那么load通常会更高效,因为它只需要一个读取周期,并且不需要处理修复多块错误对齐数据的问题。在较旧的Intel CPU上,错误对齐负载的性能损失相当大(通常> 2x),但在较新的CPU(例如Corei5/i7)上,惩罚几乎可以忽略不计。注意,除了前面提到的性能损失之外,对对齐数据使用loadu是可以的,但是使用load对齐数据将产生异常(即崩溃)。
https://stackoverflow.com/questions/15964367
复制相似问题