lshw 和 lscpu 在快取上有分歧 - 哪個是正確的?

lshw 和 lscpu 在快取上有分歧 - 哪個是正確的?

我試圖找出有關快取的細節(特別是哪些快取在核心之間共享,哪些不是),但發現了不一致的情況。

sudo lshw

*-cache:0
     description: L1 cache
     physical id: a
     slot: Internal Cache
     size: 64KiB
     capacity: 64KiB
     capabilities: synchronous internal write-back
*-cache:1
     description: L2 cache
     physical id: b
     slot: External Cache
     size: 8MiB
     capabilities: synchronous internal write-back

lscpu聲稱

L1d cache:   32K
L1i cache:   32K
L2 cache:   256K
L3 cache:  8192K

我不太擔心指令和資料快取加在一起,但是 L2 去哪了?

在運行 Ubuntu 10.10 的機器上觀察,或者說uname -a

Linux name 2.6.35-32-generic #66-Ubuntu SMP Mon Feb 13 21:04:32 UTC 2012 x86_64 GNU/Linux

這是一個一般性問題,但請注意,最精確的問題都不是製造商規格我也找不到維基百科確實有必要的細節。

不相關的額外問題:是否External Cache意味著快取在(四個)核心之間共享(反之亦然Internal Cache)?

答案1

感謝您在問題中添加有關處理器的額外資訊。了解您發布的範例是有幫助的Intel Core i7-920 Processor

提供的資訊lscpu更加準確,因為它包括所有三級快取:L1、L2 和 L3。看來lshw只是進行了最小程度的修改,以反映英特爾在其 CPU 中添加 L3 快取的情況。有關 L3 快取大小的資訊顯然被報告為 L2 緩存,而不是顯示有關所有三個快取層級的資訊。

我假設您查看的規格不包括 L1 和 L2 緩存,因為在給定的微架構中它們都是相同的。例如,對於尼哈勒姆這是64 KB L1 快取/核心(32 KB L1 資料 + 32 KB L1 指令)和 256 KB L2 快取/核心。」。

我相信為每個核心提供自己的 L1 和 L2 以及一個更大的通用 L3 是作為Nehalem(微架構)(2008 年 11 月?)。

我不知道為什麼lshw用這個術語External Cache來指L3。但它讓我覺得具有誤導性,因為 L3 緩存位於 CPU 晶片上,而不是我所考慮的外部的。同樣,這感覺就像嘗試使用舊軟體來描述新硬件,而只對軟體進行最小的更改。

(也許透過查看實際的原始程式碼可以學到更多,但我沒有時間嘗試這樣做。)

最後,是的,L3 快取在內核/執行緒之間共用。以下引用來自上面鏈接的維基百科文章,“重新引入超線程並減少 L2,L2 已合併為 L3 緩存所有核心都可以使用

相關內容