2016-06-17 51 views
1

是否有一條指令,我可以將一個變量移動到內存或從內存中移出並註冊,而不會將其存儲在緩存中?我不想通過使用CD位來完全禁用緩存,我只想對單個內存訪問執行此操作。英特爾指令訪問內存跳過緩存

回答

2

movnt存儲旁路緩存,但是movntdqa loads may not do that for normal (write-back) memory regions

指令集參考手冊非常清楚,它可能與WB存儲器上的movdqa沒有任何區別,但是IDK在任何當前微架構上實際發生了什麼。

movntdqa旨在加速諸如從WC視頻RAM讀取的內容,例如,將硬件視頻解碼器的結果複製回主存儲器。

+0

阿哈,這是最後一句話是最有啓發性的。我無法弄清楚'movntdqa reg,[mem]'可能有什麼用途,考慮...... – Johan

+0

@Johan:另請參閱http://stackoverflow.com/questions/32103968/non-temporal-loads-和硬件預取器一起工作,我的答案有更多的細節和鏈接。 (包括指向從視頻RAM複製到主內存的英特爾文章的鏈接,通過在L1緩存中保持熱點的小緩衝區進行彈跳,以保持NT負載和NT商店互相踩踏並用部分線條沖洗)。 –