我有一台配备 Intel(R) Core(TM) i5-2450M CPU @ 2.50GHz 处理器的笔记本电脑。我在 Ubuntu 12.04 (x86_64) 上,正在尝试查找有关我的处理器的一些信息。
我能够找到我正在寻找的大部分信息
cat /proc/cpuinfo
和
lscpu
我还想知道在每个缓存级别上使用的缓存策略。是回写还是直写?
有什么工具可以用来查找此类信息吗?
提前致谢。
这不是你可以从 CPUID 等查询的东西,也不能配置你的 CPU 来做一个或另一个,因此不存在用于查询的工具。您可以查询的是缓存关联性、缓存行大小和缓存大小,例如通过/proc/cpuinfo
.
在过去一到二十年中,所有与 Intel 兼容的 CPU 都对缓存使用了回写策略(假定首先获取缓存行以允许部分写入)。当然这是理论,实际情况比这要复杂一些。
几乎所有处理器(包括您的模型)都具有一种或多种形式的写入组合(或自 Merom 以来英特尔称其为填充缓冲区),并且除了最古老的英特尔兼容 CPU 之外,所有处理器都支持来自 SSE 寄存器的非缓存写入(再次使用一种形式的写组合)。当然,还有诸如片上缓存一致性协议和窥探过滤等机制来确保一个处理器的内核之间以及多处理器系统中不同处理器之间的缓存一致性。
尽管如此——一般的缓存策略仍然是回写的。
David Kanter 非常出色的英特尔 Sandybridge 文章涵盖了内存子系统和缓存架构:L1D 是英特尔常用的回写方式,而每核 L2 也是回写方式。L3 也是如此(这是一个由芯片上所有内核共享的大型包容性缓存)。
另请参阅英特尔酷睿 i7 处理器中使用了哪种缓存映射技术?有关各代英特尔 CPU 的更多详细信息。
AMD 采用了一种非常不同的方法:他们的 L1 高速缓存是直写式的,但具有很小的 4k 写入组合高速缓存。 在 AMD 上不断重写大于 4k 的缓冲区将成为(慢)L2 而不是 L1 的瓶颈。
Agner 博客上该线程中的一张海报声称 BD 的 L2 也是直写的,但 Paul Clayton 对此答案的评论不同意。(我倾向于相信保罗。)
幸运的是, AMD Ryzen使用了普通的回写 32kiB 8 路 L1D,带有私有回写 512kiB L2。L3 是共享的 8MB 受害者缓存。它是回写的,但受害者缓存意味着数据仅在从 L1/L2 驱逐时才进入它,而不是直接用于加载/预取。4 个核心的每个核心集群(CCX 模块)都有自己的 8MB L3,不同集群中的核心之间的延迟/带宽很差。
除了 write-back 与 write-through 之外,关于缓存层次结构还有很多要说的,尽管大多数差异对于单线程程序并不重要。(除非操作系统的进程调度程序在 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-per-core 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 和 6MiB 的 L3)上