三星Exynos团队首次披露M6 CPU内核设计:史上最强“胎死腹中”

  • 时间: 2020-06-04 07:36:33

  ISCA(国际计算机体系结构研讨会)是 IEEE 举办的一个会议,关于这个会议,通常我们不会在公众场合听到很多。造成这种情况的主要原因是,大多数会议和论文都倾向于以学术为导向,而与实际产品中的实际操作相距甚远。

  但到了今年,会议改变了形式,他们增加了行业会议的比重,并提供了行业内各公司的演讲和论文,讨论的范围涵盖了实际的商业产品。

三星 Exynos 团队首次披露 M6 CPU 内核设计:史上最强“胎死腹中”

  在会议中,三星的 SARC(三星奥斯汀研发中心)CPU 开发团队发表了一篇题为“三星 Exynos CPU 架构的演变”的论文,详细介绍了该团队在其 8 年的发展过程中所做的努力,并介绍了其定制 Arm 的一些关键特征。在这期间,其 CPU 内核也从 Exynos M1 迭代到最新的 Exynos M5 CPU。当然,未发布的 M6 设计在本文也有涉猎

  资料显示,三星的 SARC CPU 团队成立于 2011 年,公司致力于开发定制的 CPU 内核,然后三星 LSI 将其部署到其 Exynos SoC 中,从 2015 年在 Galaxy S7 中发布的第一代 Exynos 8890 开始,到现在应用在 Galaxy S20 上的拥有 M5 内核的 Exynos 990,三星团队已经进行了五代产品的更新。现在,SARC 已完成 M6 微体系结构。

  据报道,这些工作是在该公司的 CPU 团队被传于 2019 年 10 月解散的消息(从去年 12 月开始生效)传出来之前完成的。ISCA 的论文是三星愿意发布一些开发团队的想法的结果,这些想法被认为值得在公众中保存,这实质上代表了 8 年开发工作的高层成果。

  从 M1 到 M6:持续变型的 CPU

  本文提供了三星定制 CPU 内核之间的微体系结构差异的总体概览表:

三星 Exynos 团队首次披露 M6 CPU 内核设计:史上最强“胎死腹中”

  披露内容涵盖了设计的一些众所周知的特征,如三星在 HotChips 2016 的最初 M1 CPU 微体系结构的深挖以及在 HotChips 2018 的最新 M3 所披露的那样。它使我们可以洞悉我们在 S10 和 S20 评测中测得的新 M4 和 M5 微体系结构,以及对 M6 外观的一瞥。

  三星设计的一个关键特征是多年来,他们都是基于 2011 年开发的 M1 内核蓝图 RTL 为基础,多年来不断改进内核的功能模块。但到了 M3,内核的设计发生了很大的变化。他们从几个方面大幅扩展了内核,例如从 4 宽设计到 6 宽中核。之前尚未公开的新披露内容将涉及新的 M5 和 M6 内核。

  对于 M5,三星对内核的缓存层次进行了较大的更改,例如用新的更大的共享缓存替换了私有 L2 缓存,以及公开了 L3 结构从 3 组设计到 2 组的变化,这样做可以获得较小的延迟。就微体系结构而言,正在开发中的尚未发布的 M6 内核似乎是一个更大的飞跃。

  SARC 团队在这里进行了较大的改进,例如将 L1 指令和数据缓存从 64KB 增加到 128KB,这一设计选择目前仅在苹果的 CPU 内核(从 A12 开始)之前实现。据说 L2 的带宽能力提高了一倍,最高可达 64B /周期,L3 的带宽也将从 3MB 增加到 4MB。M6 可能是 8 宽解码核心,据我们所知,它至少是我们所知道的最宽的商业微体系结构,至少在解码方面

  有趣的是,即使内核要宽得多,整数执行单元也不会发生太大变化,只是看到一个复杂的管道增加了第二个整数除法功能,而加载/存储管道将保持与上一个架构相同。具有 1 个加载单元,1 个存储单元和 1 个 1 加载/存储单元的 M5。在浮点/ SIMD 管道上,我们将看到具有 FMAC 功能的第四个单元。TLB 可能会发生一些大变化,例如 L1 DTLB 从 48 页(pages)增加到 128 页,而主 TLB 从 4K 页增加到 8K 页(32MB 覆盖)。

  自 M3 以来,M6 也是第一次,它将增加内核的乱序窗口,并使用更大的整数和浮点物理寄存器文件,以及从以下时间开始增加 ROB(重排序缓冲区)。据透露,这将从 228 增加至 256。SARC 内核的一个主要弱点似乎仍然存在于 M5 和即将推出的 M6 内核中,那就是其更深层次的流水线阶段导致相对昂贵的 16 周期错误预测损失的结果,远高于 Arm 最新设计(11 级)的周期。

  这篇论文更深入地介绍了分支预测器设计,展示了基于核的可缩放哈希感知器(Scaled Hashed Perceptron )设计。这些年来,设计一直在不断改进,提高了分支的准确性,从而不断降低了 MPKI(mis-predicts per kilo-instructions)。展示的一个有趣的表是分支预测变量在前端内占用的存储结构量,以 KB 为单位:

