題 是否為Sandy-Bridge E Xeon CPU的所有內核共享L3緩存?


在一個 相關問題 我問到了雙CPU系統在增加L3緩存方面的優勢。

但是,我注意到Xeon E5-2600系列的CPU確實如此 2.5 MB的L3緩存 每個核心

這讓我相信操作系統每個核心保留2.5 MB的L3緩存。但是,我也有L3緩存的矛盾印象 共享 在所有核心中。很少有關於此的信息或討論。

我主要擔心的是低優先級後台應用程序是否會“佔用”L3緩存並降低高優先級前台應用程序的性能。我激發了這個問題的兩個具體的性能問題。

  1. 在VS 2008中編譯某個C ++程序在我當前的開發系統上需要25分鐘,而在另一個系統上它需要大得多的速度,在VS 2008上只需要5分鐘且設置相同 - 儘管事實上我有一個接近高端的i7- 970 CPU和足夠的RAM。

  2. 程序通常需要20秒才能在我的系統上運行(即顯示其主窗口);儘管我試圖限制上下文菜單條目(目前可能還有10個以上),但Windows shell需要長達10秒才能顯示Windows資源管理器上下文菜單(並且相關行為也需要一段時間)。默認)。

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

我還運行了許多低優先級後台應用程序;特別是冗余云備份軟件,例如CrashPlan,它通常佔用這個6核12線程系統總CPU利用率的25%左右。

我將得到一台新電腦。我知道我將繼續運行許多後台應用程序,並安裝/卸載許多程序。如果我認為獲得一個雙CPU系統不僅可以兼容內核而且可以使用L3緩存,那將有助於克服可怕的C ++編譯器性能和一般系統的速度減慢,我很樂意這樣做。

那裡 應該 即使有很多程序和後台應用程序,也沒有理由說高端系統的運行速度如此之慢。但是如果我的問題出現無論我給系統多少CPU功率和L3緩存,只是因為我確實安裝並運行了這麼多程序和後台應用程序,我不想在雙CPU上浪費2,500美元系統無法幫助解決我的問題。

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


9
2018-04-16 21:43


起源


好的問題,我個人沒有一個很好的答案,除了說我也是在印象L3下分享。我想問一下,為什麼在'Xeon'成為英特爾產品十年之後,你稱之為'第二代'Xeons。 (如果這類似於Sandy Bridge i3 / 5/7芯片是'第二代'那麼這是一個不好的比喻) - Shinrai
英特爾稱i7-2600系列CPU為“第二代”(ark.intel.com/products/family/59136/...)。 “第二代Xeon”是指2012年3月6日Xeon Sandy-Bridge E架構CPU的同等版本(en.wikipedia.org/wiki/...)。 - Dan Nissenbaum
這就是我認為你正在製作的類比。這是一個糟糕的(那些是第二代i7s,但這些不是第二代Xeons),我將改變IMO的標題...我期待找到一個關於12歲處理器的問題,這可能會讓很多人從點擊到這裡。也許將“第二代”改為“Sandy Bridge-E”。 - Shinrai
stackoverflow.com/questions/944966/... - Ciro Santilli 新疆改造中心 六四事件 法轮功


答案:


在這些CPU上,每個物理內核都有自己的L2緩存。 L3緩存由所有內核共享,並且是包容性的 - 也就是說,駐留在任何內核的L2緩存中的任何數據也駐留在L3緩存上。

雖然這似乎是浪費L3空間,但它實際上使L3對於加速核心內存操作非常有用。 L3緩存的主要用途是充當核心的交換機和暫存區域。例如,如果一個內核想知道內存區域是否可能被另一個內核緩存,則可以檢查L3緩存。如果信息由一個核處理,而下一個核需要由另一個核處理,則它們通過L3緩存而不是較慢的片外存儲器將其傳遞出去。除此之外,它的性能影響並不是那麼多,除了不尋常的算法 - L2緩存對於小事情來說足夠大,而L3緩存對於大事物來說太小了。

因此,雖然每個核心都有自己的256KB二級高速緩存,並且在L3高速緩存中有效地保留了256KB,但所有核心共享餘額。其他核心中不太重要的活動可能會損害使用L3空間帶來的更重要任務的性能。但由於我提到的原因,它在實踐中通常不會產生重大影響,除了優化“批量數據”操作(如壓縮和掃描)以減少緩存污染之外,通常不值得擔心。 (例如,使用非時間操作。)


10
2018-04-16 23:23





我的理解是,所有級別的緩存都直接在芯片上實現,而L2和L3是同一個(只有英特爾能夠識別它們的區別,AMD將它們結合起來)。考慮到這一點,我會想像CPU上的L3緩存不會在雙插槽主板上的CPU之間共享。這也是有道理的,請記住,每個CPU通常會看到單獨的內存通道到RAM。

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


0
2018-04-16 22:05



L2和L3完全不是一回事。在最近的英特爾設計中,L1 / L2是每核和小型(32k L1 I $和D $ / 256k統一L2),而L3是包容性的,並由GPU和所有內核共享。 L1 / L2在物理上是分開的,但是有一些用於類似的目的(即,對於單個核心來說快速存儲器訪問)。包容性L3具有另一個目的:核心(和GPU)之間的一致性。請參閱@ DavidSchwartz的回答。 - Peter Cordes