前两周写了一篇有关 Lunar Lake 如何实现低功耗的文章: 谈谈Lunar Lake的低功耗设计:听说x86做不了低功耗? 有读者一笔评论如上,感觉这个总结是比较到位的——虽然我在文章里也没直接提,不过在 ring 总线之外,本质应该也就是跟电源管理有关吧。 这里再给些补充资料,虽然感觉干货也不算多。Hot Chips 上, Chip and Cheese 采访了 Intel ,以下我摘取部分内容做了翻译,方括号里头的是我的屁话: Q:...Lion Cove 核心不带 SMT(超线程)。我们也从行业内的其他人那里听说,要在相同功耗下获得出色性能,SMT 并不是个好方法。所以为什么会取消 SMT,是否的确如他们所说? Arik Gihon:这种说法并不完全准确。SMT 对于扩展多线程是个不错的特性。相同的核心上跑 2 个线程,在不需要增加太多功耗的情况下,就能获得 nT 性能,所以以相似的模式就提升了性能。以前比现在的收益还多一点,以前大约 30% 额外的性能,现在大约 20% 左右。 现在情况发生了一些变化。我们在扩展多线程性能的高层级架构方面,增加了 E-core。这是扩展多线程更为高效的方式。所以现在,如果我们期望在核心上高效地跑单线程,方法之一就是去除(同时)多线程,并且构建更为有效的、能够以更低功耗提供 IPC 性能的核心。 Q:提到 Lunar Lake 上的 E-core,你们把所有 E-core 都放到了 ring 以外。以前在 Meteor Lake 上,E-core 放在 CPU tile 上,而 LP E-core 放在 SoC tile 上。这次你们将全部 E-core 都放到了低功耗岛上,原因是什么? Arik:是的,上一代我们将两个 LP E-core 放到了 ring 总线之外,不在 compute die 上。我们对其做了进一步优化,Lunar Lake 之上我们将 4 个 E-core 放到了 ring 以外,以提升效率。Ring 和 LLC 的确会在某些情况下带来收益,但有时代价也很大。 相较于 LLC 能够给到的额外 IPC,要让 Lunar Lake 具备低功耗特性,这么做带来了相当不错的收益,包括延迟、存储,以及功耗开销。 Q:从缓存架构角度来看,新的 P-core 有了新层级的 intermediate L1 cache。现在也就有了 4 级数据 cache 和 SLC cache,这对延迟敏感型程序会带来怎样的影响? Arik:很不错的问题。我不确定这是否会影响到延迟,的确会提升延迟表现(improving latency)...相较于原 L1 cache,可能改善了多个周期(several cycles)... Q:某些情况下能够帮助延迟方面的表现,因为让原本要放进 L2 的部分离核心更近了。 Arik:是的。我在演讲中展示了延迟数据,可以看到相较于上一代 Redwood Cove,在更低层级 buffer size 部分,大核心的延迟表现有提升... Q:Memory Side Cache 在 Lunar Lake 里头是个新东西... 内存操作减少程度如何? Arik:这主要取决于负载,和应用的 footprint;取决于多少东西能够放进 cache 里,情况会有差别。会有一些负载从中获益颇多,因为我们将更多东西分配进了 system cache... Q:谈到负载,这也会包含 iGPU 吗?iGPU 也会是 Memory Side Cache 的使用大户吗? Arik:No it's not due to the footprint . Q: iGPU 实际上无法真正从光追单元获得多少有效性能,为什么要增加完整光追单元的用料?是为了缩减验证时间吗 ? Arik:不是的。架构的某些部分能够更好地利用硬件资源,更好地利用光追单元,所以在 Lunar Lake 上就这么做了。 Q: Lunar Lake 上很多东西都重新整合到了同一片 die 上,为什么回到这种 monolithic 设计? Arik:这是种权衡(trade-off)... ...