【发布时间】: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缓存呢?
【问题讨论】:
-
这里究竟使用了多少位来设置索引? - 这是一个单独的问题; L3 缓存使用较高位的哈希函数来减少来自许多地址的别名冲突,例如,使用相对于页面的相同偏移量。见According to Intel my cache should be 24-way associative though its 12-way, how is that? / Determine Cpu cache associativity 和Which cache mapping technique is used in intel core i7 processor?
标签: intel cpu-architecture memory-address cpu-cache virtual-address-space