三星 Exynos 团队首次披露 M6 CPU 内核设计:史上最强“胎死腹中”

  IPC 每年增加 20%,6 年内达到 2.71 倍

  本文进一步描述了 SARC 团队为改进各代产品的内存延迟所做的努力。在 M4 内核中,团队采用了负载-负载级联机制( load-load cascade mechanism),将后续负载的有效 L1 周期延迟从 4 个周期减少到 3 个。M4 还引入了带有新接口的 path bypass,从 CPU 核心直接到内存控制器,避免了通过互连的 traffic,这解释了我们在 Exynos 9820 中看到的一些更大的延迟改进。

  M5 引入了推测性高速缓存 lookup bypasses,同时向互连和高速缓存标签发出了一个请求,这可能节省了高速缓存未命中的等待时间,因为内存请求已经在进行中。从 M1 的 14.9 个周期降低到 M6 的 8.3 个周期,平均负载等待时间已经持续改进了几代人。

三星 Exynos 团队首次披露 M6 CPU 内核设计:史上最强“胎死腹中”

  在 IPC 改进方面,SARC 团队在过去 8 年的开发中设法实现了平均每年 20% 的改进。如图所示,M3 的 IPC 实现了大幅度飞跃。M5 与我们在基准测试中看到的大致相关,大约提高了 15-17%。据披露,M6 的 IPC 平均值为 2.71,而 M1 的平均值为 1.06,此处的图表通常似乎表明与 M5 相比提高了 20%。

  在会议的问答环节中,论文的主持人布莱恩·格雷森(Brian Grayson)回答了有关自研该计划取消的原因。他透露,团队始终如一地按时按计划执行,并且每一代的性能和效率都有所提高。但他表示,团队最大的困难在于对未来的设计更改要非常谨慎,因为团队永远没有资源完全从头开始或完全重写代码块

  据说,事后看来,该团队过去会在某些设计方向上做出不同的选择。这种串行设计方法与 Arm 的职位形成鲜明对比,ARM 拥有多个跨越式设计中心和 CPU 团队,使他们能够进行诸如彻底重新设计之类的事情,例如 Cortex-A76。团队对于 M7 等即将到来的内核有很多改进的想法,但是据说取消该计划的决定是三星公司高层的决定。与 Arm 的设计相比,SARC CPU 内核从未真正具有过竞争力,因为它们的功率效率,性能和面积使用率下降。随着 ARM 最新的 Cortex-X1 上周透露去为全力以赴的表现,它看起来对我来说,SARC 的 M6 设计将不得不反对竞争的问题。

  该论文的作者非常感谢三星公司慷慨地允许发表该论文,并感谢 SARC 领导层多年来对这个“moonshot”  CPU 项目的管理。SARC 当前仍在设计自定义互连,内存控制器,以及在自定义 GPU 架构上工作。