※ 本文轉寄自 ptt.cc 更新時間: 2020-07-16 03:23:21
看板 PC_Shopping
作者 標題 Re: [閒聊] AVX指令集實際應用是甚麼功能?
時間 Thu Jul 16 00:08:31 2020
※ 引述《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 (臺灣)
※ 文章代碼(AID): #1V3oe2OW (PC_Shopping)
※ 文章網址: https://www.ptt.cc/bbs/PC_Shopping/M.1594829314.A.620.html
※ 同主題文章:
07-15 19:06 ■ [閒聊] AVX指令集實際應用是甚麼功能?
● 07-16 00:08 ■ Re: [閒聊] AVX指令集實際應用是甚麼功能?
07-16 16:27 ■ Re: [閒聊] AVX指令集實際應用是甚麼功能?
推 : 你可以不要看好x86算了 沒有特殊指令集x86根本沒1F 07/16 00:16
→ : 優勢
→ : 優勢
推 : 我這次同意樓上 如果把有的沒的指令集都拔了 x86就3F 07/16 00:19
→ : 真的只是垃圾
→ : 另外AVX在數值計算上其實也用很多
→ : 真的只是垃圾
→ : 另外AVX在數值計算上其實也用很多
推 : 真的同意一樓 XDXDXD6F 07/16 00:22
推 : 恩幹完全不懂圖形架構7F 07/16 00:23
→ : 慘
→ : 慘
→ : ARM指令集也是越改越肥 通用性越廣就會越肥 套在9F 07/16 00:27
→ : windows上也是 套在x86上也是
→ : windows上也是 套在x86上也是
推 : 所以蘋果準備要跳車啦XD11F 07/16 00:30
→ : 話說Linus後續有提到他覺得arm的sve2還行12F 07/16 00:31
→ : 奇葩(ㄆㄚ)13F 07/16 00:36
推 : AMD那種糞狂烙架構就是腫瘤只會增生 每顆腫瘤塞14F 07/16 00:43
→ : 一堆特規電路最後總成本就會炸 intel爽多了 每個
→ : 產品線都精心製作彷彿丹麥骨瓷 AMD還是繼續當腫
→ : 瘤就好
→ : 一堆特規電路最後總成本就會炸 intel爽多了 每個
→ : 產品線都精心製作彷彿丹麥骨瓷 AMD還是繼續當腫
→ : 瘤就好
推 : 就是來亂的沒錯 XD18F 07/16 01:04
→ : 然後C52繼續回去用一代threadripper19F 07/16 01:12
→ : 話說cell架構也未免太奇想天外了 這麼座的理由是?20F 07/16 01:33
→ : 八成是被IBM拐的吧21F 07/16 01:47
→ : 就出來跟x86競爭的啊 只看性能在當時的確很強22F 07/16 01:53
→ : 前幾天癡漢水球的文章有寫到當時水果會脫離PPC主要23F 07/16 01:54
→ : 是IBM根本沒有做過適用於筆電的PPC處理器
→ : 套回X86的話就是筆電板的P4和Pentium M的差別
→ : 所以IBM POWER在伺服器市場對上AMD和Intel在TDP上
→ : 也占不到便宜
→ : 是IBM根本沒有做過適用於筆電的PPC處理器
→ : 套回X86的話就是筆電板的P4和Pentium M的差別
→ : 所以IBM POWER在伺服器市場對上AMD和Intel在TDP上
→ : 也占不到便宜
推 : 推專業28F 07/16 01:59
推 : IBM是太貴啦...伺服器+來說 mainframe多貴啊29F 07/16 01:59
→ : 一台大機貴1M 主要是處理的東西不太一樣 還有OS
→ : 但近來開始擁抱LINUX一定是好事啊
→ : cell IBM自己都砍了~~主要是在軟體優化太複雜
→ : 我遇過設計CELL硬體 軟體 應用三種人
→ : 這三種人講的話都合不起來了 還能怎麼期待
→ : 一台大機貴1M 主要是處理的東西不太一樣 還有OS
→ : 但近來開始擁抱LINUX一定是好事啊
→ : cell IBM自己都砍了~~主要是在軟體優化太複雜
→ : 我遇過設計CELL硬體 軟體 應用三種人
→ : 這三種人講的話都合不起來了 還能怎麼期待
→ : 問題是以28c xeon為例,avx512佔到的面積相當於兩35F 07/16 02:13
→ : 個核心的面積,30c跑avx2和28c跑avx512哪個會贏是
→ : 顯而易見的吧?
→ : linus說avx512吃太多面積完全就是沒做過功課
→ : 個核心的面積,30c跑avx2和28c跑avx512哪個會贏是
→ : 顯而易見的吧?
→ : linus說avx512吃太多面積完全就是沒做過功課
推 : avx512就設計角度來看 就是太浪費 讓設計成本上升39F 07/16 02:31
→ : 使用率不見得高 其實我一直不懂為什麼要這些指令
→ : 使用率不見得高 其實我一直不懂為什麼要這些指令
推 : AVX vs GPU 比的是不是就看你應用對某些程序的延遲41F 07/16 02:33
→ : 啊?
→ : 啊?
→ : 我講的是CPU設計成本 那個真的蠻難做的 囧>43F 07/16 02:34
→ : 樓樓上板友 你指的是如果全速下 如果沒用到就浪費
→ : 了 所以他的意思是不如用來做別的
推 : frequency scaling也是問題
→ : 樓樓上板友 你指的是如果全速下 如果沒用到就浪費
→ : 了 所以他的意思是不如用來做別的
推 : frequency scaling也是問題
推 : 我對AVX跟GPU的理解是,他們兩個幹的事情很像47F 07/16 02:38
→ : 只是因為CPU較AVX做事情溝通速度快,而要叫GPU做事
→ : 因為要通過比較長的路徑會有比較大的延遲
→ : 而如果你整個應用充滿超多有點大有不太大的向量,那
→ : 叫GPU做可能延遲會搞得整個運算很沒有效率
→ : 不過我想得到的應用也只有轉檔
→ : 只是因為CPU較AVX做事情溝通速度快,而要叫GPU做事
→ : 因為要通過比較長的路徑會有比較大的延遲
→ : 而如果你整個應用充滿超多有點大有不太大的向量,那
→ : 叫GPU做可能延遲會搞得整個運算很沒有效率
→ : 不過我想得到的應用也只有轉檔
推 : 其實不一定 跟單元數也有關 還有資料路徑53F 07/16 02:56
→ : avx不一定有太多好處 理論上看起來是有
→ : 實際上是你資料還是要去塞車
→ : 拿個gem5去跑就看得到了(看起來很好就是了)
→ : avx不一定有太多好處 理論上看起來是有
→ : 實際上是你資料還是要去塞車
→ : 拿個gem5去跑就看得到了(看起來很好就是了)
→ : 我是覺得avx512遠比兩個核心的效益更多58F 07/16 03:02
推 : 0.9mm2 真不小哦XD59F 07/16 03:03
→ : 就算avx512會降頻,能效比依舊比avx2高60F 07/16 03:03
→ : 我是沒有拿到這個數字 不過你分享了就太好了61F 07/16 03:03
→ : 你要看在cpu做用中 有多少機會會用到啊
→ : 這就是為什麼會跑 spec這種東西
→ : 你要看在cpu做用中 有多少機會會用到啊
→ : 這就是為什麼會跑 spec這種東西
→ : 這是優化問題而不是avx512沒有用的問題,其次也要64F 07/16 03:07
→ : 怪牙膏10nm瘋狂delay,10nm跑avx512至少不會搞出7
→ : 980xe那種破千瓦的功耗
→ : 怪牙膏10nm瘋狂delay,10nm跑avx512至少不會搞出7
→ : 980xe那種破千瓦的功耗
推 : 不好優化 跟沒有用 或是用不到 有時是同義字67F 07/16 03:09
推 : 不過老黃也推出magnum io來解決延遲問題68F 07/16 03:09
→ : 0.9*28才25mm,兩顆核心顯然換不到avx512理想中的69F 07/16 03:09
→ : 效益
→ : 效益
→ : 這就是cell失敗的原因之一71F 07/16 03:09
→ : 設計思路是沒有錯,用結果去推翻設計思路就是結果72F 07/16 03:10
→ : 論而已
→ : 論而已
→ : 他可以不要換核 可以換別的 分支預測的之類的74F 07/16 03:10
→ : 而且我認為他們正在這麼做 XDXDXDXD
→ : 而且我認為他們正在這麼做 XDXDXDXD
→ : 像10nm delay對牙膏是意料之外的事情76F 07/16 03:11
→ : 結果論另一個方向的思考就是在設計階段沒有做全盤考77F 07/16 03:11
→ : 量 這點同cell上也被證明 規格理想化 工程師x!
→ : 量 這點同cell上也被證明 規格理想化 工程師x!
→ : 我主要是反駁linus用核心替換avx512的說法,用來幹79F 07/16 03:12
→ : 其它事可以,但絕對不是加2顆核心那麼智障
→ : 其它事可以,但絕對不是加2顆核心那麼智障
推 : 之後還有直連儲存的GPUDirect storage81F 07/16 03:12
→ : 他....有他的看法嘛 可能他的應用就是多兩個核好82F 07/16 03:12
→ : 其實真沒有誰好誰壞 都要看場景應用@_@~
→ : 其實真沒有誰好誰壞 都要看場景應用@_@~
--
※ 看板: PC_Shopping 文章推薦值: 0 目前人氣: 0 累積人氣: 4661
→
guest
回列表(←)
分享