2017-10-09 102 views
1

有幾個高速緩存一致性協議在附近,如MSI,MESI,MOSI,MOESI是否可以從一個不同的核心中的L1緩存線協議獲取狀態信息?

讓我們假設這樣的場景:一個CPU包含四核與L1專用高速緩存(L1高速緩存大小在這裏並不重要)。這裏的內存地址是說明性的。

  1. 核 - 0請求的存儲器訪問處理0x1111,從而該值將被加載到從主存儲器其L1高速緩存行。

  2. 核心-1請求存儲器訪問,以解決0x2222,從而該值將被加載到從主存儲器其L1高速緩存行。

  3. 核 - 2請求存儲器訪問,以解決0x1111(由核 - 0先前訪問)。該引用已經加載到Core-0的緩存行中,因此,緩存一致性協議將複製包含引用的Core-0的緩存行,並最終將其存儲到Core-2的緩存行中。

問題1:是否核心2知道,內存訪問已經被內核-0的緩存行,而不是主內存提供?或者高速緩存一致性協議對於檢索數據的位置是透明的?

問題2:核 - 0,和芯2有步驟3。但是在後其高速緩存線的共享狀態,能夠核 - 2從獲取當前狀態從不同的內核給出內存參考?在這種情況下,有可能Core-2知道對於此內存引用0x1111 Core-0緩存行在共享狀態?

回答

1

core-2知道內存訪問是由Core-0的緩存行代替主內存嗎?

是的,在所描述的場景中,高速緩存線應該處於「共享」狀態(即高速緩存線在少數內核之間共享)。但請參閱下面的內容......

Cache Coherence Protocol對於檢索數據的位置是透明的嗎?

是的,高速緩存一致性協議對於內核是透明的,高速緩存行狀態是內部的。一些體系結構可能有直接緩存狀態訪問的說明,但我很懷疑。大多數體系結構只是預取/清零/清空/無效指令......

那麼下一個問題的答案是顯而易見的:

核心-0,和Core-2有步驟3後,但在共享狀態的高速緩存行,可睿2獲取當前來自不同內核的給定內存引用的狀態?

它可能在某些體系結構上,但它在x86上是不可能的。

在這種情況下,Core-2可能知道該內存引用0x1111 Core-0緩存行處於共享狀態?

同上。緩存是連貫的,因此在大多數體系結構中,緩存的指令級接口非常簡單。

總的來說,它看起來像XY Problem。你想用cache-line-state-aware核心實現什麼?

相關問題