2016-08-12 61 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

相關問題