[闲聊] 对岸超硬核解释AMD与intel架构差异

楼主: c52chungyuny (PiPiDa)   2019-07-04 22:27:12
https://www.zhihu.com/question/303489757/answer/543505194
没有高分低能的硬件,只有选错了跑分和对应场景的关系的人
首先我用AIDA64的性能基准来说明一下
https://i.imgur.com/00eKLIV.jpg
你能看出谁高分低能吗?你会发现CPU QUEEN/zlib是同规格下AMD与Intel接近,AES/Hash
是AMD明显绝对优势,VP8是多核没什么优势/超执行绪负加成+Intel高主频处理器有优势
,julia/mandel/ray trace FP32/64是Intel绝对优势,Sinjulia是AMD有较大优势,CPU
PhotoWorxx是Intel优势且超执行绪有负加成,至少从AIDA64这些项目来看,你不能说谁
高分低能,那这些差异是为什么呢?
https://i.imgur.com/7sKbn5S.jpg
这样一看很多人似乎理解了,Intel有优势的项目全是AVX/AVX512项目,AMD最大优势Hash
,AMD处理器都支援Hash加速指令,且拥有更大的加密解密执行单元,而FPU中Sinjulia是
AMD的优势项目,而恰好80bit扩展精度的浮点计算无法使用SIMD指令进行优化,他使用了
更老的X87浮点指令和执行单元来执行
那有人要问了,这难道是指令集的问题导致了差异?其实指令集只是汇编语句的抽象概念
,只是告诉处理器该怎样执行这些计算的一个显式的概念,对应的背后是具体使用了何种
单元执行这些指令,处理器如何更快的将这些指令发射到对应的流水线来执行的问题。比
如Ryzen都支援AVX2指令,但观察9700K/9900K相对2700X,同样是8核规格,在AVX专案上
2700X都被拉开极大差距,这便主要是执行单元的巨大差异造成的
AMD架构
https://i.imgur.com/YQkBMhS.jpg
intel架构
https://i.imgur.com/ED62ZoD.jpg
Zen与Skylake系列的后端执行单元来看,AMD的埠多达10个,除去两个AGU,实际执行计算
的埠有8个,Skylake则只有4个,其中VEC是执行SIMD指令的单元,它将负责AVX/SSE的指
令执行,AMD则是整数浮点分离,整数4个埠,浮点4个埠,咋一看AMD没有任何劣势啊,
Intel在执行浮点加法乘法将使用Port0/1的FMA单元提供的乘加计算,该单元在乘法加法
混合时如果有FMA指令则同时双发乘加融合计算,即执行浮点加法时双发射,浮点乘法时
双发射,乘法加法同时混合使用FMA单元的FMA计算,也是双发射(等效4发射),AMD的浮
点计算则没有专用FMA单元,所以执行浮点加法是双发射,乘法是双发射,乘加融合是两
个Mul+两个Add一起上,相当于四发射,咋一看还是没差别啊?但AMD不幸的是每个单元只
能执行128Bit SIMD的计算,Intel则是256/512Bit(Skylake-X)的SIMD计算,这样同样
是双发射,Intel是2X256,AMD是2X128,自然也就被远远甩开,
而整数计算Intel的SIMD int加法依旧是VEC的单元来做,他是3个ALU来做int型的逻辑和
int加法计算,所以最高吞吐3X256,int乘法则属于FMA单元的事情,他能实现2X256的吞
吐,AMD的int型逻辑计算由4个ALU执行实现4X128吞吐,int加法由其中两个ALU执行,实
现2X128,乘法由其中一个ALU执行实现1X128,最后一个ALU执行除法,包括Intel都是一
个除法器,当然除法器Intel的移位元规模很高,实现了radix 1024,这也使得其在老式
圆周率计算super Pi中领先AMD相当多,总结如下
对比图:
https://i.imgur.com/NVye51q.jpg
当然之前AMD没能力做,一堆A粉想尽办法掩饰,比如AVX没用(没用你还明明用着128bit
SSE指令集的宽度来支援AVX2),比如AMD考虑市场上支持AVX的少节约成本(这时不谈挤
牙膏了,不给你是为了节约成本),然而Zen2就要把这个执行单元升级为256Bit了,显然
之前的规模和工艺,AMD自身能力的不足,难以在14nm就像Intel一样设计一个这么大的计
算单元还跑出高频(Intel),体现了双方的差距
但是,AMD不是也有优势项目吗?比如Sinjulia,比如AES Hash跑分就很牛逼啊,CPU
queen也不差啊,而且如果执行128bit的SIMD,你Intel不也是2X128的水准?这样不就差
不多了?
这就是另一个问题,比如CPU QUEEN是一个棋盘皇后(10皇后)问题,他指的是在10X10的
棋盘上摆放10个皇后且不能相互攻击(皇后是横竖加对角都能攻击的),这个问题被认为
是分支处理的典型问题,这在日常中不是不常见,然而这里有一个巨大的问题,那就是
AIDA64的棋盘皇后问题做了多执行绪的处理,而且由于基本不具备向量化并行优化空间,
这几乎对AMDIntel来说就是个谁核多执行绪多谁厉害的项目,然而日常中这并不是一个简
单的事情,更多时候一些分支的处理往往都还是单执行绪的,这让超多核的处理器实际上
就出现了AIDA64跑分高但日常用不到的问题,同理,aida64上的AVX512专案,也面临日常
用不到的境地,但好歹AVX512可以在密集计算领域发挥作用,密集计算的需求在如今越发
旺盛,CPU强化这方面性能显然是对抗GPU的一个重要手段,在日常中可能就不能转化为你
能看见的能了
Sinjulia代表的X87浮点更是如MMX一样,基本是历史垃圾堆里的了,属于基本只有古董软
体才有,但是古董软件也压根很难支援你这么多核,这也是AMD很多时候跑分高的原因,
使用老版本的跑分软件,在标量执行单元和流水线设计如今趋同的今天,基本的ILP优化
水准都差不多的,能同频差出10%已经很多了,所以AMD多两个核跑分想低都难,但是实际
应用中这些老版本的跑分软件对应的使用场景也很难有足够多的执行绪调用,这也让AMD
的多核性能不太容易在日常使用中发挥出来,好不容易有足够多的执行绪支援的软件,你
发现他居然支持了AVX,虽然AVX的利用率也没有支援AVX的跑分软件那么高,但是这么一
来一回,Intel本身同频性能和主频也高,依旧也就保持了优势
而既没有FMA指令支援的SSE程式,使用128bit SIMD和寄存器的程式,AMD自然是与Intel
五五开,如果你的使用环境的确是这样,那AMD也不是低能,但是还是要考虑多执行绪的
支持程度,否则如果即使Intel核更少,但是你的程式连4核都利用不上,那在如今主流处
理器都已经4核以上的时候,大家都只跑4个核,那主频更高更有优势
当然服务器讲求多实例的吞吐能力,比如单个实例单个任务无法利用足够多的执行绪,但
可以同时执行多个实例来充分利用这些执行绪,这样也就发挥了多核的作用,但是问题在
于家用用户很难有足够多的并发专案来填满超多核心处理器,往往普通使用者处理的是单
个实例或较少实例的负载,而且核心多使用多个实例来填满硬件执行绪,还会面临极高的
内存速率和容量需求
https://i.imgur.com/yNIrmxb.jpg
使用SPEC2006浮点Rate专案+新编译器环境下(VS2017+ICC19)对9900X/9940X/7820X/金
牌6144进行了对比(SPEC2006在编译器使用Qxcore AVX512的收益有限,所以我做
9900/9940的时候直接使用QxCORE-AVX2)
7820X 16执行绪,我设定了16个实例(Rate 16)来执行,安装48GB内存,每个实例分
到3GB内存
9900X 20执行绪,我设定了20个实例(Rate 20)来执行,安装64GB内存,每个实例分
到3.2GB内存
9900X 28执行绪,我设定了28个实例(Rate 28)来执行,安装64GB内存,每个实例分
到2.3GB内存
双路金牌6144共32执行绪,设定32个实例(Rate 32)来执行,安装192GB内存,每个实
例分到6GB内存,同时每个实例分到的L3是6144最多(6144一共49.5MB L3),其次是
9900X(19.25MB L3),然后是9940X 19.25MB L3但是28个实例。7820X是11MB L3 16实例
,这些处理器的多核频率都比较接近
实际上可以发现很多专案9940X的内存瓶颈极大,尽管他比9900X多了40%的核心,频率
也相近,但是有不少memory bound专案已经被9900X追上,而6144凭借超大的缓存和记忆
体容量,基本放飞自我,只有少数内存瓶颈小的专案被9940X追上,这说明在讲求多实
例的吞吐测试中,尽管有能力填满所有核心与执行绪了,但此时内存性能也成为一个重
要指标,他会明显影响性能的表现
至于AES和Hash,日常主要用于签名,身份验证,包括网页,下载档案的校验,如果要执
行密集的AES/Hash计算,可能比较为人熟知的应用就是挖矿了,比如比特币是SHA,门罗
币是AES,而且最重要的是Hash虽然intel没给主流处理器支援SHA(尽管SHA指令集极其加
速单元是Intel扩展的,被用于目前的凌动处理器),但是实际上可以通过AVX512 int单
元来执行HASH,实际上sisoftware给出的成绩便是AES计算成了cache/memory bound,
Hash使用AVX512配合高内存频宽配置,实际上Intel完全不输AMD
https://i.imgur.com/Zk3TAOp.jpg
我直接拿我跑的9940X(全默认)与sisoftware的2990WX进行了对比,实际上跑分完全不
输,不仅是加密解密不输,其实像诸如多媒体(SIMD),科学计算等项目14核9940X依旧
超过了2990WX,,说AMD高分可以停停了
实际上只要还在2018年继续更新的跑分软件,都显示AMD的优势越来越小,因为
AVX/AVX512的支持越来越普遍,就连AMD最爱的CPUZ跑分,都在近日支持了AVX/AVX512,
还有3Dmark的新场景,就连刺客信条奥德赛还搞出了不支持AVX不能进游戏的问题
https://i.imgur.com/YRQKCO2.jpg
在都是默认频率的成绩下,2700X拿9700K来打都是浪费,当然SSE的分数还是很高的,比
7820X还高,可能这也是有人认为AMD高分的原因
而AMD市场宣传最爱的R15,的确也是高分
https://i.imgur.com/z8bweVB.jpg
可问题是,我拿出R20跑了一下R15里面的渲染场景,仅仅只是重新导入了这个项目,其他
没有任何修改,
https://i.imgur.com/AjXK4O2.jpg
7820X 9秒完成,而使用R15足足掐著码表要20多秒,请问R15有什么资格代表C4D的性能指
标?
C4D更是支持了embree外挂程式,而embree外挂程式最新的支持AVX512,未来C4D的新版随
之支持也是理所应当的,而3DsMax,Conroa都有使用embree外挂程式用于光线追踪和特效
处理的部分,这也是为什么很多人发现AMD跑R15很厉害,R15出的时候本身压根没有任何
AVX支持,使用的embree外挂程式也是古董级的,但是跑实际自己用的新版本甚至8核不比
8700K快的问题
https://i.imgur.com/3t5bJgw.jpg
上图则是blender最新的编译测试版运行一个光线较多的渲染的一个性能分析器结果,可
以发现AVX FMA的使用已经成为了主要SIMD部分,256bit向量占据了更高的比例,再拿什
么avx用不到来说已经毫无意义,更不要说Intel已经在研究X265使用AVX512的问题了
https://i.imgur.com/XcWmz7a.jpg
最后便是很多人说的优化问题,首先Intel的软件发展中心有数不清的优化参考文件,而
AMD的寥寥无几也很难找到,似乎AMD认为反正我和Intel都是X86处理器,你优化好Intel
我就能跑的态度,Intel针对新处理器的parallel Studio XE套件,涵盖计算需要的MKL
IPP DAAL ICC编译器等工具,能无缝安装进入VS,AS,eclipse,Xcode等多个平台的IDE
,反观AMD,出个AOCC,厉害就厉害在只能在Linux上用,而且参考资料少
https://i.imgur.com/spn8VPE.jpg
而且Intel尽管被嘲讽icelake看不到在哪,但是AIDA64的更新页面一打开,你会发现ICL
将会提供用于使用256bit向量加速的AES指令集VAES已经被AIDA64性能测试进行优化了,
cascadelake的优化也存在了,而已经被AMD发布的Zen2,看不到优化迹象,甚至
sisoftware也提供了对ICL VAES的支援,
https://i.imgur.com/bxtISdb.jpg
你以为是跑分软件故意优化Intel不优化AMD?打开ICC编译器的属性选项,你会发现未来
架构的处理器都在优化范围内,AMD推出AOCC For ryzen甚至要等到zen上市以后
https://i.imgur.com/14BhGIu.jpg
对比之下,AMD属于活该优化不好,当然日常中的低能,无非就是AMD游戏性能不好,这主
要是游戏对内存延迟的要求,对主频的要求高,至于多执行绪优化?你可以这么理解,
等什么时候游戏能支持足够多执行绪的平行计算了,AVX512可能也在游戏里跑了,到时低
能不低能和跑分有什么关系?
作者: electronicyi (電子益)   2019-07-04 22:49:00
第一张图分辨率640*116 是要我看个狗屎烂蛋
作者: qweertyui891 (摸鱼厨师)   2019-07-04 22:51:00
AVX512再强 价格烙赛也是没人要买说的地表最强游戏CPU 9900k支援512一样,并没有
作者: zweihander99 (zweihander)   2019-07-05 00:28:00
都还没开卖就找文章来唱虽,是不是很慌啊

Links booklink

Contact Us: admin [ a t ] ucptt.com