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

PC購物

標籤:閒聊
31200

: 小弟菜雞
: 最近看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
c52chungyuny1樓你可以不要看好x86算了 沒有特殊指令集x86根本沒 07/16 00:16
c52chungyuny2樓優勢 07/16 00:16
a12345672893樓我這次同意樓上 如果把有的沒的指令集都拔了 x86就 07/16 00:19
a12345672894樓真的只是垃圾 07/16 00:19
a12345672895樓另外AVX在數值計算上其實也用很多 07/16 00:20
mmonkeyboyy6樓真的同意一樓 XDXDXD 07/16 00:22
a58524andy7樓恩幹完全不懂圖形架構 07/16 00:23
a58524andy8樓 07/16 00:23
c52chungyuny9樓ARM指令集也是越改越肥 通用性越廣就會越肥 套在 07/16 00:27
c52chungyuny10樓windows上也是 套在x86上也是 07/16 00:27
twosheep060311樓所以蘋果準備要跳車啦XD 07/16 00:30
a58524andy12樓話說Linus後續有提到他覺得arm的sve2還行 07/16 00:31
hn948041213樓奇葩(ㄆㄚ) 07/16 00:36
c52chungyuny14樓AMD那種糞狂烙架構就是腫瘤只會增生 每顆腫瘤塞 07/16 00:43
c52chungyuny15樓一堆特規電路最後總成本就會炸 intel爽多了 每個 07/16 00:43
c52chungyuny16樓產品線都精心製作彷彿丹麥骨瓷 AMD還是繼續當腫 07/16 00:43
c52chungyuny17樓瘤就好 07/16 00:43
mmonkeyboyy18樓就是來亂的沒錯 XD 07/16 01:04
giancarlo8219樓然後C52繼續回去用一代threadripper 07/16 01:12
Clarkliu20樓話說cell架構也未免太奇想天外了 這麼座的理由是? 07/16 01:33
hn948041221樓八成是被IBM拐的吧 07/16 01:47
Kuge22樓就出來跟x86競爭的啊 只看性能在當時的確很強 07/16 01:53
hn948041223樓前幾天癡漢水球的文章有寫到當時水果會脫離PPC主要 07/16 01:54
hn948041224樓是IBM根本沒有做過適用於筆電的PPC處理器 07/16 01:55
hn948041225樓套回X86的話就是筆電板的P4和Pentium M的差別 07/16 01:56
hn948041226樓所以IBM POWER在伺服器市場對上AMD和Intel在TDP上 07/16 01:57
hn948041227樓也占不到便宜 07/16 01:57
a17365200028樓推專業 07/16 01:59
mmonkeyboyy29樓IBM是太貴啦...伺服器+來說 mainframe多貴啊 07/16 01:59
mmonkeyboyy30樓一台大機貴1M 主要是處理的東西不太一樣 還有OS 07/16 02:00
延伸閱讀
[閒聊] AVX指令集實際應用是甚麼功能?
[閒聊] 一些關於 intel 和 AMD的傳聞 from reddit
[閒聊] 去某x人店內組電腦跟消費被搞到很不悅
[閒聊] 原價屋三倍券刷卡/硬碟外接盒選擇
[閒聊] 極客灣 用Mac製作影片真的更流暢嗎
Re: [閒聊] 各位會現在換還是等Ryzen 4000 Vermeer
[閒聊] 俄國佬做的Intel vs AMD短片
[閒聊] 各位會現在換還是等Ryzen 4000 Vermeer