【发布时间】:2021-02-24 02:16:24
【问题描述】:
我看不到 8 路设置缓存关联性有什么特别的优势吗? (如果这是一个愚蠢的问题,请提前道歉。)
【问题讨论】:
标签: caching intel cpu-architecture cpu-cache amd-processor
我看不到 8 路设置缓存关联性有什么特别的优势吗? (如果这是一个愚蠢的问题,请提前道歉。)
【问题讨论】:
标签: caching intel cpu-architecture cpu-cache amd-processor
注意Ice Lake bumps that up to 12-way, 48kiB(为每个集合添加更多方法,相同的索引)。 8路特别没有什么神奇之处。以前的 AMD 设计,如 K8 和 Bulldozer,试验了不同的 L1d 和 L1i 几何形状,如 64k / 2-way。 (虽然不如英特尔的 16k/4-way 和 32k/8-way 成功。)
对于 L1d / L1i 缓存,8 路允许 32k 缓存在没有别名的情况下成为 VIPT (see this),给定 x86 的 4k 页。 32kiB 是一个很好的 2 次幂“最佳位置”,它足够小,可以快速运行,但也足够大且具有足够的关联性以获得良好的命中率,如果您想避免需要额外的技巧来避免混叠,则 8-way 是最小的关联性.
请参阅Why is the size of L1 cache smaller than that of the L2 cache in most of the processors? 了解更多关于为什么我们有缓存层次结构的信息(因为不可能构建一个 L2 或 L3 大小的巨大缓存,而延迟和我们需要/想要的 L1 读/写端口的数量,并且尝试会是花费你的电力预算的坏方法)。另见Which cache mapping technique is used in intel core i7 processor?
8-way 也是关联的“足够”,例如大多数数组上的循环的总输入和输出流少于 8 个(如果它们来自页面对齐数组中的相同偏移量,它们会在 L1d 中相互别名),并且有更多是一个已知问题。 (并且某些形式的不同访问的 4k 别名也是软件主要试图避免的已知问题。)
另请注意,SKL 的 256k L2 缓存只有 4 路关联,而 SKX 的 1MiB 16 路 L2。 (Skylake L2 cache enhanced by reducing associativity?)。 L3 缓存通常超过 8 路关联,但我猜您说的是 L1d / L1i 缓存。
【讨论】: