AMD真能翻身,压倒Intel?

来源:内容来自「台湾水电工协会-非在职工友」,谢谢。


AMD在2019年7月发表采用台积电7纳米制程Zen 2家族产品线,加上英特尔Intel)挤14纳米制程的牙膏,挤到爆发史无前例的CPU大缺货,让x86处理器市场战局似乎真的出现改观契机,让人深感世事难料,现实总比虚构更加离奇。

当「挤牙膏」对决「大跃进」


这几年规格与制程一进一退,我们先从时间轴来看,双方时程进度如下。


2016年8月英特尔开始挤牙膏:Skylake「第一代改良」Kaby Lake为第七代Core的心脏。

2017年5月:「集英特尔服务器尖端技术大成(AVX-512、Omni-Path)」的Skylake-SP总算问世,刚好赶在AMD第一代EPYC前一个月,同时有原生10核(LCC, Low Core Count)、原生18核(HCC,High Core Count)和原生28核(XCC,Extreme Core Count)3种版本。

2017年6月:配合当年COMPUTEX,包4颗8核心CCD(Core Complex Die)组成32核心的第一代EPYC发表,象征AMD正式重返服务器战场。


2017年8月:Kaby Lake还可再挤一次牙膏:第八代Core的Kaby Lake-R(Refresh)。

2017年10月:Skylake「第二代改良」同时用在第八代和第九代Core的Coffee Lake,最高原生核心数倍增到8核。直到「今日」,Coffee Lake依旧是英特尔中低阶桌机处理器的主力,已经越来越多人搞不懂英特尔到底在干么了。

2018年初英特尔AMD破天荒携手合作,采用「高级胶水技术」EMIB整合AMD Vega绘图核心的Kaby Lake-G上市。


2018年4月AMD发表微幅改进、Global Foundry 12纳米制程的Zen+,但没有导入服务器的EPYC产品线。值得注意的是,12纳米制程APU迟至2019年初才出现,而2019年底AMD替微软Surface推出的「特仕版」Ryzen 5 3580U和Ryzen 7 3780U,看起来就很像多一个Vega GPU CU、绘图效能比正规版好一点的「封印解除」版。

2018年5月英特尔首款10纳米制程,也是首度整合AVX-512的桌上型处理器Cannon Lake(原名为Skymont),仅一种原生双核、L3快取只有4MB、也没有整合绘图核心的Core i3-8121U,「试产」意味浓厚,然后英特尔10纳米制程产品就再也没有下文了,隐约透露不祥的预兆。

2018年8月:喝咖啡喝不够,英特尔还会请你喝威士忌,最大核心组态只有4核的Skylake「第三代改良」Whisky Lake完全是笔电限定的产品线,而PCH系统芯片组也转进14纳米制程,暗示未来一堆产品将挤在相同制程的产能危机。

2018年9月英特尔CPU缺货危机开始占据新闻版面,OEM厂商纷纷哀号。

2018年11月AMD在自办的Next Horizon活动公布第二代EPYC技术细节:多芯片封装,包8颗台积电7纳米制程8核心CCD(Core Complex Die)和一颗格芯12纳米制程SIOD(Sever I/O Die)组成64核/128执行绪的怪物。


2018年12月英特尔在自办的Architecture Day活动公开新一代处理器微架构「Sunny Cove」与10纳米制程Ice Lake概要讯息。


2019年4月:服务器用的Skylake-SP、真正完全体「Cascade Lake-SP」默默登场,补足之前赶不上Skylake-SP的3D XPoint记忆体模组(原名Apache Pass)并看似有点赶流行的新增深度学习专用的指令,但最让人讶异的莫过于英特尔也开始包水饺拼核心数了,只是包两颗Cascade Lake-SP的Xeon Platinum 9200,最多也只有56核心。

Cascade Lake-SP 的3 种核心配置(28 核XCC、18 核HCC、10 核LCC)也构成英特尔8 核心以上高阶桌机产品线的地基,但在制程没有进化、被迫用服务器等级多核心的更大型晶粒去对抗AMD 的多馅水饺,也成为日后产能不足的可能性。


上一次这样做,已是2009 年AMD 包两颗6 核心Istanbul 凑12 核的Magny-Cours。


2019年7月AMD Zen 2产品线陆续登场,但据传因台积电7纳米制程产能太满,AMD抢不太到,导致部分高阶产品型号延期上市,包含16核心的Ryzen 9 3950X。


2019年8月:Skylake「第四代改良」Comet Lake相较前代Whisky Lake带来激增50%的12MB L3快取容量,但英特尔被迫要用更大的芯片才能抗衡AMD 7纳米制程产品,减少单一晶圆可产出的产品数量,已是无法闪躲的劣势了。Comet Lake的产品生命周期,恐怕也将正如其名,如流星稍纵即逝。

2019年9月10纳米制程Ice Lake核心的第十代Core产品线总算上市了,但还是仅限笔电,还是看不到桌机和服务器转进新制程。

2019年11月AMD宣布Zen 3完成开发,并于2020下半年,采用台积电使用EUV光刻技术的7纳米+制程量产。


2019年11月21日:针对长达一年的缺货危机,英特尔执行副总裁Michelle Johnston Holthaus公开发表道歉信。
2020年1月AMD在CES发表7纳米制程、单一晶粒整合8核心Zen 2与8 CU Vega绘图核心的「Renoir」APU,网络充斥Ryzen 7 4800H的游戏性能超越「Coffee Lake世代」Core i7-9700K的讨论,而前者的表定功耗还不到后者的一半(45W vs. 95W)。更有趣的是,AMD实际上还留一手,封印了一个Vega CU,让人不得不联想是否日后又有「微软Surface特仕封印解除版」的可能性。


2020年1月AMD公开7纳米制程APU后没多久,英特尔公布采用「Willow Cove」核心与Xe绘图技术的「Tiger Lake」,为2020年笔电产品的主力,但10纳米制程的桌机和服务器CPU依旧没有下文,仅有「Sapphire Rapids」这个代号,而2020年会不会浮上台面,也不得而知。

现在我们把焦点转向Zen 2。有鉴于坊间已经充斥太多对Zen 2 的「深度分析」(尤其是微架构核心层面的介绍),为此我们打算用偏向应用面的角度,介绍AMD 真正的优势和看不到的劣势。

AMD 可用更小芯片对抗英特尔产品


2019 年12 月9 日「美国批踢踢」Reddit 有一则讨论引起热议:台积电AMD 代工生产的7 纳米制程8 核心CCD,单一晶粒面积只有74 平方公厘,以完整8 核心都可正常运作的标准来算,良率高达93.5%,一片12 吋晶圆可取得749 个8 核心芯片,足以用来生产374 颗16 核心的Ryzen 9、187 颗32 核心的EPYC、或着93 颗64 核心EPYC,但英特尔Intel)的14 纳米制程28 核心Xeon,在相同的晶圆缺陷率,只有46% 无缺陷晶粒,一片12 吋晶圆只能产出24 颗,更惨的是,英特尔即使有2 颗28 核心,核心数还抵不过AMD 一颗64 核心。

(Source:AMD

我们并不知道台积电卖给AMD 的7 纳米制程晶圆一片多少钱,但先进制程的成本节节高升这档事,倒是没有什么怀疑的空间,缩减单一芯片面积这件事,完全势在必行。这也让人不得不好奇,预定2020 下半年采用「电晶体密度增加20%,功耗减少10%」EUV 光刻技术7 纳米+ 制程的Zen 3,晶粒面积是否还有继续缩小的可能,或核心微架构能否显著扩张。


总之,先不提笔电和低阶桌机,光比一比服务器和中高阶桌机的产品,就算对处理器市场再怎么外行,光看规格和价格就可轻易看出AMD 现在的优势有多大。

 

Zen 2 的实际优势并不只有台积电的7 纳米制程


从2019 年7 月至今半年多来,大概是因为有棒打英特尔这只落水狗的天赐良机,在网络可看到的乡民评论,多半都聚焦在以下几点:

  • 台积电先进制程天下无敌。
  • AMD Chiplet 策略高瞻远瞩。
  • AMD 的制造成本辗压英特尔
  • 万恶的英特尔快要挤不出牙膏了。


这里替各位复习一下,依据AMD 的Chiplet 策略,现有芯片只有4 种,而EPYC、Threadripper 和未整合绘图核心的Ryzen,由前三种「包水饺」包出来,第四种则是专用单芯片APU,专攻低价电脑与笔电市场(只是原生8 核心看来也不像规格多低阶的产品就是了)。


先不管英特尔台积电AMD 这次Chiplet 策略其实有很多层面的考量,并不是只有降低成本,可归类如下:

  • 减少风险:I/O与记忆体控制器的IP区块,难以快速导入最先进制程。
  • 提升弹性:同样的7纳米制程CCD和12纳米制程IOD可同时用在不同的产品线。
  • 增加产能:用更少的晶圆数提供更多可出货产品,特别当台积电产能被苹果为首的大客户抢破头时。
  • 改善效能:将记忆体控制器独立于CPU核心之外,可精简NUMA (Non-uniform memory access)Domain,利于软件最佳化,这绝对值得花时间解释。


记忆体控制器和CPU 脱钩是简化系统最佳化手段


CPU 整合记忆体控制器对AMD 并不陌生,早在2001 年10 月的微处理器论坛,AMD 就宣布K8 将整合双通道DDR 记忆体控制器,也暗示原生双核心设计,基于HyperTransport 的NUMA 也让AMD 独领风骚好几年,直到英特尔的Nehalem 具备以QPI 为基础的NUMA 为止。

CPU 整合记忆体控制器这件事,其实有利有弊,好处是「靠得越近,速度越快」,坏处则是在多芯片、多处理器环境,会让主记忆体分散在四处,作业系统需特别花工夫最佳化排程,尽量让CPU 核心存取本地端记忆体,避免不必要的远端存取,这也是ACPI 规范会有储存多处理器拓朴资讯的SRAT (Static Resource Affinity Table) 和记录NUMA 节点之间延迟差异的SLIT ( System Locality Information Table),用来协助作业系统或虚拟机管理者(Hypervisor)「看清全局」,达到最佳行程管理与记忆体配置。但AMD 的多芯片封装,却也让这件苦差事更复杂。

AMDZen 2 世代将记忆体控制器与CPU 脱钩,转移至CCD 共用的I/O Die,除了分而治之,沿用12 纳米制程Zen+ 的现成IP 区块,缩短研发时程,降低产品开发的风险,将记忆体控制器集中为一(原本4 个双通道变成一个8 通道),让NUMA 看起来更像早期所有CPU 共用同一块主记忆体的SMP,双处理器环境的实体NUMA Domain 从8 个变成2 个,而处理器核心要存取记忆体控制器的可能距离也从3 种(同一颗EPYC 的其他CCD、另一颗EPYC 的第一颗CCD、另一颗EPYC 的第二颗CCD)精简成两种(同一颗EPYC 内的IOD,另一颗EPYC 的IOD)。


用这张同时比较现行英特尔Xeon、第一代EPYC 和第二代EPYC,差异性就更清楚了,也不难理解为何作业系统和虚拟机管理者(Hypervisor)不需要太多最佳化手段,就可在英特尔CPU 有效率执行,特别当AMD 的架构会让最低层的快取记忆体(Last-Level Cache,LLC)散布四处,也增加快取资料一致性(Cache Coherence)的负担,降低整体系统效能。这是AMD 看似风光的核心数量与制程优势以外,台面上看不出的弱点。


这也是为何AMD 将在7 纳米+ 制程Zen 3,将CCD内原本两组4 核心CCX 独享的L3 快取,融合为8 核心共用的主因(看起来很有可能改为一颗CCD 就一颗8 核心CCX),进一步减少软件最佳化的复杂度。不过「江湖盛传」AMD 将在Zen 3 导入HBM 当作「L4 快取」,会造成哪些奇怪的影响,就只能到时候再仔细研究了。


多芯片结构带来更复杂的系统调校工作


但这是否代表AMD 减少NUMA Domain 就从此高枕无忧?事情没这么简单,天底下并非所有应用程式都是「NUMA-friendly」,可高度平行化分散在所有运算节点与专用的快取记忆体,如果所有应用程式都一次存取多达8 通道的DDR4主记忆体,固然带来最高的理论频宽,却也会造成更长的存取延迟,做好「频宽vs. 延迟」的平衡势在必行。

也因此,AMD 从第一代EPYC 开始,在系统BIOS 提供两个名称让人摸不着头绪的可调整参数:

  • NUMA Nodes per Socket(NPS):名为每个处理器插座的NUMA节点(Node),但实际作用是「分而治之」、定义处理器核心群存取记忆体通道的方式。
  • NPS0:当安装两颗EPYC时,所有处理器核心如同只有一个NUMA Domain的交错存取所有总计16通道的主记忆体,这很明显没有效率(强迫存取另一颗EPYC的记忆体),所以连AMD官方都不建议这样做。
  • NPS1:EPYC所有处理器核心像同处同一个NUMA Domain同时交错存取8通道主记忆体(ABCDEFGH),最一般的「泛用」组态,整体理论频宽最高,存取延迟最长。
  • NPS2:记忆体通道拆成4条一组(ABCD EFGH),形同两个NUMA Domain(一半的核心)交错存取这两组。
  • NPS4:记忆体空到拆成2条一组(AB DC EF GH),有如4个NUMA Domain(四分之一的核心)交错存取这4组,整体理论频宽最低,存取延迟最短。


  • ACPI SRAT L3 Cache as NUMA Domain:这命名非常容易让人一头雾水,那L3 Cache实际上应该正名为CCX。讲白话一点,这功能是将CCX加入NUMA Domain,透过ACPI SRAT让作业系统或虚拟机管理者意识到其存在,让每个CCX「专心」存取自己的L3快取。以第二代EPYC为例,8颗CCD有16个CCX,启动此功能后,就等于告诉作业系统「我有16个CCX,每个都有自己的L3快取,请给我好好排程,尽量让CCX自己吃自己的L3」。

各位还看不懂的话,就请参考AMD 如何跟微软合作,让Windows 10 可将彼此有关连的执行绪,尽其所能塞到同一个CCX,避免分散到其他地方延长记忆体存取延迟。


相信各位已经头上浮现满满问号,我们就来看看VMware 和Dell 是怎么建议的。

  • 假若EPYC只有跑少少的虚拟机、部署少少的虚拟CPU,每个虚拟机和虚拟CPU都可以独自享受丰沛的硬件资源,那VMware建议设定就是:
    NPS (NUMA per Socket) = 4
    启动L3 Cache as NUMA
    讲白一点就是就地分赃,「让虚拟机绑架专属的资源」。
  • EPYC已跑了满满的虚拟机或部署满满的虚拟CPU,任何系统资源都不容许一丝一毫浪费,那就会变成:
    NPS (NUMA per Socket) = 1
    关闭L3 Cache as NUMA
    换言之就是「独乐乐不如众乐乐」,大家一起吃大锅饭。
  • 关于高度平行化的高效能运算或其他已针对NUMA 最佳化的应用程式,Dell 建议NPS 设成4(应该也要开启L3 Cache as NUMA),可让这类应用「同时享受到最高的频宽与最低的延迟」。

想必各位都觉得很麻烦对不对?像微软和VMware 自己写的文件,也是得从EPYC 是多芯片封包、一个CCD 包两个CCX、所有CCD 连接IOD、记忆体和I/O 介面的配置、NUMA是什么等开始从头教起,否则读者恐怕根本看不懂这些「有字天书」上面印的是哪来的圣经密码。


AMD 也针对不同应用环境,从泛用型、虚拟化、资料库、高效能运算等,提供性能调校手册,所以说天底下没有白吃的午餐,AMDCPU 便宜归便宜,要享受好处之前,该做的功课还是要做,老师教的当然要听。

核心数量太多也会制造麻烦


很久以前IBM 公开展示8 颗英特尔Nehalem-EX、总计64 核心128 执行绪的服务器,其Windows 工作管理员显示CPU 的壮观画面,轰动一时,然而现在只要一颗AMD EPYC 就功德圆满了,而且你还可以加倍。但「CPU 核心执行绪超多」这档事不是没有后遗症,实际应用层面会带来很多鲜为人知的麻烦,而微软这次就很倒楣成为苦主了。

一台2 颗EPYC 7742 或7702 的服务器,就有总计128 个处理器核心和256 条多执行绪,但是Windows Server 2016 和2012 R2,因为不支援第二代先进可程式化中断控制器(x2APIC ),理论上就无法吃下超过255 个逻辑处理器,根据微软的EPYC 性能调校文件,旧版Windows Server 实际上只能对应2 颗48 核心的EPYC 和192 个逻辑处理器。


而微软网站描述的64 核心EPYC 支援性也让人感到疑惑:Windows Server 2016 和2012 R2 都需要关闭SMT,但48 核心/96 执行绪就没有问题,暗示无法支援到128 执行绪,然后一提到NUMA,微软很隐晦的表示「Windows 现阶段最多只能在一个NUMA 节点支援64 个硬件执行绪,只要NSP 开到0 或1 就破表了」,这真的要实际测试过的人,才能摸清楚真相到底是怎么一回事,但微软最想看到的,还是莫过于大家尽快升级到Windows Server 2019。


唯一可以确定的是,要安装2019 年9 月前的Windows Server 2019 版,必须先在BIOS 关闭SMT 和x2APIC,灌完作业系统后跑Windows Update 装完所有的累积性更新,再重新开机进BIOS 打开SMT 和x2APIC。

核心数量太多的软件相容性问题并不只发生在微软,像常见的服务器作业系统和虚拟机管理员,如Red Hat Enterprise Linux、Ubuntu Linux、VMware 等,也都需要升级到最新版或安装某些更新才能确保相容性无虞。

很多业界人士老是喜欢把「生态系统」(Ecosystem)挂在嘴上,当因「英特尔缺货,所以建议客户改用AMD」或「因为我们做英特尔平台打不赢其他厂商,所以另辟他径改押宝AMD」,有没有意识到这些实际应用的边边角角,还是只有满脑子硬件规格好棒棒,就是呈现一家服务器厂商专业程度的关键时刻。

英特尔无缝接轨到AMD 并非易事


只是购买新的AMD 服务器重新建置服务还不打紧,最麻烦的还是「要如何将部署在英特尔服务器的软件及服务转移到AMD 平台」,还有「不停机动态迁移」这天大的挑战。

这里就不得不谈谈「x86 指令集长期缺乏业界标准」这件遗祸至今的陈年往事了。以虚拟化为例,自从英特尔的VT-x (Vanderpool) 和AMD 的AMD-V (Pacifica)开始,双方根本就是各搞各的,结果就是只要处理器厂商持续扩张指令集(像快要没人搞懂到底有多少版本的AVX-512),连「同一间处理器厂商的不同世代CPU 之间要搬来搬去都很麻烦」。


英特尔按着AMD 头在地上摩擦的Haswell 与Broadwell 微架构世代,在虚拟化技术更走火入魔,进一步追求控制不同虚拟机器、执行绪或应用程式占用L3 快取空间与记忆体频宽的精细调控机制(在Broadwell 被称之为Resouce Director Technology),企图实现「L3 快取记忆体层级的QoS」。


AMD 也「有为者亦若是」的在Zen 2 加入类似的相关快取记忆体管理指令,有时候还真的满同情这些作业系统和虚拟机管理者厂商,什么东西都要开发两个版本。


像VMware的vMotion需要采用EVC(Enhanced vMotion Caompatility)盖掉「非基本指令集」,搬完后还要重新启动虚拟机器,才会判断新服务器的CPU 有哪些功能可在电源开启后使用,才能存取所有新的处理器功能,更不用讲不同厂商CPU 之间的动态搬移,VMware 也明讲了「不支援从英特尔平台动态转移到AMD 平台,反之亦然,只能使用会导致停机的冷转移」,其他体系的虚拟机,如Red Hat Virtualizaton 和KVM,对此大哉问也都是大同小异的回应。


HPE的「将虚拟机器从英特尔型服务器平台移转到AMD 型服务器平台」白皮书,推荐的方式是请顾客掏钱购买Carbonite远端快照复写软件,但也不能做到不停机,只能「Almost Zero Downtime」。光凭这点,很多完全不允许停机的服务,就不可能从英特尔转移到AMD了,无缘享受多到用不完的核心数和执行绪。


所以有时候这世界也是有一点公平、满「一分钱一分货」的,特别在企业IT 领域更是如此,硬件价格便宜是一回事,但往往会发生「即使再便宜也无法使用」的惨剧。为何AMD的产品这么好,却无法开出更高售价?很多看不见的隐藏成本,才是真正关键,也是满脑子只有BOM Cost 和硬件规格的厂商,永远无法理解的大道理。

想藉由AMD EPYC大展拳脚的服务器厂商,又有几间写了像样的「系统移转注意须知」呢?所以双方真的主客易位,战局真的改观了吗?我们静观其变。

福利


摩尔精英粉丝福利:半导体行业资料,免费下载




点击阅读原文,了解摩尔精英