SSE矢量化与记忆对齐的关系

时间:2013-02-12 00:25:05

标签: sse simd

为什么我们需要SSE / AVX的对齐内存?

我经常得到的答案之一是对齐内存负载比未对齐内存负载快得多。那么,为什么这个对齐的内存负载比未对齐的内存负载快得多?

1 个答案:

答案 0 :(得分:9)

这不仅仅适用于SSE(甚至是x86)。在大多数体系结构中,加载和存储需要自然对齐,否则它们(a)生成异常或(b)需要两个或更多个循环加上一些修复以便透明地处理未对齐的加载/存储。在x86(b)上,对于数据类型<除非您明确使用可以处理未对齐数据的加载/存储指令的未对齐版本,否则16字节但(a)适用于SSE数据类型。

您可能想知道:为什么不使用这些SSE加载/存储指令的未对齐版本而不管对齐?答案是这些指令通常比它们的对齐指令要慢得多,因为它们通常表现为上面的(b),这使得它们通常比2x或更慢,除了最近的Intel CPU,如Core i7,其中惩罚要小得多但并非微不足道。