英特尔CPUcaching策略

我有一台配有英特尔®酷睿™i5-2450M CPU @ 2.50GHz处理器的笔记本电脑。 我在Ubuntu 12.04(x86_64),我试图find一些关于我的处理器的信息。

我能够find大部分我正在使用的信息

cat /proc/cpuinfo 

 lscpu 

我还想知道的是每个caching级别使用的caching策略。 它回写或写入?

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

提前致谢。

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

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

事实上,所有的处理器(包括你的型号)都有一种或几种形式的写入组合(或者自从Merom之后英特尔称之为填充缓冲器),除了最古老的Intel兼容CPU之外,所有处理器都支持来自SSE寄存器的未缓存写入写组合)。 当然,还有诸如片上高速缓存一致性协议和侦听过滤等机制,以确保一个处理器的内核之间以及多处理器系统中的不同处理器之间的高速缓存一致性。
不过 – 一般的缓存策略仍然是回写。

David Kanter的Sandybridge非常好的写作内容包括内存子系统和缓存架构 :L1D是通常的英特尔写回,而每个内核的L2也是回写。 L3(这是芯片上所有内核共享的大容量高速缓存)也是如此。


AMD采取了一种非常不同的方法: 他们的L1高速缓存是直写的,但是有一个很小的4k写入组合高速缓存。 在AMD上不断重写一个大于4k的缓冲区会在(慢)L2而不是L1上造成瓶颈。

在Agner的博客上,这个帖子中的一个海报声称,BD的L2也是可写的,但是Paul Clayton对这个答案的评论不一致。 (我倾向于相信保罗。)

幸运的是, Ryzen使用了一个正常的32kiB 8路L1D回写,并带有专用回写512kiB L2。 L3是共享的8MB受害者缓存。 它是回写式的,但受害者缓存意味着数据仅在从L1 / L2驱逐时才进入,而不是直接用于加载/预取。 4核心的每个核心集群(CCX模块)都有自己的8MB L3, 不同集群核心之间的延迟/带宽不好 。

关于缓存层次结构还有更多要说的,不仅仅是回写与直写 ,尽管大多数差异对于单线程程序来说并不重要。 (除非操作系统的进程调度程序在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作者倾向于“制造某些东西”,有时会把错误的价值放在那里。

正如这个问题所指出的那样,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(四核心6MiB L3的SnB)