【问题标题】:Skylake L2 cache enhanced by reducing associativity?通过降低关联性来增强 Skylake L2 缓存?
【发布时间】:2016-10-23 18:07:11
【问题描述】:

Intel's optimization guide 的第 2.1.3 节中,他们列出了 Skylake 中缓存和内存子系统的一些增强功能(重点是我的):

Skylake 微架构的缓存层次结构如下 增强功能:

  • 与前几代相比,缓存带宽更高。
  • 通过扩大的缓冲区同时处理更多的加载和存储。
  • 与 Haswell 微架构和早期版本中的一个相比,处理器可以并行执行两次页面遍历。
  • 页面拆分负载惩罚从上一代的 100 个周期降至 5 个周期。
  • L3 写入带宽从上一代的每行 4 个周期增加到每行 2 个。
  • 支持 CLFLUSHOPT 指令来刷新缓存行并使用 SFENCE 管理刷新数据的内存排序。
  • 降低了指定 NULL 指针的软件预取的性能损失。
  • L2 关联性从 8 种方式变为 4 种方式。

最后一个引起了我的注意。以何种方式减少方式数量是一种增强方式?就其本身而言,似乎更少的方法比更多的方法更糟糕。当然,我知道可能存在有效的工程原因,为什么减少路数可能是实现其他增强的权衡,但在这里它本身被定位为增强。

我错过了什么?

【问题讨论】:

    标签: x86 cpu intel cpu-cache


    【解决方案1】:

    L2 缓存的性能更差。

    根据this AnandTech writeup of SKL-SP (aka skylake-avx512 or SKL-X),英特尔表示“[降低关联性] 的主要原因是让设计更加模块化”。 Skylake-AVX512 具有 1MiB 的 L2 缓存,具有 16 路关联性。

    在双核和四核笔记本电脑和台式机部分 (SKL-S) 中,下降到 4 路关联性可能不会造成太大影响,因为 L3 缓存有很多带宽。我认为,如果英特尔的模拟和测试发现它伤害很大,他们会投入额外的设计时间来将 8 路 256k 缓存保留在非 AVX512 Skylake 上。


    低关联性的好处是功率预算。它可以通过允许更多的涡轮增压空间来间接提高性能,但大多数情况下他们这样做是为了提高效率,而不是提高速度。 在电力预算中腾出一些空间,让他们可以将其花在其他地方。或者不花掉所有的钱,只用更少的能量。

    移动和多核服务器 CPU 比高端四核台式机 CPU 更关心功率预算。

    列表上的标题应该更准确地阅读“更改”,而不是“增强”,但我确信营销部门不会让他们写任何听起来不积极的东西。 :P 至少英特尔准确而详细地记录了事情,包括新 CPU 比旧设计更差的方式。


    Anandtech's SKL writeup 建议降低关联性可以释放功率预算以增加 L2 带宽,这(在总体上)补偿了增加的未命中率。

    IIRC,英特尔有一项政策,即任何提议的设计更改都必须具有 2:1 的性能增益与功耗成本之比,或类似的东西。因此,如果他们通过这种 L2 更改损失了 1% 的性能但节省了 3% 的功率,他们就会这样做。如果我没记错的话,2:1 的数字可能是正确的,但 1% 和 3% 的例子完全是虚构的。

    在 IDF 发布详细信息后,大卫·坎特在一次播客采访中对这一变化进行了一些讨论。 IDK if this is the right link.

    【讨论】:

    • 这里是another interesting theory:Skylake-S(即原始 Skylake)在预期后期 Skylake-X 和 Skylake Xeon 产品线中支持 AVX-512 时进行了一些架构修改,尽管 Skylake- S不支持。特别是:[SKL 将关联性减少到 4] 是为增加缓存大小做准备 - SKL-S 缓存只是具有相同组织的 SKL-X 缓存的四分之一,并且减少的关联性允许减少大量 1MB 缓存的晶体管预算..只是猜测,但很有趣!
    • @BeeOnRope:是的,在阅读AnandTech's SKL-X writeup 后我也有同样的想法,他们提出了同样的主张:减少 L2 关联性至少部分是为了使其更加模块化。因此,SKL-S 通过在其他地方花费功率预算而获得整体加速的假设可能不正确。 (不过,它不排除它。对于 SKL-S 来说,它可能仍然是一个总体上好的或中性的变化。如果英特尔认为这太糟糕了,他们就不会这样做。)
    猜你喜欢
    • 1970-01-01
    • 2011-09-06
    • 2011-05-15
    • 2020-12-03
    • 1970-01-01
    • 2016-10-18
    • 2021-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多