英特尔CPU缓存策略

时间:2012-10-08 11:16:40

标签: linux caching cpu policy

我的笔记本电脑采用Intel(R)Core(TM)i5-2450M CPU @ 2.50GHz处理器。 我在Ubuntu 12.04(x86_64)上,我正在尝试查找有关我的处理器的一些信息。

我能够找到我正在寻找的大部分信息

cat /proc/cpuinfo

lscpu

我还想知道的是每个缓存级别使用的缓存策略。是回写还是写作?

我是否可以使用任何工具查找此类信息?

提前致谢。

2 个答案:

答案 0 :(得分:5)

这不是您可以从CPUID等查询的内容,也不能将CPU配置为执行其中一种操作,因此不存在查询工具。您可以查询的内容是缓存关联性,缓存行大小和缓存大小,例如通过/proc/cpuinfo

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

几乎所有处理器(包括您的型号)都有一种或几种形式的写入组合(或者自Merom以来英特尔称之为填充缓冲区),除了最古老的Intel兼容CPU之外的所有处理器都支持来自SSE寄存器的未缓存写入(再次使用写入组合的形式)。当然,还有像片上高速缓存一致性协议和监听过滤以及其他机制,以确保多处理器系统中一个处理器的内核之间和不同处理器之间的高速缓存一致性。 尽管如此 - 通用缓存策略仍然是回写。

答案 1 :(得分:5)

David Kanter非常好的英特尔Sandybridge写作封面the memory subsystem and cache architecture:L1D是通常用于英特尔的回写,而每核心L2也是回写。 L3也是如此(这是芯片上所有内核共享的大容量缓存)。

有关各代Intel CPU的更多详细信息,另请参阅Which cache mapping technique is used in intel core i7 processor?

AMD采用了一种截然不同的方法:Their L1 cache is write-through, but with a tiny 4k write-combining-cache.不断重写AMD上大于4k的缓冲区将会阻碍(缓慢)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(具有6MiB L3的四核SnB)