PTT推薦

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

看板PC_Shopping標題Re: [閒聊] AVX指令集實際應用是甚麼功能?作者
abac1230
(Planck超帥)
時間推噓51 推:51 噓:0 →:172

※ 引述《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留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.168.176.74 (臺灣)
PTT 網址

c52chungyuny07/16 00:16你可以不要看好x86算了 沒有特殊指令集x86根本沒

c52chungyuny07/16 00:16優勢

a1234567289 07/16 00:19我這次同意樓上 如果把有的沒的指令集都拔了 x86就

a1234567289 07/16 00:19真的只是垃圾

a1234567289 07/16 00:20另外AVX在數值計算上其實也用很多

mmonkeyboyy 07/16 00:22真的同意一樓 XDXDXD

a58524andy 07/16 00:23恩幹完全不懂圖形架構

a58524andy 07/16 00:23

c52chungyuny07/16 00:27ARM指令集也是越改越肥 通用性越廣就會越肥 套在

c52chungyuny07/16 00:27windows上也是 套在x86上也是

twosheep060307/16 00:30所以蘋果準備要跳車啦XD

a58524andy 07/16 00:31話說Linus後續有提到他覺得arm的sve2還行

hn9480412 07/16 00:36奇葩(ㄆㄚ)

c52chungyuny07/16 00:43AMD那種糞狂烙架構就是腫瘤只會增生 每顆腫瘤塞

c52chungyuny07/16 00:43一堆特規電路最後總成本就會炸 intel爽多了 每個

c52chungyuny07/16 00:43產品線都精心製作彷彿丹麥骨瓷 AMD還是繼續當腫

c52chungyuny07/16 00:43瘤就好

mmonkeyboyy 07/16 01:04就是來亂的沒錯 XD

giancarlo82 07/16 01:12然後C52繼續回去用一代threadripper

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

hn9480412 07/16 01:47八成是被IBM拐的吧

Kuge 07/16 01:53就出來跟x86競爭的啊 只看性能在當時的確很強

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

hn9480412 07/16 01:55是IBM根本沒有做過適用於筆電的PPC處理器

hn9480412 07/16 01:56套回X86的話就是筆電板的P4和Pentium M的差別

hn9480412 07/16 01:57所以IBM POWER在伺服器市場對上AMD和Intel在TDP上

hn9480412 07/16 01:57也占不到便宜

a173652000 07/16 01:59推專業

mmonkeyboyy 07/16 01:59IBM是太貴啦...伺服器+來說 mainframe多貴啊

mmonkeyboyy 07/16 02:00一台大機貴1M 主要是處理的東西不太一樣 還有OS

mmonkeyboyy 07/16 02:00但近來開始擁抱LINUX一定是好事啊

mmonkeyboyy 07/16 02:00cell IBM自己都砍了~~主要是在軟體優化太複雜

mmonkeyboyy 07/16 02:01我遇過設計CELL硬體 軟體 應用三種人

mmonkeyboyy 07/16 02:02這三種人講的話都合不起來了 還能怎麼期待

leung374025007/16 02:13問題是以28c xeon為例,avx512佔到的面積相當於兩

leung374025007/16 02:13個核心的面積,30c跑avx2和28c跑avx512哪個會贏是

leung374025007/16 02:13顯而易見的吧?

leung374025007/16 02:19linus說avx512吃太多面積完全就是沒做過功課

mmonkeyboyy 07/16 02:31avx512就設計角度來看 就是太浪費 讓設計成本上升

mmonkeyboyy 07/16 02:32使用率不見得高 其實我一直不懂為什麼要這些指令

arrenwu 07/16 02:33AVX vs GPU 比的是不是就看你應用對某些程序的延遲

arrenwu 07/16 02:33啊?

mmonkeyboyy 07/16 02:34我講的是CPU設計成本 那個真的蠻難做的 囧>

mmonkeyboyy 07/16 02:35樓樓上板友 你指的是如果全速下 如果沒用到就浪費

mmonkeyboyy 07/16 02:35了 所以他的意思是不如用來做別的

mmonkeyboyy 07/16 02:38frequency scaling也是問題

arrenwu 07/16 02:38我對AVX跟GPU的理解是,他們兩個幹的事情很像

arrenwu 07/16 02:39只是因為CPU較AVX做事情溝通速度快,而要叫GPU做事

arrenwu 07/16 02:39因為要通過比較長的路徑會有比較大的延遲

arrenwu 07/16 02:39而如果你整個應用充滿超多有點大有不太大的向量,那

arrenwu 07/16 02:40叫GPU做可能延遲會搞得整個運算很沒有效率

arrenwu 07/16 02:41不過我想得到的應用也只有轉檔

mmonkeyboyy 07/16 02:56其實不一定 跟單元數也有關 還有資料路徑

mmonkeyboyy 07/16 02:56avx不一定有太多好處 理論上看起來是有

mmonkeyboyy 07/16 02:56實際上是你資料還是要去塞車

mmonkeyboyy 07/16 02:58拿個gem5去跑就看得到了(看起來很好就是了)

leung374025007/16 03:01https://i.imgur.com/Kv8yD5b.jpg

圖 AVX指令集實際應用是甚麼功能?

leung374025007/16 03:02我是覺得avx512遠比兩個核心的效益更多

mmonkeyboyy 07/16 03:030.9mm2 真不小哦XD

leung374025007/16 03:03就算avx512會降頻,能效比依舊比avx2高

mmonkeyboyy 07/16 03:03我是沒有拿到這個數字 不過你分享了就太好了

mmonkeyboyy 07/16 03:03你要看在cpu做用中 有多少機會會用到啊

mmonkeyboyy 07/16 03:05這就是為什麼會跑 spec這種東西

leung374025007/16 03:07這是優化問題而不是avx512沒有用的問題,其次也要

leung374025007/16 03:07怪牙膏10nm瘋狂delay,10nm跑avx512至少不會搞出7

leung374025007/16 03:07980xe那種破千瓦的功耗

mmonkeyboyy 07/16 03:09不好優化 跟沒有用 或是用不到 有時是同義字

aegis43210 07/16 03:09不過老黃也推出magnum io來解決延遲問題

leung374025007/16 03:090.9*28才25mm,兩顆核心顯然換不到avx512理想中的

leung374025007/16 03:09效益

mmonkeyboyy 07/16 03:09這就是cell失敗的原因之一

leung374025007/16 03:10設計思路是沒有錯,用結果去推翻設計思路就是結果

leung374025007/16 03:10論而已

mmonkeyboyy 07/16 03:10他可以不要換核 可以換別的 分支預測的之類的

mmonkeyboyy 07/16 03:10而且我認為他們正在這麼做 XDXDXDXD

leung374025007/16 03:11像10nm delay對牙膏是意料之外的事情

mmonkeyboyy 07/16 03:11結果論另一個方向的思考就是在設計階段沒有做全盤考

mmonkeyboyy 07/16 03:11量 這點同cell上也被證明 規格理想化 工程師x!

leung374025007/16 03:12我主要是反駁linus用核心替換avx512的說法,用來幹

leung374025007/16 03:12其它事可以,但絕對不是加2顆核心那麼智障

aegis43210 07/16 03:12之後還有直連儲存的GPUDirect storage

mmonkeyboyy 07/16 03:12他....有他的看法嘛 可能他的應用就是多兩個核好

mmonkeyboyy 07/16 03:13其實真沒有誰好誰壞 都要看場景應用@_@~

mmonkeyboyy 07/16 03:13他賣的是general purpose CPU 說閒話的一定很多啊

leung374025007/16 03:16以28c為例,xeon多兩顆核心理論上會多7%的性能,然

