【问题标题】:Intel cache Address英特尔缓存地址
【发布时间】:2022-01-19 02:00:04
【问题描述】:

这是我的Intel Xeon Silver 4210R CPU 上的 L3 缓存(共享)配置-

$ getconf -a | grep LEVEL3_CACHE
LEVEL3_CACHE_SIZE                  14417920
LEVEL3_CACHE_ASSOC                 11
LEVEL3_CACHE_LINESIZE              64

这个配置意味着缓存中的集合数量是-

现在我正在尝试理解addressing of the cache

这里,缓存行(或块)大小为 64 字节,intel 使用字节寻址系统。因此,缓存地址的最低 有效位应用于块偏移。

通过类似的计算,应该用于设置索引的地址位数是,但是这个小数值让我感到困惑。

我错过了什么吗?这里究竟使用了多少位来设置索引?

编辑:Below Eric mentioned in his answer 10 个处理器内核中的每一个共享 1.375MiB 的 L3 缓存。但这样的配置在我心中提出了另一个问题。假设,我在 core-0 和 core-1 中运行两个进程。如果两个进程都使用虚拟地址 0x0,这些虚拟地址是否会映射到同一个内核的 L3 缓存(假设为 VIPT 缓存)?也就是说,由于L3缓存是共享的,那么虚拟地址的哪一部分区分core-0 L3缓存和core-1 L3缓存呢?

【问题讨论】:

标签: intel cpu-architecture memory-address cpu-cache virtual-address-space


【解决方案1】:

我错过了什么吗?

这个处理器有 10 个内核——你的公式没有考虑内核数,所以如果你除以 10,它是 2 的偶数倍。

这里究竟使用了多少位来设置索引?

11 位,我相信


L3$ 13.75 MiB 10x1.375 MiB 11 路集关联回写

在此处阅读更多信息:https://en.wikichip.org/wiki/intel/xeon_silver/4210r

【讨论】:

  • 这在我脑海中提出了另一个问题。比如说,我在 core-0 和 core-1 中运行两个进程。如果两个进程都使用虚拟地址 0x0,这些虚拟地址是否会映射到同一个内核的 L3 缓存(假设为 VIPT 缓存)?也就是说,由于L3缓存是共享的,那么虚拟地址的哪一部分区分core-0 L3缓存和core-1 L3缓存?
  • 按照我的阅读方式,这似乎表明 L3 缓存在 10 个核心之间不共享。当然,我希望他们互相交流/窥探。我不知道缓存的内部架构(VIPT 或其他),也许对这些芯片更了解的人可以回答这个问题。
  • 我很确定 L3 缓存是共享的。我可以文学地观察(通过监视性能计数器),在特定内核上运行的一个进程可以驱逐在不同内核上运行的其他进程的 L3 缓存内容。无论如何,我将这部分问题添加到我的主要问题中。
  • L3 切片在 Intel CPU 上形成一个大型共享缓存,尽管它不再具有包容性(自 Skylake-X 起)。它是 PIPT,就像主流 CPU 上除 L1 之外的所有缓存一样。由于各种原因,索引是超过 11 位的哈希函数;请参阅我对这个问题的评论。 How does the VIPT to PIPT conversion work on L1->L2 eviction / Which cache mapping technique is used in intel core i7 processor?
猜你喜欢
  • 2012-09-28
  • 1970-01-01
  • 2016-06-27
  • 2018-04-05
  • 2022-01-14
  • 1970-01-01
  • 2020-06-01
  • 2017-05-24
  • 2012-08-26
相关资源
最近更新 更多