2012-10-08 61 views
2

我有一台配有英特尔(R)酷睿TM i5-2450M CPU @ 2.50GHz处理器的笔记本电脑。 我在Ubuntu 12.04(x86_64)上,我试图找到关于我的处理器的一些信息。英特尔CPU缓存策略

我能找到的大部分信息我一直在寻找使用

cat /proc/cpuinfo 

lscpu 

我也想找出是每个高速缓存使用的缓存策略水平。它回写或写入?

有什么工具可以用来找出这些信息吗?

在此先感谢。

回答

3

这不是你可以从CPUID或其他类型查询的东西,你也不能配置你的CPU做一个或另一个,因此不存在查询工具。你可以通过查询查询的是缓存关联性,缓存行大小和缓存大小,例如通过/proc/cpuinfo

所有与Intel兼容的CPU在过去的一二十年中都使用回写针对缓存的策略(假设首先获取缓存行以允许部分写入)。当然这就是理论,现实比这要复杂得多。

几乎所有处理器(包括你的模型)有写相结合的一种或几种形式(或填充缓冲器英特尔称之为以来的Merom),以及所有,但最古老Intel兼容的CPU支持非高速缓存写入从SSE寄存器(其再次使用写入组合的形式)。当然,还有诸如片上高速缓存一致性协议以及探听过滤和其他机制来确保一个处理器的核心之间以及多处理器系统中的不同处理器之间的高速缓存一致性。
尽管如此,一般的缓存策略仍然是回写。

+0

谢谢你回答达蒙。我正在MATLAB上运行一些测试,并且教授要求我们找到我们将运行测试的CPU的缓存策略,如果可以的话。我做了一些搜索,但我无法找到任何东西,这就是为什么我问。 – feugatos

+1

AMD推土机系列CPU *不*使用回写式高速缓存。看到我的答案。 –

+0

@PeterCordes:谢谢你指出这一点。我正准备购买一台新的笔记本电脑,这是一台AMD推土机处理器。你所说的是一个令人信服的理由,放弃这样做。 – Damon

2

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)

+1

推土机L2是**不是** write-通过但回写。 IBM的zSeries--并不是说使用这种处理器的笔记本电脑! - (比如David Kanter描述的[z196](http://www.realworldtech.com/z196-mainframe/7/),它有一个直写的L2)倾向于积极使用直写。 –