_mm512_storenrngo_pd和_mm512_storenr_pd有什麼區別?_mm512_storenr_pd和_mm512_storenrngo_pd
_mm512_storenr_pd(無效*公噸,__m512d V):
商店壓縮雙精度(64位)從V 浮點元素存儲器地址公噸用非讀取暗示到處理器。
我不清楚,什麼沒有讀取提示的意思。這是否意味着它是非緩存一致寫入。這是否意味着重用更昂貴或者不一致?
_mm512_storenrngo_pd(無效*公噸,__m512d V):
商店壓縮雙精度(64位)從V 浮點元素存儲器地址公噸用無讀提示,並使用微弱有序 內存一致性模型(使用此函數執行的存儲不是全局排序的 ,並且來自同一個線程的後續存儲可能是在它們之前觀察到的 )。
與storenr_pd
基本相同,但由於它使用弱一致性模型,這意味着進程可以在任何其他處理器之前查看自己的寫操作。但是另一個處理器的訪問是非連貫的還是更昂貴的?從Intel® Xeon Phi™ Coprocessor Vector Microarchitecture
'vmovnrngoaps'停止重新排序以後的存儲到「buffer_ready」標誌後'sfence'是否不夠?還是KNC不同?在「正常」的CPU上,['vmovntps [payload],ymm0' /'sfence' /'mov [flag],1'就足夠了](https://stackoverflow.com/a/44866652/224132)。 (你確定'CPUID'甚至足夠了嗎?在存儲器退役後,數據仍然可以存儲在存儲緩衝區中,並且CPUID序列化無序管道也不會刷新存儲隊列和NT存儲緩衝區(例如Line-Fill Buffers),是嗎?) –
'vmovnrngoaps'聽起來與AVX/AVX512'vmovntps' /'_mm512_stream_ps'完全相同。哦,KNC沒有SFENCE或MFENCE嗎?您的最後一個報價包括*我們的編譯器生成圍欄(鎖定指令)*。我從未讀過關於KNC的很多內容。 Agner Fog的微型指南甚至沒有關於它的章節。 –
我認爲KNC不支持它們。按照英特爾®至強融核協處理器系統軟件開發指南第4.2.18.1節的規定:「由於其更嚴格的內存排序模型,英特爾®至強融核協處理器不支持SFENCE,LFENCE和MFENCE指令,這些指令提供了更多有效的方式來控制其他英特爾處理器上的內存排序。「 – veritas