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
感謝您在問題中添加有關處理器的額外資訊。知道您發布的範例指的是
Intel Core i7-920 Processor
.提供的資訊
lscpu
更準確,因為它包括所有三個級別的記憶體,L1、L2 和 L3。似乎lshw
只進行了最低限度的修改,以反映英特爾在其 CPU 中添加了 L3 記憶體。與顯示所有三個記憶體級別的資訊不同,有關 L3 記憶體大小的資訊顯然被報告為 L2 記憶體。我假設您查看的規範不包括 L1 和 L2 記憶體,因為在給定的微架構中它們都是相同的。例如,對於 Nehalem,這是“ 64 KB L1 記憶體/核心(32 KB L1 數據 + 32 KB L1 指令)和 256 KB L2 記憶體/核心。 ”。
我相信為每個核心提供自己的 L1 和 L2 以及一個更大的通用 L3 最初是作為Nehalem(微架構)的一部分引入的(在 2008 年 11 月?)。
我不知道為什麼
lshw
用這個詞External Cache
來指代 L3。但這讓我覺得具有誤導性,因為 L3 記憶體位於 CPU 晶片上,而不是我認為的external。同樣,這感覺就像試圖使用舊軟體來描述更新的硬體,同時只對軟體進行最小的更改。(通過查看實際的原始碼可能會學到更多東西,但我沒有時間嘗試這樣做。)
最後,是的,L3 記憶體在核心/執行緒之間共享。以下引用來自上面連結的 Wikipedia 文章,“超執行緒與 L2 的減少一起被重新引入,它已被合併為可供所有核心使用的L3 記憶體。 ”