2016-08-12 146 views
0

我正在使用SIMD指令(SSE和AVX)进行多项操作。据我所知,SSE指令最适合16字节对齐的内存,而AVX指令最适合32字节对齐的内存。在16字节和32字节的边界上对齐内存

为了与SSE和AVX最佳使用,始终分配对齐到32字节边界的内存是否安全?

是否有任何32字节对齐的内存不是16字节对齐的情况?

回答

3

是否有任何情况下32字节对齐的内存不是也是16字节对齐?

对齐只是意味着该地址是32的倍数的32的任何倍数也是16.

第一谷歌命中为“对准”的倍数是维基百科,并且可以按照链接到https://en.wikipedia.org/wiki/Data_structure_alignment#Definitions,这在很多细节上解释了这一点。

+0

@jbapple:re:你的编辑。我故意失礼,劝阻这些微不足道的问题。下一步是什么? 100是10的倍数吗?我也不希望任何人加入这个答案,所以这个问题可以被删除。我知道我可以回滚你的修改,但我不会这么做,因为这是屈服于礼貌的压力。 –

+0

彼得,我不想在这个答案的评论中与你进行辩论,用你的话说,对于不知道“对齐”意味着什么的人来说,“故意粗暴”计算机内存的上下文。 – jbapple

+0

如果/当你去使用至强phi时,建议使用64位对齐方式,所以我倾向于将它用于所有需要速度的阵列。那么为什么不使用64位对齐? – Holmz