2012-08-22 34 views
3

一些體系結構有一個「預取寫入」指令,用於向CPU表明在實際執行操作之前將要寫入內存位置。我明白,在多核機器上,核心可以使用它作爲暗示,它應該嘗試現在獲得給定高速緩存行的所有權,以便稍後可以更快地寫入該位置。但是,AFAICT應該只在兩個核心有可能競爭緩存線的情況下才起作用。對於僅由單個內核讀取和寫入的高速緩存行,預取寫入是否有用?預取寫入是否影響單核性能?

回答

1

其他所有條件都相同,對於僅由單個內核訪問的行,預取寫入沒有優於預取讀取。經過任何一種預取後,核心將擁有獨有的狀態。在隨後的寫入中,該行更改爲修改後的狀態。獨家修改過渡是免費的,因爲根據定義,沒有其他核心擁有這條線。 E-> M狀態更改在本地完成,無需窺探。

請注意內核具有自己的硬件預取邏輯。對線路的訪問可能會導致核心自動抓取相鄰的線路。如果全局變量或其他數據駐留在附近,則SMP系統可能會遇到很多意外的交叉窺探。

0

我認爲它可以幫助如果高速緩存行不在內存中,並且寫預取標記它將從現在開始需要一些週期。家務勞動,比如爲寫作騰出一條線可能會更加困難。當然,這應該允許CPU完成寫入的速度比如果它只是簡單地將寫入緩存寫入緩存一圈?

還是我錯過了一些基本的東西?

+0

所以你在說,因爲寫預取也會像正常的預取一樣工作,所以它可能有所幫助?這是可能的你是對的。 –

+0

CPU和RAM之間的任何事情都必須通過緩存行來完成。如果沒有加載有問題的緩存行,那麼讀取或寫入將不得不等待,直到它。 –