簡體   English   中英

SIMD內在函數:_mm_stream_load_si128 vs _mm_load_si128

[英]SIMD intrinsics: _mm_stream_load_si128 vs _mm_load_si128

什么時候我應該使用流媒體版本和什么時候SSE2 vs _mm_load_si128? 什么是表現權衡?

內部流加載( mm_stream_load_si128 )使用非時間內存提示執行加載(根據英特爾內部指南 )。 這意味着加載的值不會導致任何內容從緩存中逐出。

如果您要將大量數據組合在一起以便立即進行操作而不是長時間再查看,這將非常有用。 最常見的情況是在流操作期間發生。 當我知道我在大型數據集上執行簡單操作時,我已經使用過它,我知道數據很快就會從緩存中逐出。 memcpy等操作也屬於這一類。

非流加載( mm_load_si128 )將檢索該值,並且它將受到正常緩存規則的約束。 如果需要,它可以逐出舊的高速緩存條目,並且能夠從高速緩存中檢索直到它被驅逐。

如果您希望在發生正常的高速緩存驅逐之前再次使用數據,則首選非流式加載。 如果您在一個大型數據集上進行操作,在該數據集中,在將某個數據塊從高速緩存中踢出之前不會再次訪問它,則首選流式負載。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM