欢迎光临GGAMen游戏资讯




【x86 兴衰史】AMD 真能翻身压倒英特尔吗?从应用优劣来探讨可能性

2024-11-26 215


现在我们把焦点转向 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 的多芯片封装,却也让这件苦差事更复杂。

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 大展拳脚的服务器厂商,又有几间写了像样的“系统移转注意须知”呢?所以双方真的主客易位,战局真的改观了吗?我们下篇继续。

  • Workload Tuning Guide for AMD EPYC™ 7002 Series Processor Based Servers

(首图来源:AMD)

延伸阅读:

  • 【x86 兴衰史】AMD 翻身有望?英特尔规格制程挤牙膏与 AMD 的跃进
2020-02-10 06:11:00

标签:   游戏头条 资讯头条 ggamen科技资讯 ggamen科技 ggamen科技资讯头条 科技资讯头条 ggamen游戏财经 新闻网 科技新闻网 科技新闻 ggamen 科技新闻 科技新闻网 新闻网 ggamen游戏财经 科技资讯头条 ggamen科技 ggamen科技资讯 资讯头条 游戏头条 ggamen游戏新闻网 科技新闻 新闻网 ggamen游戏财经 科技资讯头条 ggamen科技资讯头条 ggamen科技 ggamen科技资讯 资讯头条 游戏头条
0