Re: [閒聊] AVX指令集實際應用是甚麼功能?

看板PC_Shopping作者 (Planck超帥)時間5年前 (2020/07/16 00:08), 編輯推噓51(510172)
留言223則, 31人參與, 5年前最新討論串2/3 (看更多)
※ 引述《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差不多, 不太看好這個指令集就是。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.168.176.74 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/PC_Shopping/M.1594829314.A.620.html

07/16 00:16, 5年前 , 1F
你可以不要看好x86算了 沒有特殊指令集x86根本沒
07/16 00:16, 1F

07/16 00:16, 5年前 , 2F
優勢
07/16 00:16, 2F

07/16 00:19, 5年前 , 3F
我這次同意樓上 如果把有的沒的指令集都拔了 x86就
07/16 00:19, 3F

07/16 00:19, 5年前 , 4F
真的只是垃圾
07/16 00:19, 4F

07/16 00:20, 5年前 , 5F
另外AVX在數值計算上其實也用很多
07/16 00:20, 5F

07/16 00:22, 5年前 , 6F
真的同意一樓 XDXDXD
07/16 00:22, 6F

07/16 00:23, 5年前 , 7F
恩幹完全不懂圖形架構
07/16 00:23, 7F

07/16 00:23, 5年前 , 8F
07/16 00:23, 8F

07/16 00:27, 5年前 , 9F
ARM指令集也是越改越肥 通用性越廣就會越肥 套在
07/16 00:27, 9F

07/16 00:27, 5年前 , 10F
windows上也是 套在x86上也是
07/16 00:27, 10F

07/16 00:30, 5年前 , 11F
所以蘋果準備要跳車啦XD
07/16 00:30, 11F

07/16 00:31, 5年前 , 12F
話說Linus後續有提到他覺得arm的sve2還行
07/16 00:31, 12F

07/16 00:36, 5年前 , 13F
奇葩(ㄆㄚ)
07/16 00:36, 13F

07/16 00:43, 5年前 , 14F
AMD那種糞狂烙架構就是腫瘤只會增生 每顆腫瘤塞
07/16 00:43, 14F

07/16 00:43, 5年前 , 15F
一堆特規電路最後總成本就會炸 intel爽多了 每個
07/16 00:43, 15F

07/16 00:43, 5年前 , 16F
產品線都精心製作彷彿丹麥骨瓷 AMD還是繼續當腫
07/16 00:43, 16F

07/16 00:43, 5年前 , 17F
瘤就好
07/16 00:43, 17F

07/16 01:04, 5年前 , 18F
就是來亂的沒錯 XD
07/16 01:04, 18F

07/16 01:12, 5年前 , 19F
然後C52繼續回去用一代threadripper
07/16 01:12, 19F

07/16 01:33, 5年前 , 20F
話說cell架構也未免太奇想天外了 這麼座的理由是?
07/16 01:33, 20F

07/16 01:47, 5年前 , 21F
八成是被IBM拐的吧
07/16 01:47, 21F

07/16 01:53, 5年前 , 22F
就出來跟x86競爭的啊 只看性能在當時的確很強
07/16 01:53, 22F

07/16 01:54, 5年前 , 23F
前幾天癡漢水球的文章有寫到當時水果會脫離PPC主要
07/16 01:54, 23F

07/16 01:55, 5年前 , 24F
是IBM根本沒有做過適用於筆電的PPC處理器
07/16 01:55, 24F

07/16 01:56, 5年前 , 25F
套回X86的話就是筆電板的P4和Pentium M的差別
07/16 01:56, 25F

07/16 01:57, 5年前 , 26F
所以IBM POWER在伺服器市場對上AMD和Intel在TDP上
07/16 01:57, 26F

07/16 01:57, 5年前 , 27F
也占不到便宜
07/16 01:57, 27F

07/16 01:59, 5年前 , 28F
推專業
07/16 01:59, 28F

07/16 01:59, 5年前 , 29F
IBM是太貴啦...伺服器+來說 mainframe多貴啊
07/16 01:59, 29F

07/16 02:00, 5年前 , 30F
一台大機貴1M 主要是處理的東西不太一樣 還有OS
07/16 02:00, 30F

07/16 02:00, 5年前 , 31F
但近來開始擁抱LINUX一定是好事啊
07/16 02:00, 31F

07/16 02:00, 5年前 , 32F
cell IBM自己都砍了~~主要是在軟體優化太複雜
07/16 02:00, 32F

07/16 02:01, 5年前 , 33F
我遇過設計CELL硬體 軟體 應用三種人
07/16 02:01, 33F

07/16 02:02, 5年前 , 34F
這三種人講的話都合不起來了 還能怎麼期待
07/16 02:02, 34F

07/16 02:13, 5年前 , 35F
問題是以28c xeon為例,avx512佔到的面積相當於兩
07/16 02:13, 35F

07/16 02:13, 5年前 , 36F
個核心的面積,30c跑avx2和28c跑avx512哪個會贏是
07/16 02:13, 36F

07/16 02:13, 5年前 , 37F
顯而易見的吧?
07/16 02:13, 37F

07/16 02:19, 5年前 , 38F
linus說avx512吃太多面積完全就是沒做過功課
07/16 02:19, 38F

07/16 02:31, 5年前 , 39F
avx512就設計角度來看 就是太浪費 讓設計成本上升
07/16 02:31, 39F
還有 144 則推文
07/16 12:58, 5年前 , 184F
就是補CPU的浮點能力 在parallel不那麼高的任務之下
07/16 12:58, 184F

07/16 12:58, 5年前 , 185F
CPU肯定快得多
07/16 12:58, 185F

07/16 13:01, 5年前 , 186F
如果覺得GPU浮點那麼強 幹嘛不全都丟給GPU算 可以試
07/16 13:01, 186F

07/16 13:01, 5年前 , 187F
著建議Intel把FPU直接拔了
07/16 13:01, 187F

07/16 13:40, 5年前 , 188F
水果用的是水果自己開的特規無誤 IO有差
07/16 13:40, 188F

07/16 13:41, 5年前 , 189F
所以有一兩個大戶要開指令集也不會特別奇怪
07/16 13:41, 189F

07/16 13:43, 5年前 , 190F
很多人都覺得parallel萬能啊,對他們來說堆核能夠
07/16 13:43, 190F

07/16 13:43, 5年前 , 191F
解決一切問題
07/16 13:43, 191F

07/16 13:52, 5年前 , 192F
阿不就可悲A粉才這樣想 叫他們全部去舔推土機超高
07/16 13:52, 192F

07/16 13:52, 5年前 , 193F
時脈超多核他們又不要
07/16 13:52, 193F

07/16 13:53, 5年前 , 194F
A粉: core>>>>>>>AVX cpu不需要浮點 哈哈A粉哈
07/16 13:53, 194F

07/16 13:53, 5年前 , 195F
07/16 13:53, 195F

07/16 14:15, 5年前 , 196F
可是I的產品也不是都有放,那沒放的I是要賣誰(?)
07/16 14:15, 196F

07/16 14:16, 5年前 , 197F
這邊AVX跟FPU要分開來討論啦
07/16 14:16, 197F

07/16 14:37, 5年前 , 198F
我是故意混在一起的 如果什麼浮點都能給GPU算 那FPU
07/16 14:37, 198F

07/16 14:37, 5年前 , 199F
存在的意義是什麼
07/16 14:37, 199F

07/16 14:45, 5年前 , 200F
其實主要的理由就像arrenwu大前面講的那樣 把資料送
07/16 14:45, 200F

07/16 14:45, 5年前 , 201F
去GPU再拿回來的overhead太高 除非問題的規模太大
07/16 14:45, 201F

07/16 14:45, 5年前 , 202F
才有把東西送去GPU的價值
07/16 14:45, 202F

07/16 14:50, 5年前 , 203F
且Sequential可以換parallel 反之不能 換句話說CPU
07/16 14:50, 203F

07/16 14:50, 5年前 , 204F
更加的靈活 此外除非本身就是設計來用作科學計算的
07/16 14:50, 204F

07/16 14:50, 5年前 , 205F
否則GPU主要的設計都是算單精度 而CPU AVX甚至能算
07/16 14:50, 205F

07/16 14:50, 5年前 , 206F
四倍精或八倍精
07/16 14:50, 206F

07/16 14:56, 5年前 , 207F
有四倍精的幫助下 CPU算出來的雙倍精可以有更少的ro
07/16 14:56, 207F

07/16 14:56, 5年前 , 208F
und off error
07/16 14:56, 208F

07/16 19:32, 5年前 , 209F
還是看老黃怎麼出絕招讓i皇和蘇媽跟他合作
07/16 19:32, 209F

07/17 05:51, 5年前 , 210F
AVX512不是FPU.
07/17 05:51, 210F

07/17 05:52, 5年前 , 211F
它其實沒有什麼4倍8倍精度這種事
07/17 05:52, 211F

07/17 05:53, 5年前 , 212F
他講的16wide x 32bit就是單精度
07/17 05:53, 212F

07/17 05:53, 5年前 , 213F
跟GPU一樣是拼大規模運算
07/17 05:53, 213F

07/17 05:54, 5年前 , 214F
所以larrabee當初是拿它來繪圖
07/17 05:54, 214F

07/17 05:55, 5年前 , 215F
不要把能浮點運算就當成FPU
07/17 05:55, 215F

07/17 05:56, 5年前 , 216F
SIMD它.
07/17 05:56, 216F

07/17 05:56, 5年前 , 217F
.
07/17 05:56, 217F

07/17 05:56, 5年前 , 218F
超寬SIMD單位都不是要拼精度的
07/17 05:56, 218F

07/17 05:57, 5年前 , 219F
現在AVX512甚至是刻意往超低精度走
07/17 05:57, 219F

07/17 05:57, 5年前 , 220F
跟GPU一樣,因為AI用途不需精度
07/17 05:57, 220F

07/17 05:58, 5年前 , 221F
講白了,這東西適合用途跟GPU超重疊
07/17 05:58, 221F

07/17 05:58, 5年前 , 222F
但你可以沒有AVX, 卻不能沒有GPU
07/17 05:58, 222F

07/17 05:58, 5年前 , 223F
所以商業發展在立足點就輸了
07/17 05:58, 223F
文章代碼(AID): #1V3oe2OW (PC_Shopping)
文章代碼(AID): #1V3oe2OW (PC_Shopping)