leung374025007/16 03:16而實際應用上能多3%就偷笑了,我是覺得作為一個業

leung374025007/16 03:16內資深人士就算要噴也不是用這種連大學生水準都不

leung374025007/16 03:16如的方式去噴

mmonkeyboyy 07/16 03:18就.... 這也不是他本行嘛orz

GUNIT6968 07/16 03:21推長知識

pcfox 07/16 03:42發在這邊林大師看不到

miname 07/16 05:11誒 linus有說要用核心去換嗎?

miname 07/16 05:12還是他改名叫David 了?

friedpig 07/16 05:15拿通用去想cp值就錯拉 這擺明就是給少數大戶用的as

friedpig 07/16 05:15ic 人家就是付比你多錢 就是有需求 大家一起被逼著

friedpig 07/16 05:15攤成本 誰叫你小咖

arrenwu 07/16 05:19大戶現在真的需要用這種ASIC嗎?

friedpig 07/16 05:21B大之前就有透漏過了 這東西使用單位來的需求 牙

friedpig 07/16 05:21膏王沒那麼無聊

arrenwu 07/16 05:21有文章聯結嗎?

friedpig 07/16 05:22後面還有更極端的ai類的半精度指令集勒 這些也是很

friedpig 07/16 05:22多人用不到但是dc大戶有需求的 原文fb就是個例子

arrenwu 07/16 05:24AI的16bit float 運算現在不是交給顯卡做嗎?

arrenwu 07/16 05:25我感覺這爭論就是為什麼這類工作不交給GPU就好

friedpig 07/16 05:26把牙膏王認為是設計本文的公司出發點就錯了 人家fa

friedpig 07/16 05:26b為主 設計很大需求配合客戶 所以高機率不是牙膏想

friedpig 07/16 05:26推新玩意 是客戶有需求 設計單位就乖乖算個成本有辦

friedpig 07/16 05:26法做就幫忙做一下

friedpig 07/16 05:30資料交換又不是不用時間 不是所有case都是那麼極端

friedpig 07/16 05:30的要那麼大量算啊 cpu在少loading的 等你資料傳給cp

friedpig 07/16 05:30u都不知道處理好幾次了

friedpig 07/16 05:30gpu*

friedpig 07/16 05:32講gpu很強的先去考慮HSA到底實務上能戰了沒吧

friedpig 07/16 05:34另外一個點是牙膏王家大業大 又沒說做了avx就沒錢

friedpig 07/16 05:34玩HSA FPGA 為什麼講的好像做了ASIC其他東西都沒做

friedpig 07/16 05:34一樣 人家有錢就是任性 我全都要好不

friedpig 07/16 05:58 牙膏王去年dc的營收是20B 講極端點就算只有一個10%

friedpig 07/16 05:58左右的大戶需要這個功能 這也是影響2B的生意了 差

friedpig 07/16 05:58不多1/3個AMD全營收 那一點點小面積CP值夠不夠在考

friedpig 07/16 05:58慮看看吧

kqalea 07/16 06:57太浪費核心面積

kqalea 07/16 07:00隨便一張入門級顯卡就屌打AVX-512的效能

mmonkeyboyy 07/16 08:03AVX 不負責任猜測 就跟玩wintel是一個套路啊

mmonkeyboyy 07/16 08:06對太浪費核心面積+太難優化 那個clock 哎額~

menshuei 07/16 08:44拜偷厚,才三到五楨還要大費周章,簡直太不符合人

menshuei 07/16 08:44類懶惰的天性了。

NX9999 07/16 08:53C52怎麼那麼懂!!!!交了女朋友就變和運租車了,推推

mmonkeyboyy 07/16 08:55回二樓 AVX在數值上好用多了XD 但很多人都不知道

mmonkeyboyy 07/16 08:56要怎麼使用 程式開發商也很多在打混XD

superRKO 07/16 08:59謝大大科普

kira925 07/16 08:59要說HSA APU這種內建GPU的好像沒看怎麼在用...

mmonkeyboyy 07/16 09:00這幾年看Intel HSA FPGA怎麼戰 市場愈戰愈小XD

mmonkeyboyy 07/16 09:00都是記憶體的問題 ~~

mmonkeyboyy 07/16 09:01要是無法從LLC轉資料進來保證連續性 那HSA

mmonkeyboyy 07/16 09:02就是沒有搞頭

ATand 07/16 09:10所以我明白Apple為什麼處心積慮要自己製作CPU了...

mmonkeyboyy 07/16 09:23嗯啊 光被那個啟動坑死就不知道幾次了呢

mmonkeyboyy 07/16 09:23阿婆直接說不要AVX了啊 XDXD

friedpig 07/16 09:27阿婆量不大不小的 說不要牙膏還是要想想

friedpig 07/16 09:27叫阿婆自己吐錢開光罩 阿婆那種死要錢的絕對裝死

friedpig 07/16 09:28最後就乖乖分手自己想幹嘛就幹嘛 不過到底最後會怎

friedpig 07/16 09:28樣還有得看下去

cancelpc 07/16 09:31我是開發者也不想用,因為用了AVX也得再寫一份不用A

cancelpc 07/16 09:31VX版本(不是每個USER電腦CPU都有,更況AVX版本一

cancelpc 07/16 09:31堆,說不定連用AVX還得各寫一版)

mmonkeyboyy 07/16 09:32

friedpig 07/16 09:35所以這種髒活牙膏王也出了一堆人在做complier阿

friedpig 07/16 09:37而且真正的需求單位 那幾間巨獸鐵定是特別優化的

friedpig 07/16 09:37大家小咖就被強迫當分母 可憐娜

friedpig 07/16 09:41牙膏王看起來做了一堆CP值很低的事情 但是人家就是

friedpig 07/16 09:41錢多到不知道怎麼花 要做到90分很容易 但90->99就是

friedpig 07/16 09:42要做一堆這種CP值很低的事 但壟斷後帶來的效益又是

friedpig 07/16 09:42巨大

mmonkeyboyy 07/16 09:42就阿逗逼~~~~啊

mmonkeyboyy 07/16 09:43就是當年wintel模式

friedpig 07/16 09:44以小公司的心態去思考牙膏王在幹嘛就錯了 不像AMD壓

friedpig 07/16 09:44寶個HSA就差點把自己搞到去了 人家什麼都玩全部都

friedpig 07/16 09:44失敗還是有很多本錢玩下一輪

friedpig 07/16 09:45所以才是無敵中離王 反正什麼都可以玩 也什麼都可以

friedpig 07/16 09:45放棄 除了FAB以外 都是身外物

mmonkeyboyy 07/16 09:46說到中離王 隔壁的I才是大神呢

mmonkeyboyy 07/16 09:46FAB都能丟的中離王

mmonkeyboyy 07/16 09:47HSA本身沒什麼問題 問題在那堆MBA

friedpig 07/16 09:48我覺得主要是討論都討論得太理想了 這些技術在理想

friedpig 07/16 09:48上或極端Case上都是好的 但是現實世界哪有這麼好

friedpig 07/16 09:49一堆界在中間的東西 沒錢當然是不浪費資源作過度

friedpig 07/16 09:49產品 但人家有錢就是任性

mmonkeyboyy 07/16 09:50就是一個爭權奪利的歷史 這有點內幕的

mmonkeyboyy 07/16 09:51總之 消費者用了就 看hp dell轉換就知道了

friedpig 07/16 09:53說真的 要不是會被告 牙膏王把ARM買下來做低功耗解

friedpig 07/16 09:54絕方案都可以了

Nexus5X 07/16 10:11設計本來就要配合客戶啊,不是只有牙膏這樣子

Nexus5X 07/16 10:11啊不是說AVX512是微軟要求的嗎XDD

