[闲聊] AMD 真能翻身压倒英特尔吗?从应用优劣来

楼主: KotoriCute (Lovelive!)   2020-02-09 18:57:43
AMD 真能翻身压倒英特尔吗?从应用优劣来探讨可能性
https://technews.tw/2020/02/09/x86-amd-intel-zen2/
现在我们把焦点转向 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 核心。
我们并不知道台积电卖给 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 的多芯片封装,却也让这件苦差事更复杂。
AMD 在 Zen 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 也针对不同应用环境,从泛用型、虚拟化、数据库、高效能运算等,提供性能调校手
册,所以说天底下没有白吃的午餐,AMD 的 CPU 便宜归便宜,要享受好处之前,该做的
功课还是要做,老师教的当然要听。
核心数量太多也会制造麻烦
很久以前 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 大展拳脚的服务器厂商,又有几间写了像样的“系统移转注意须知”呢
?所以双方真的主客易位,战局真的改观了吗?我们下篇继续。
作者: JamesForrest (Forrest)   2020-02-09 21:35:00
bug一堆当然便宜啊,如果真的强早就超车了而不是用便宜抢市占

Links booklink

Contact Us: admin [ a t ] ucptt.com