我有一臺配有英特爾(R)酷睿TM i5-2450M CPU @ 2.50GHz處理器的筆記本電腦。 我在Ubuntu 12.04(x86_64)上,我試圖找到關於我的處理器的一些信息。英特爾CPU緩存策略
我能找到的大部分信息我一直在尋找使用
cat /proc/cpuinfo
和
lscpu
我也想找出是每個高速緩存使用的緩存策略水平。它回寫或寫入?
有什麼工具可以用來找出這些信息嗎?
在此先感謝。
我有一臺配有英特爾(R)酷睿TM i5-2450M CPU @ 2.50GHz處理器的筆記本電腦。 我在Ubuntu 12.04(x86_64)上,我試圖找到關於我的處理器的一些信息。英特爾CPU緩存策略
我能找到的大部分信息我一直在尋找使用
cat /proc/cpuinfo
和
lscpu
我也想找出是每個高速緩存使用的緩存策略水平。它回寫或寫入?
有什麼工具可以用來找出這些信息嗎?
在此先感謝。
這不是你可以從CPUID或其他類型查詢的東西,你也不能配置你的CPU做一個或另一個,因此不存在查詢工具。你可以通過查詢查詢的是緩存關聯性,緩存行大小和緩存大小,例如通過/proc/cpuinfo
。
所有與Intel兼容的CPU在過去的一二十年中都使用回寫針對緩存的策略(假設首先獲取緩存行以允許部分寫入)。當然這就是理論,現實比這要複雜得多。
幾乎所有處理器(包括你的模型)有寫相結合的一種或幾種形式(或填充緩衝器英特爾稱之爲以來的Merom),以及所有,但最古老Intel兼容的CPU支持非高速緩存寫入從SSE寄存器(其再次使用寫入組合的形式)。當然,還有諸如片上高速緩存一致性協議以及探聽過濾和其他機制來確保一個處理器的核心之間以及多處理器系統中的不同處理器之間的高速緩存一致性。
儘管如此,一般的緩存策略仍然是回寫。
David Kanter的非常不錯的英特爾Sandybridge封面報道涵蓋the memory subsystem and cache architecture:L1D是通常用於英特爾寫回,而每核心L2也回寫。 L3(這是芯片上所有內核共享的大容量緩存)也是如此。
AMD需要非常不同的方法:Their L1 cache is write-through, but with a tiny 4k write-combining-cache.不斷重寫緩衝器大於4K上AMD將瓶頸上(慢)L2而不是L1。
在Agner的博客上,該主題中的一張海報聲稱BD的L2也是直寫,但Paul Clayton對此回答的評論不一致。 (我傾向於相信保羅。)
AMD Ryzen幸運的是,使用正常的回寫式32kiB 8路L1D,帶有專用回寫512kiB L2。 L3是共享的8MB受害者緩存。它是回寫式的,但受害者緩存意味着數據僅在從L1/L2驅逐時輸入,而不是直接用於加載/預取。 4核的每個核心簇(CCX模塊)都有自己的8MB L3,並且latency/bandwidth between cores in different clusters is bad。
關於緩存層次結構還有很多要說的,不僅僅是回寫與直寫,儘管大多數差異對單線程程序無關緊要。 (除非操作系統的進程調度器在Ryzen上的集羣之間移動它們,在這種情況下它很糟糕。)
在我的SNB系統:
sudo dmidecode
產生輸出,其中包括:
Handle 0x0005, DMI type 7, 19 bytes
Cache Information
Socket Designation: L1-Cache
Configuration: Enabled, Not Socketed, Level 1
Operational Mode: Write Back
Location: Internal
Installed Size: 32 kB
Maximum Size: 32 kB
Supported SRAM Types:
Other
Installed SRAM Type: Other
Speed: Unknown
Error Correction Type: None
System Type: Unified
Associativity: 8-way Set-associative
因此,事實上,緩存是寫回至少是在BIOS中,如果這是值得信賴的。我很好奇它在AMD CPU上顯示的內容,或者BIOS作者傾向於「製造某種東西」,並且有時會在那裏輸入錯誤的值。
作爲this question指出,對於L2信息是有點兒假:它總計私營256K每芯L2:
Handle 0x0006, DMI type 7, 19 bytes
Cache Information
Socket Designation: L2-Cache
Configuration: Enabled, Not Socketed, Level 2
Operational Mode: Varies With Memory Address
Location: Internal
Installed Size: 1024 kB
Maximum Size: 1024 kB
Supported SRAM Types:
Other
Installed SRAM Type: Other
Speed: Unknown
Error Correction Type: None
System Type: Unified
Associativity: 8-way Set-associative
Handle 0x0007, DMI type 7, 19 bytes
Cache Information
Socket Designation: L3-Cache
Configuration: Enabled, Not Socketed, Level 3
Operational Mode: Unknown
Location: Internal
Installed Size: 6144 kB
Maximum Size: 6144 kB
Supported SRAM Types:
Other
Installed SRAM Type: Other
Speed: Unknown
Error Correction Type: None
System Type: Unified
Associativity: Other
這是上i5-2500k(四核SNB與L3的6MiB)
推土機L2是**不是** write-通過但回寫。 IBM的zSeries--並不是說使用這種處理器的筆記本電腦! - (比如David Kanter描述的[z196](http://www.realworldtech.com/z196-mainframe/7/),它有一個直寫的L2)傾向於積極使用直寫。 –
謝謝你回答達蒙。我正在MATLAB上運行一些測試,並且教授要求我們找到我們將運行測試的CPU的緩存策略,如果可以的話。我做了一些搜索,但我無法找到任何東西,這就是爲什麼我問。 – feugatos
AMD推土機系列CPU *不*使用回寫式高速緩存。看到我的答案。 –
@PeterCordes:謝謝你指出這一點。我正準備購買一臺新的筆記本電腦,這是一臺AMD推土機處理器。你所說的是一個令人信服的理由,放棄這樣做。 – Damon