lscpu 中的 AMD CPU 缓存信息中的“实例”是什么意思?

问题描述 投票:0回答:1

当我在 AMD Ryzen 5 上运行命令

lscpu
时,
cache
部分包含以下信息

Caches (sum of all):      
  L1d:                    192 KiB (6 instances)
  L1i:                    192 KiB (6 instances)
  L2:                     3 MiB (6 instances)
  L3:                     16 MiB (1 instance)

我的问题是:

6 instances
是什么意思?

cpu cpu-architecture cpu-cache
1个回答
0
投票

您的CPU有1个6核CCX(核心集群)。 每个核心都有自己的 L1i/d(每个 32K)和 L2(每个 512K)。 每个 CCX 有一个共享 L3 (16 MiB)。

因此,在整个 CPU 中,有一个该大小的 L3 缓存实例,以及 6 个总大小为 192 KiB 的 L1d 缓存实例。 “Instance”是一个标准的英语单词,有字典定义,没有特殊的技术含义。

在 Intel Alder Lake 以及后来的一些 E 核心集群上,每 4 个 E 核心有一个 L2 缓存,而 P 核心有自己的私有 L2 缓存,因此这不仅仅是每个核心与共享的情况。 同样,具有更多核心(两个或更多 CCX)的 Zen 将拥有多个 L3 实例。


顺便说一句,192 KiB(6 个实例)是描述每个核心都有一个私有 32 KiB L1d 缓存的 CPU 的一种非常愚蠢且无用的方式。 我希望营销部门能够做到这一点,因为能够放置更大的数字会使 CPU 看起来更好;也许

lscpu
复制了这个,这样数字就会排列起来?

缓存占用空间是否适合 L1d 的相关数字是 32K。 例如,很少可以并行化一种算法并且让数组的每个块仅由一个线程触及。

lscpu
应该停止这样做,并输出
32 KiB (x6)
或对编写程序和调整缓存大小的人实际上有用的东西。 或者
32 KiB (x6 instances)
,但也许可以避免“实例”,这样长期用户就可以更轻松地记住从旧输出格式的切换。

当并非所有缓存的大小都相同时,以某种方式总结细分就更有意义,例如几个 2M L2 和一些较小的 L2。 否则人们可能会做出错误的假设。 但它包含更多信息(相对于每核私有的 1 位信息与 CPU 范围共享的信息),因此更难显示。

© www.soinside.com 2019 - 2024. All rights reserved.