2016-09-05 30 views
8

我最近了解到有關row hammer的攻擊。爲了執行這種攻擊,程序員需要爲特定數量的地址刷新CPU的完整緩存層次結構。爲什麼CLFLUSH存在於x86中?

我的問題是:爲什麼在x86中需要CLFLUSH?如果所有L *緩存都以透明方式運行(即不需要顯式緩存失效),那麼使用此指令的原因是什麼?除此之外:CPU是否可以自由推測內存訪問模式,從而完全忽略該指令?

回答

6

我覺得主要是針對可緩存的MMIO區域這些奇怪的東西。

Skylake引入了弱順序的更高性能CLFLUSHOPT,因爲它對於直接連接到內存層次結構的非易失性存儲非常有用。刷新高速緩存可確保將數據寫入實際內存,而不是在CPU中保持髒。

它對設備的非高速緩存一致性DMA也很重要,如果在x86中仍然可以做到這一點。 (可能不是;我認爲所有的DMA現在都是高速緩存一致的。)

我不是這方面的專家,這並不意味着是一個涵蓋所有用例的完整答案。

相關問題