当前位置: 华文星空 > 知识

为什么一说超威半导体(AMD)的缺点就被一堆支持者杠?

2020-06-04知识

因为大部分人根本用不出来AMD的缺点,而AMD的支持者大部分都还算是比较懂电脑的。

说在前面,既然题主在描述中的对比厂家是Intel,那么讨论范围限制在CPU这两个两家厂商的共有业务范围。单就这两家最新的CPU来说,和Intel相比,AMD的缺点其实不少的。

<2020/05/16补充>

AMD的显卡问题就不说了,根题主说的没关系,而且我估计随便上一个论坛说AMD显卡驱动不稳定,不支持CUDA,性能不行发热大之类的缺点,应该也没谁和你杠。

锐龙一代、二代的问题也不说了,毕竟三代已经出来了,很多问题AMD已经改了不是?所以这里就只讨论三代锐龙,也就是Zen2架构的AMD CPU。

</2020/05/16补充>

频率低

这个看参数就好了,Zen2最高频率只有售价5000+的R9-3950X的4.7GHz,而更常见的桌面型号,R7-3800X只有4.5GHz [1] 。Intel的刚发布的十代,牙膏归牙膏,i9-10900K单核睿频最高5.3GHz,i7-10700K则是5.1GHz。即便是上代的九代,i9-9900K单核睿频5.0GHz,i7-9700K是4.9GHz [2] 。比对应的锐龙还是要高一些。

虽然说今天的CPU都是多核心,即便是单个核心,也是超标量架构(Superscalar),多执行单元以及乱序执行。性能不能光看频率,还要看IPC,但毕竟这些技术并非是任何场景都适用,某些代码就是只能老老实实的逐条指令执行, 所以频率还是一个很重要的影响性能的参数。

然而,一般人轻易感受不到这个缺点。 2002年Northwood架构的Pentium 4开始支持超线程,家用级CPU进入多线程已经18年;2005年Intel发布Pentium D,AMD发布Athlon 64 X2,家用级CPU进入多核心时代已经15年;2005年就有3.8GHz的Pentium 4 HT 670了,早几个月还不少人选择装机的9400F睿频也不过4.1GHz,CPU频率停滞不前也有15年了。 需要性能的应用早就对多核心多线程进行了优化了,而2020年的今天还是单线程的应用,对CPU性能要求会高到哪里去?4GHz以上的Zen2会不够用么? 更别说Zen2的IPC比Intel 6~10代一直不变的SkyLake架构(单指CPU内核架构)要高不少, 也许个别应用中Intel的高频率还是有优势,但综合来说Zen2的单核性能并不比Skylake差多少 [3]

核心积热严重

AMD的Zen2是7nm工艺,单个CCD最多8核心,39亿晶体管,Die面积74mm²。作为对比,同样是8核16线程的i9-9900K,Die面积是174mm²,大了一倍多。高中物理没忘光的话,应该还记得热传导效率和接触面积成正比,和温差成正比吧?假设发热相近,Zen2的Die面积少一半多,Die和顶盖的温差就会高一倍多。当然,Zen2还有一个12nm的IO Hub,也会产生一部分热量,和9900K相比,频率低制程先进,发热量也低不少。但重负载下,单算核心发热量和接触面积,和9900K比还是吃亏不少的。所以不少人会觉得Zen2温度很高,尤其是和AMD上一代的同核心数量型号相比 [4]

不过这个缺点,除了FPU烤机外,一般人也是感觉不到的。 毕竟也不是所有人都整天渲染3D,日常应用又有几个能跑满8核16线程的3700X?就算能跑满16线程,也不一定都是AVX应用,传统整数、SSE应用的满载功耗比FPU烤机还是低不少的。更何况,同样8核16线程的9900K,就算不超频,FPU烤机功耗其实比3800X还是高不少的,温度通常也会更高一点。至于和上代的Zen+比,别忘了Zen+的AVX单元是残废的128bit,执行一条256bit的AVX指令就要两个单元拼起来一起执行,相当于少了一个AVX单元;加上12nm工艺,Die面积更大,温度比Zen2低也就很正常了。

3700X比2700X功耗低
但是温度高不少,好在还是比9900K低几度。

IF总线带宽低

Zen2的CPU,CPU核心访问内存控制器、访问其它CCX上的核心、访问其它CCD上的核心,PCI-e控制器访问内存,全部都是通过Infinity Fabric总线。IF总线256bit宽,频率跟随内存接口且最高1866MHz(DDR内存接口频率翻倍,对应DDR4 3733),带宽只有59.7GB/s,和双通道DDR4 3733一致。因此,如果进行需要大量吞吐数据的高性能计算,内存带宽吃满,这个时候不同的CPU核心之间又需要进行大量的缓存数据同步,或者PCI-e设备同时大量访问内存时,IF总线很可能出现堵塞导致CPU停下来等待数据,性能无法发挥 [5] [6]

双CCD R9的IF总线,图中蓝色方框

如果是更多核心的HEDT平台的线程撕裂者和服务器平台的EPYC,CCD和IO Hub之间的IF总线是不对称的,CCD读取256bit宽,写入减半只有128bit宽。出现堵塞的概率会更高。

作为对比,Intel的九代Coffee Lake,十代Comet Lake,核心之间、核心和内存控制器都是通过环形总线连接 [7] 。环形总线和IF一样是256bit宽 [8] ,但是频率高得多。即便是笔记本平台的i7-9750H都有4200MHz,带宽可以达到134GB/s。桌面CPU带K后缀的可以超频,超到4800MHz的也不少见。

Coffee Lake的环形总线
Ring总线最高频率4200MHz的i7-9750H

如果是服务器平台的Mesh总线,我没找到具体的技术细节。但一方面Mesh是Ring的升级版,即便频率比Ringbus低,但带宽应该还是要比Ring更高的 [9] 。另一方面,即便是最小的4×4布局的LCC,每个站点只能传输一个方向的数据,理想状态下也可以同一方向的四根总线同时传输数据,等同于4根总线的带宽;如果可以同时传输两个方向的数据,则是8根总线;6×6的XCC则是6/12根总线。

Skylake-X的Mesh总线

然而,这个缺点也是一般人很难碰到的。 桌面应用能吃满这么高带宽的场景几乎不可能出现。反倒是笔记本平台的Renoir架构,因为集成了核心显卡,使用系统内存作为核心显卡的显存,并且核心显卡访问内存控制器也是用同一根IF总线,这个带宽不足的问题相对来说就很容易碰到了。参考和Renoir的核显性能相近的MX150,一般会配备64bit的GDDR5 6000,显存带宽48GB/s。而笔记本平台的Zen2 IF总线频率更低,标压平台只有1800MHz,带宽57.6GB/s;低压平台1600MHz,带宽51.2GB/s,留给CPU的带宽没多少。这个问题更具体的看我的另一个回答:

FMA端口堵塞

Zen2有两个FMA单元,两个FADD单元,每个单元有两个对应的寄存器文件端口。然而两个FMA单元和其中一个FADD单元共用寄存器文件端口。FMA指令是计算类似A=A*B+C这样的指令,是三个操作数的,因此每个FMA单元需要一个额外的寄存器文件端口。FMA单元执行FMA指令时,会导致其中一个FADD单元缺少端口无法执行指令。或者反过来,这个FADD单元执行指令时,两个FMA单元都要等待指令执行完毕后才能执行FMA指令。碰到FMA指令和其它由FADD单元执行的指令并行时,会导致指令堵塞。

FMA单元执行FMA指令时会导致其中一个FADD单元无法工作

这个缺点,也不是那么容易碰到的,而且和Intel相比其实也不算缺点。 毕竟没几个应用有这么密集的FMA指令,还要有大量可以并行的其它需要FADD单元执行的指令才会导致堵塞。而且Intel不管是14nm的Skylake还是10nm的SunnyCove架构,整数浮点共用发射端口,浮点单元也只有三个端口,也就是最多只能三条浮点指令并行,也并不比Zen2好 [10] 。事实上,Zen2是整数和浮点单元分离,都有独立的发射端口,同样是6发射,这个时候Zen2还可以执行3条整数指令,Intel则只能执行一条整数指令和两条内存读写指令。

Intel两代架构同一周期都只能最多同时执行浮点×3+整数×1+L/S×2
Zen2即便堵塞,同一时钟周期也可以执行浮点×3+整数×3

不支持AVX512指令集

AVX512指令集是SIMD(Single Instruction Multi Data,单指令多数据)指令集合,一条指令可以处理16个32位数据,或者8个64位数据,比AVX2性能翻倍。但Zen2不支持。

不支持AVX512,如果用CPU做高性能计算的确是个缺点,问题是你是否在这个范围内? 不是的话,日常应用你先找个支持AVX512指令集并且性能有大幅提升的应用出来再说——用AVX512指令集烤机的测试软件如AIDA64不算哦。而且Intel除了服务器和HEDT平台,轻薄本上只有四核的IceLake支持AVX512,主流桌面、标压笔记本平台也是不支持的。而服务器平台、HEDT平台和轻薄本平台,又有几个应用跑AVX512的性能比核心数量多一倍的Zen2更好?而且如果要用SIMD指令做高性能计算,大部分算法中,用显卡/计算卡来计算性能好价格便宜功耗还低。

只支持到双路系统

Zen2因为使用了IF总线来做CCX/CCD之间的互联,无法再扩展来支持多个CPU。服务器平台的双路Zen2不得不使用了64根高速IO通道(可以配置为PCIe通道)来进行互联 [11] 。作为对比,Intel的CPU最高有三个UPI通道,可以支持8个CPU [12] ,据说不依照Intel规范来设计主板的话,可以最高支持到32路。

这是Zen,Zen2也是类似的:单个CPU有128根高速IO通道
两个CPU之间使用高速协同互联
互联之后每个CPU就只有64根高速通道了
XCC的至强可扩展一共有3个UPI x20控制器
8路至强可扩展的连接方式,任意两个CPU之间互访最多只需要间隔另外一个CPU

因为这个缺点,会带来另外两个缺点:

  1. 单个节点最大内存只有2TB×2=4TB。单个EPYC最大是8通道2TB内存,双路CPU就只有4TB了。而Intel的8路系统,最多可以上到4.5TB×8=36TB内存。如果单台服务器需要大容量内存的话,这个无解。
  2. PCIe通道过少。单个EPYC是128根PCIe 4.0通道,双路系统因为每个CPU都要拿出来64根进行互联,所以还是只有(128-64)×2=128根。而Intel的8路系统,总计可用PCIe通道是44×8=352根。做全NVMe存储会好用很多。

这几个缺点么,你觉得会有多少人碰到? 双路Zen2可以提供最多128个核心,256线程,4TB内存,128根PCIe 4.0通道,总计带宽2Tbps,可以插8张PCIe 4.0 x16或者16张PCIe 4.0 x8(等同于PCIe 3.0 x16)的显卡/计算卡。又有几个人需要更高的配置?

软硬件兼容问题

即便锐龙上市以来大受欢迎从Intel手上抢回来不少份额,AMD在CPU市场的份额目前还是比Intel低不少的,而且Zen上市不过三年,Zen2去年才刚刚上市。Intel光是Skylake架构的CPU上市都五年了。份额少、新架构,自然就难免有某些硬件、软件开发商做测试用例没有涵盖到,出现Bug的概率比Intel更高也是正常。尤其是一些本来就很少众的软件和硬件,甚至可能已有用户群体里面就没有用AMD平台的。但是大部分用户使用的用户群体大一点的常见软件,有兼容性问题的通常新版也解决了——某些用户因为习惯或者特殊需求不愿更新软件版本的,这个老天爷也没办法。

用户使用问题

