Cpu

lshw 和 lscpu 在記憶體上存在分歧——這是對的嗎?

  • September 26, 2018

我試圖找出有關記憶體的細節(特別是哪些記憶體在核心之間共享,哪些不共享)並且偶然發現了不一致。

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 記憶體。

引用自:https://unix.stackexchange.com/questions/35791