Re: [闲聊] AVX指令集实际应用是什么功能?

楼主: abac1230 (Planck超帅)   2020-07-16 00:08:31
※ 引述《superRKO (挖洗RKO)》之铭言:
: 小弟菜鸡
: 最近看INTEL的AVX512被嘴爆了,I皇QQ
: 又看了某几集极客湾他们介绍说烤机烤AVX,I家的U会变很烫,而A的反而不会
: 然后这几年有听到AVX有实际在游戏上应用的就刺客教条-奥德赛
: 但还是想问一下这AVX指令集的实际应用到底是什么?
老实说这个AVX如果要认真解释,
可能会又臭又长,
大概会99%的人会直接END。
所以我用老妪能解的方式来稍稍乱讲一下好了,
虽然还是又臭又长,但有误请尽量鞭。
首先先回答你的问题,
AVX指令集的实际应用到底是什么?
我想最接近问题的答案应该是:
“那些想要把CPU当GPU来用的应用”这样
最贴近一般人会用到的软件,
我在想应该就是PS2的模拟器PCSX2,
以及PS3的模拟器RPCS3了吧?
想当然你可能想会说,
CPU与GPU这两种处理器,
一般在计算的资料类型上差别蛮大的。
那为什么还要把CPU当GPU用呢?
好问题。
老实说还真的有一堆程式设计师对此感到疑惑。
但代志不是憨人想得那么简单。
实际上还真的有厂商在14年前就这么搞了,
而且产品大家都听过。
那家先行者厂商叫SONY & Toshiba & 他愉悦的伙伴IBM,
主机的名字叫PlayStation 3。
那颗名留千史的CPU就叫Cell。
虽然上一代的PS 2里的EE(CPU)也有类似的状况,
但特化状况没像Cell这么严重就是。
而且EE的特化技能树是朝另外一边长的这样。
但不在这边的讨论范围所先不提。
简单地说就是PS3里面那颗Cell CPU,
跟主流的x86及ARM架构相比,
在架构特性上,
跟GPGPU里的CU单元反而比较相似,
这是由于Cell的设计,
是由一颗PPE的微处理器 + 8个SPE协同处理器结合而成。
(实际上为了良率问题只有7个SPE可用)
(但SONY又限制最后一个SPE为系统独占,所以实际上只能用6个)
每个SPE有128个128bit的entry register
(不知道这个entry register要怎么翻?)
(跟x86的相比就是限制一大堆的暂存器)
SPE无法直接存取主内存,需透过PPE的DMA。
看到这边,
PPE+SPE这种奇妙的组合是不是就有点像ROP与TMU的样子呢?
所以如果游戏开发公司如果要把PS3的性能完全发挥出来,
通常就必须进行手动调整不同SPE在执行绪上的调度,
并避免资料相依(ex:if... else)的状况在不同SPE上头发生。
简单一句话:程式很很很很很难写。
有写过的人都会想骂脏话的程度。
当年为了cell的开发,MIT还有请IBM的人到学校开课这样。
虽然IBM的确曾经有努力推这种架构。(?)
但大家都知道
惰性是人类进步的原动力。
对码农来说能省则省,能懒则懒。
所以大部份游戏对SPE的使用大多只用到3个及以下。
讲了这么多,
但Cell这个设计又与AVX有什么关系呢?
关系可大了。
当x86架构为了要模拟PS3里头的Cell时,
为了要达到与SPE相同的暂存器效能,
就必须使用AVX来获得效能的提升。
在这边稍微离题聊一下x86 SIMD的暂存器宽度与数量:
MMX:8个64bit的暂存器(仅处理整数,而且与浮器暂存器共用)
SSE:8个128bit的通用暂存器(整数or浮点,但有小限制)
SSE2:强化后的8个128bit的通用暂存器(简单说就是上面的限制解封)
SSE3:把SSE2的通用暂存器再强化,让在同一暂存器内的两个数字相加or相乘
(in x86-64)
AVX:16个256bit的通用暂存器,可用于SSE的实现与相容(128bit)
AVX2:16个256bit的通用暂存器,可用于SSE实现扩展为256bit
AVX-512:超级高大上的32个512bit的通用暂存器,并有多个变种版本
Cell SPE:128个128bit的不太通用的entry暂存器
看到这边应该马上就能想到。
x86为了跟上Cell PPE+SPE 这种奇妙又奇耙的架构,
由于AVX的暂存器在数量及宽度上的优势,相较于老旧的SSE,
绝对会是比较好的设计。
所以若是CPU若能使用AVX2指令集的话,
在跑RPCS3的时候,通常会相较没有AVX2的处理器至少多个3~5帧。
PCSX2的话就比较特别一点,
因为PCSX2对AVX2的实现,
仅在对GS(PS2的GPU)的模拟使用软件模式时才会启用。
也就是把CPU当GPU来用
在跑软件模式时,
相较于没有AVX2的处理器,也是能提高个3~5帧的效能。
总而言之。
因为模拟器这块其实蛮常遇到把CPU当GPU用的状况。
尤其是对那些家用主机的模拟。
所以AVX指令集在家机的模拟器上其实蛮常见的。
至于那个高大上的AVX-512的问题,
那就又是另外一回事了....
只能说我的看法跟Linus Torvalds差不多,
不太看好这个指令集就是。
作者: c52chungyuny (PiPiDa)   2020-07-16 00:16:00
你可以不要看好x86算了 没有特殊指令集x86根本没优势ARM指令集也是越改越肥 通用性越广就会越肥 套在windows上也是 套在x86上也是
作者: twosheep0603 (两羊)   2020-07-16 00:30:00
所以苹果准备要跳车啦XD
作者: c52chungyuny (PiPiDa)   2020-07-16 00:43:00
AMD那种粪狂烙架构就是肿瘤只会增生 每颗肿瘤塞一堆特规电路最后总成本就会炸 intel爽多了 每个产品线都精心制作仿佛丹麦骨瓷 AMD还是继续当肿瘤就好
作者: leung3740250 (jenius921)   2020-07-16 02:13:00
问题是以28c xeon为例,avx512占到的面积相当于两个核心的面积,30c跑avx2和28c跑avx512哪个会赢是显而易见的吧?linus说avx512吃太多面积完全就是没做过功课
作者: c52chungyuny (PiPiDa)   2020-07-16 13:52:00
阿不就可悲A粉才这样想 叫他们全部去舔推土机超高时脉超多核他们又不要A粉: core>>>>>>>AVX cpu不需要浮点 哈哈A粉哈哈

Links booklink

Contact Us: admin [ a t ] ucptt.com