不管是使用Intel平台还是AMD平台,碰到问题总是难免的。碰到了问题,在归咎于CPU并且上网发帖喷AMD之前,操作系统、驱动程序、软件、BIOS更新过了么?尝试过查找问题发生的原因么?向软件开发商提交BUG反馈了么?你知道这个问题是你自己的个例还是普遍存在么?Intel平台的用户通常会归咎于自己使用不当,或者怀疑软件问题,为什么用AMD平台出了问题就归咎于是CPU的缺点呢?AMD的份额即便比Intel低不少,一个季度的出货量也是千万数量级的,真的是平台有问题让你第一个碰到了?这样的几率都让你碰上了不检查一下自己人品有没有问题么?上来就发帖喷AMD有什么什么问题,但又说不清楚具体细节,人家也无法重现,就别怪其它人回帖「人傻怪电脑」了。

<2020/5/16补充>

AMD不是不能骂,想骂就骂。不过呢,如果你用AMD平台,碰到了卡顿、应用崩溃、系统蓝屏之类的问题让你感觉很不爽,又实在因为个人水平/条件有限/时间不允许等原因既解决不了,又找不到具体故障原因的,就想上网发帖骂一下发泄发泄情绪。我建议你:

骂AMD的时候,连软件开发商、内存/主板/电源/硬盘生产商一起骂

因为这些东西任何一个有问题都会导致这类问题出现,光骂CPU厂家一家有失公平。多骂几家也有助于更好的发泄情绪不是?

</2020/5/16补充>

Intel平台的缺点

大家都知道的,14nm++…+,发热大,价格贵,再杠的人也不能不承认不是?没法杠你可不就显得友善了?

知道Intel的这些缺点而选择了AMD,不是仅仅知道i3、i5、i7数字越大越好的,即便自己不看硬件相关的文章,通常也是认识个懂一点得朋友推荐的。人家用的好好的,看见有人上来就一通喷AMD这个那个缺点,但又说不清楚到底什么问题,杠你一下不是基本操作么?

参考

  1. ^ AMD:处理器规格 https://www.amd.com/zh-hans/products/specifications/processors/7746,7696,2571,2586,2601,2611,3376,9221,2481,11776,1736,1896,2466,176,146,116
  2. ^ Intel:产品对比 https://ark.intel.com/content/www/cn/zh/ark/compare.html?productIds=186604,186605,199332,199335
  3. ^ Anandtech:The AMD 3rd Gen Ryzen Deep Dive Review https://www.anandtech.com/show/14605/the-and-ryzen-3700x-3900x-review-raising-the-bar/6
  4. ^ 超能网:锐龙9 3900X/锐龙7 3700X处理器同步评测 https://www.expreview.com/69286.html
  5. ^ AMD:The Path to Zen 2 https://www.slideshare.net/AMD/the-path-to-zen-2
  6. ^ PC Watch:第3世代Ryzen Threadripperを支えるダイ間の接続技術 https://pc.watch.impress.co.jp/docs/column/kaigai/1223210.html
  7. ^ Wikichip:Coffee Lake - Microarchitectures https://en.wikichip.org/wiki/intel/microarchitectures/coffee_lake
  8. ^ Anandtech:The Ring Bus & System Agent - Intel's Sandy Bridge Architecture Exposed https://www.anandtech.com/show/3922/intels-sandy-bridge-architecture-exposed/4
  9. ^ Anandtech:The Intel Skylake-X Review https://www.anandtech.com/show/11550/the-intel-skylakex-review-core-i9-7900x-i7-7820x-and-i7-7800x-tested/5
  10. ^ Anandtech:Taking a Bite of the Sunny Cove Microarchitecture https://www.anandtech.com/show/14514/examining-intels-ice-lake-microarchitecture-and-sunny-cove/3
  11. ^ Wikichip:Zen - Microarchitectures https://en.wikichip.org/wiki/amd/microarchitectures/zen
  12. ^ Wikichip:Skylake (server) - Microarchitectures https://en.wikichip.org/wiki/intel/microarchitectures/skylake_(server)