SSE指令需要数据对齐
Posted
技术标签:
【中文标题】SSE指令需要数据对齐【英文标题】:SSE instruction need the data aligned 【发布时间】:2012-07-02 17:18:59 【问题描述】:数据是否必须为 16 字节对齐,以便 SSE 指令可以处理它而不会出现分段错误?我尝试的编译器是带有选项-msse2
的gcc。我想使用 _mm_cmpgt_epi32
来比较一个大的 int 数组。我发现除了下标为4的倍数的位置外,它不能在数组的任何位置执行。
【问题讨论】:
【参考方案1】:是的,当您向/从 SSE 寄存器加载和存储数据时,它需要 16 字节对齐,除非您使用加载/存储指令的未对齐版本,例如_mm_loadu_si128
/_mm_storeu_si128
。但是,使用这些未对齐的加载/存储指令通常会降低性能,因此通常会尝试始终确保正确的数据对齐,并且仅将未对齐的加载/存储用作最后的手段。
【讨论】:
以上是关于SSE指令需要数据对齐的主要内容,如果未能解决你的问题,请参考以下文章