arrenwu 07/16 11:15我是覺得...Intel也沒有到錢多到不知道怎麼花啦

arrenwu 07/16 11:15至少我在Intel工作的朋友覺得內部很多人事不安的

arrenwu 07/16 11:18至於收購,你還得先問Softbank想不想賣哩

hcwang1126 07/16 11:39把10nm想得太美好 漏電有很好處理了嗎?

ATand 07/16 11:40漏電這種事情用PPT就可以處理起來了,歹就卜

mayjan 07/16 12:14反正AMD就對了 INTEL阿斗化

leung374025007/16 12:1510+漏電率沒處理好怎麼上4.8g?

saito2190 07/16 12:42馬的我居然看得懂,太神啦

a1234567289 07/16 12:58CPU是強Sequential GPU強在parallel ML就是parallel

a1234567289 07/16 12:58到極致才在GPU上算的 這已經是極端狀況了 AVX的價值

a1234567289 07/16 12:58就是補CPU的浮點能力 在parallel不那麼高的任務之下

a1234567289 07/16 12:58CPU肯定快得多

a1234567289 07/16 13:01如果覺得GPU浮點那麼強 幹嘛不全都丟給GPU算 可以試

a1234567289 07/16 13:01著建議Intel把FPU直接拔了

glittering 07/16 13:40水果用的是水果自己開的特規無誤 IO有差

glittering 07/16 13:41所以有一兩個大戶要開指令集也不會特別奇怪

leung374025007/16 13:43很多人都覺得parallel萬能啊,對他們來說堆核能夠

leung374025007/16 13:43解決一切問題

c52chungyuny07/16 13:52阿不就可悲A粉才這樣想 叫他們全部去舔推土機超高

c52chungyuny07/16 13:52時脈超多核他們又不要

c52chungyuny07/16 13:53A粉: core>>>>>>>AVX cpu不需要浮點 哈哈A粉哈

c52chungyuny07/16 13:53

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

arrenwu 07/16 14:16這邊AVX跟FPU要分開來討論啦

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

a1234567289 07/16 14:37存在的意義是什麼

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

a1234567289 07/16 14:45去GPU再拿回來的overhead太高 除非問題的規模太大

a1234567289 07/16 14:45 才有把東西送去GPU的價值

a1234567289 07/16 14:50且Sequential可以換parallel 反之不能 換句話說CPU

a1234567289 07/16 14:50更加的靈活 此外除非本身就是設計來用作科學計算的

a1234567289 07/16 14:50 否則GPU主要的設計都是算單精度 而CPU AVX甚至能算

a1234567289 07/16 14:50四倍精或八倍精

a1234567289 07/16 14:56有四倍精的幫助下 CPU算出來的雙倍精可以有更少的ro

a1234567289 07/16 14:56und off error

aegis43210 07/16 19:32還是看老黃怎麼出絕招讓i皇和蘇媽跟他合作

kuma660224 07/17 05:51AVX512不是FPU.

kuma660224 07/17 05:52它其實沒有什麼4倍8倍精度這種事

kuma660224 07/17 05:53他講的16wide x 32bit就是單精度

kuma660224 07/17 05:53跟GPU一樣是拼大規模運算

kuma660224 07/17 05:54所以larrabee當初是拿它來繪圖

kuma660224 07/17 05:55不要把能浮點運算就當成FPU

kuma660224 07/17 05:56SIMD它.

kuma660224 07/17 05:56.

kuma660224 07/17 05:56超寬SIMD單位都不是要拼精度的

kuma660224 07/17 05:57現在AVX512甚至是刻意往超低精度走

kuma660224 07/17 05:57跟GPU一樣,因為AI用途不需精度

kuma660224 07/17 05:58講白了,這東西適合用途跟GPU超重疊

kuma660224 07/17 05:58但你可以沒有AVX, 卻不能沒有GPU

kuma660224 07/17 05:58所以商業發展在立足點就輸了