我有一台带有Intel(R)i5-2450M CPU @ 2.50GHz处理器的笔记本电脑。
我在Ubuntu 12.04(x86_64)上,尝试查找有关我的处理器的信息。
我能够找到我一直在寻找的大多数信息
cat /proc/cpuinfo
和
lscpu
我还想找出在每个缓存级别上使用的缓存策略。 是回写还是透写?
有什么我可以用来查找此类信息的工具吗?
提前致谢。
堆栈溢出是一个用于编程和开发问题的站点。 这个问题似乎与主题无关,因为它与编程或开发无关。 请在帮助中心中查看我可以询问哪些主题。 也许超级用户或Unix&Linux Stack Exchange是一个更好的选择。
您通常可以在Intel ARK上查找CPU规格。 这是英特尔的产品规格网站。
您不能从CPUID等查询此内容,也不能将CPU配置为做一个或另一个,因此没有查询工具。您可以查询的是缓存关联性,缓存行大小和缓存大小,例如通过/proc/cpuinfo。
在过去的一,二十年中,所有与Intel兼容的CPU都对高速缓存使用了回写策略(假定首先获取高速缓存行以允许部分写入)。当然,这就是理论,现实要比这复杂得多。
几乎所有处理器(包括您的型号)都具有一种或几种形式的写合并(或自Merom以来称为Intel所称的填充缓冲区),除最古老的Intel兼容CPU外,所有处理器均支持SSE寄存器的未缓存写操作(再次使用一种形式)。写合并)。然后,当然还有诸如片上缓存一致性协议和探听过滤之类的东西以及其他机制,以确保一个处理器的内核之间以及多处理器系统中不同处理器之间的缓存一致性。
尽管如此,常规缓存策略仍在回写中。
谢谢您回答达蒙。我在MATLAB上运行了一些测试,而教授要求我们找到我们将在其上运行测试的CPU的缓存策略。我做了一些搜索,但是却找不到任何东西,这就是为什么我问。
AMD Bulldozer系列CPU不使用回写式缓存。看我的答案。
@PeterCordes:感谢您指出这一点。我本打算购买新笔记本,并附带AMD Bulldozer处理器。您说的是拒绝这样做的一个令人信服的理由。
对此进行更新:推土机系列L2已回写。它唯一的L1D就是使用小写合并缓冲区的直写。在Ryzen中,所有缓存都是回写的,但是每个4核的群集都有一个单独的L3。 (我只是用一些链接更新了我的答案,并指出,与回写和直写相比,缓存层次结构具有更多的优势,尤其是对于多线程代码。)
David Kanter的非常出色的Intel Sandybridge编写涵盖了内存子系统和缓存体系结构:L1D是Intel常见的写回,而每核L2也是写回。 L3也是如此(L3是芯片上所有内核共享的大型包含缓存)。
另请参阅Intel Core i7处理器中使用了哪种缓存映射技术?有关各代Intel CPU的更多详细信息。
AMD采用了一种非常不同的方法:他们的L1高速缓存是直写式的,但是只有一个很小的4k写合并高速缓存。在AMD上不断重写大于4k的缓冲区将成为(慢速)L2而不是L1的瓶颈。
Agner博客上该主题的发帖人之一声称BD的L2也是直写的,但Paul Clayton对这个答案的评论不同意。 (我倾向于相信保罗。)
幸运的是,AMD锐龙使用的是普通回写式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)
推土机L2不是直写式,而是回写式。 IBM的zSeries-并不是说有笔记本电脑使用这种处理器! —(例如David Kanter描述的z196,它确实具有直写L2)倾向于积极使用直写。