Sandy-Bridge E Xeon CPU 的 L3 快取是否由所有核心共用?

Sandy-Bridge E Xeon CPU 的 L3 快取是否由所有核心共用?

在一個相關問題我詢問了雙 CPU 系統在將 L3 快取加倍方面的好處。

不過,我注意到 Xeon E5-2600 系列 CPU 確實有2.5 MB 三級緩存每個核心

這讓我相信作業系統為每個核心保留了 2.5 MB 的 L3 快取。不過,我也有一個矛盾的印象,就是L3快取是共享所有核心之間。令人驚訝的是,關於此的資訊或討論很少。

我主要擔心的是低優先級後台應用程式是否可能「佔用」L3 快取並降低高優先級前台應用程式的效能。我提出這個問題的兩個具體效能問題。

  1. 在我目前的開發系統VS 2008 上編譯某個C++ 程式需要25 分鐘,而在另一個系統上編譯速度要快得多,在具有相同設定的VS 2008 上只需要5 分鐘- 儘管我有一個近乎高端的i7 - 970 CPU和足夠的RAM。

  2. 在我的系統上,程式通常需要長達 20 秒的時間才能運行(即顯示其主視窗);值得注意的是,Windows shell 最多需要 10 秒鐘來顯示 Windows 資源管理器上下文選單(相關行為也需要同樣長的時間),儘管我嘗試限制上下文功能表條目(目前可能還有 10 個額外的條目)預設值)。

我的系統肯定加載了多年來我安裝(和卸載)的大量應用程序,但我仍然盡力簡化系統。

我還運行著許多低優先級的後台應用程式;特別是像 CrashPlan 這樣的冗餘雲端備份軟體,在這個 6 核心 12 執行緒系統上,它們通常總共佔用 CPU 總利用率的 25% 左右。

我將得到一台新電腦。我知道我將繼續運行許多後台應用程序,並安裝/卸載許多程式。如果我認為獲得一個不僅使核心數量加倍而且使 L3 快取加倍的雙 CPU 系統將有助於克服可怕的 C++ 編譯器效能和總體系統緩慢問題,我會很樂意這樣做。

那裡應該即使有許多程式和後台應用程序,這也不是高端系統運行如此緩慢的原因。但是,如果無論我為系統提供多少 CPU 能力和 L3 緩存,我的問題都會出現,僅僅因為我確實安裝並運行瞭如此多的程序和後台應用程序,我不想在雙 CPU 上浪費 2,500 美元額外的美元系統無助於解決我的問題。

任何建議,特別是關於我的問題,即L3 緩存是否在所有核心之間共享(這樣低優先級後台應用程式可能會佔用L3 緩存,減慢高優先級程序的速度),或者更確切地說,它是否與個人相關核心,將不勝感激。

答案1

在這些 CPU 上,每個實體核心都有自己的 L2 快取。 L3 快取由所有核心共享,並且具有包容性——也就是說,駐留在任何核心的 L2 快取中的任何資料也駐留在 L3 快取中。

雖然這看起來浪費了 L3 空間,但它實際上使 L3 對於加速核心間記憶體操作具有無價的價值。 L3 快取的主要用途是充當核心的交換器和暫存區域。例如,如果一個核心想要知道某個記憶體區域是否可能被另一個核心緩存,它可以檢查 L3 快取。如果資訊已由一個內核處理,而接下來需要由另一個內核處理,它們會透過 L3 快取而不是較慢的片外記憶體將其傳遞。除此之外,除了不尋常的演算法之外,它的效能影響並不大——L2 快取對於小東西來說足夠大,而 L3 快取對於大東西來說太小。

因此,雖然每個核心確實擁有自己的 256KB L2 緩存,並且在 L3 緩存中有效保留了 256KB,但餘額由所有核心共享。其他核心中不太重要的活動可能會損害受益於使用 L3 空間的更重要任務的效能。但由於我提到的原因,它在實踐中通常不會產生重大影響,並且除了優化「批量資料」操作(例如壓縮和掃描)以最大程度地減少快取污染之外,通常不值得擔心。 (例如,使用非時間運算。)

答案2

據我了解,各級快取都是直接在晶片上實現的,L2和L3是同一個(只有Intel認識到差異,AMD將它們結合在一起。)。考慮到這一點,我可以想像 CPU 上的 L3 快取不會在雙插槽主機板上的 CPU 之間共用。這也是有道理的,因為通常每個 CPU 都會看到到 RAM 的單獨記憶體通道。

如果我錯了,有人糾正我。

相關內容