作者jk21234 (BL2400PT真不錯)
看板PC_Shopping
標題Re: [情報] RX480 技術情報 PPT
時間Sat Jul 2 00:32:16 2016
※ 引述《b155073 ()》之銘言:
: 原文網址:http://videocardz.com/61557/rajas-super-secret-cigar-stash
一章一章來
: http://goo.gl/i8LpCz
從1 Graphics Command Processor到 576 Load/Store Units
都是指微架購上的改進 而之外的則是較一般的規格等
: http://goo.gl/PwA5r9
Geometry Engine :
三角面處理完之後 轉換給Pixel Shader中間的這個工作,
傳統稱為Geometry Setup或者是Rasterization(但是這個會跟ROP的"R"
容易混淆)
Primtive Discard Accelerator
在把東西丟給Pixel Shader之前,如果知道這個三角面已經被遮住了
就可以先丟掉不算.反正算完也沒用..如果更確定可以連前端的Shader
都省掉
相關的技術比如Early-Z,Z-Culling,或者進階的Tile-Based Defferred
Rendering等等
然後他提到跟MSAA有關 也就是說也影響你開一般遊戲下的FSAA的設定
因為一般遊戲的FSAA僅做到MSAA,跟MSAA有關則是因為MSAA只做三角面的邊緣
跟交界,要做MSAA的像素一定會發生有的實際上有被遮住有的沒有.
Index Cache
改變資料在Cache排的方式節省頻寬 或者把原本零散的存取
變動為連續的
: http://goo.gl/KX59Iv
Shader的性能變強 但是(?
Instruction Prefetch
注意 不要跟Prefetch Instruction搞混 兩個完全不一樣
這個是說 原本處理器不分CPU/GPU,如果沒有分支就是
執行下一個指令 那下一個指令確定會被執行就應該先取進來
這樣切換的時候就保證不用等
不過除非原本就設定成保證要等 不然一定會在GPGPU/遊戲特效上
產生正面效果的幅度就不會太大...
per wave instruction buffer size
每個"wavefront"的指令緩衝區變大
wavefront是AMD GPU內的抽象化單位 他是指一起執行的最小的集合體
一個wavefront會統整N個SP,相應的Thread,相對的暫存器數量等等
(CUDA/nVidia GPU的Warp,OpenCL的Compute Unit則是同級的名詞)
然後wavefront內部 每個cycle所執行的指令都是一樣的,
既然這樣 那儲存指令緩衝區就只要每個wavefront一個就夠了
Tuned L2 Cache
可以把存取合併 然後效率變好吧
FP16/INT 16 Support
由於開始有用GPU計算Machine Learning的,
比如說Deep Neuro Network,發現用不到float32
這麼高的精確量.
如果FP16/INT16比32bit可以更快更省
那都可以產生一樣的效果
不過google更極端 直接做純INT16的晶片,
2T INT16/s的晶片只耗0.5W,以後有介紹到google VISION CHIP再說
.........然後講到這邊 還沒DX10的時候,顯示卡超過80%的運算能力
都是在算整數而且這個整數只有8-10bit...
都已經轉過來Unified的環境卻發現你丟掉的東西才是你要的........
: http://goo.gl/bGFT0m
GPU Open Intrinsic Function
Direct ACCESS to inline ISA
兩個都是同一件事情,
因為設計特殊處理器的時候,不只GPU,你可以看到DSP,Cell
等等.他會有一些很難放進高階語言描述內的指令
這時候除了整個用組合語言硬幹之外
就是使用intrinsic或者是inline Assembly的方式處理
兩個雖然叫不同名字但是是等價的,一般而言intrinsic
長的像是高階語言的function,但是一個對應一個特殊硬體指令,
而inline ISA長的像是手寫組合語言但是使用比較方便.
甚麼叫做有這個硬體指令但是高階語言很難用?
比如我隨便設計一個指令,P=A*B*C+X+Y
那編譯器一定要看到P=A*B*C+X+Y; or Q=A*B*C;P=Q+X+Y;
這樣確定的運算才可以配出這個指令
如果中間有一些不對...比如說中間同時計算過A*B和X+Y
編譯器會很開心的用算過的東西取代掉A*B和X+Y
你就配不出你設計的新指令了
所以為了避免這樣 你可能就...假設指令名稱叫XC5
P=__intrinsic_xc5(A,B,C,X,Y);
或者
__asm("XC5 P,A,B,C,X,Y");
Performance Critical Function
允許Programmer標示哪個Function
在性能上關鍵 但基本上整個最佳化應該還是要你自己來
driver環境上頂多只能幫你 不要有拖慢這個Function執行的速度的行為
比如說 把其他計算也同時排進去.
: http://goo.gl/LHeklW
Memory Controller &PHY
Losesess DCC
針對要送進顯示卡DRAM的資料可以先壓縮 而節約頻寬
過去只有Texture在讀取前預先破壞性壓縮過.
這方法的原理就是你要存的資料很多都是圖形或者Shader
算出來的資料給下一步要用的投影.特色就是有不小的機會,
你和你的相鄰像素只差一點點 那我只傳兩個的差值就可以減少一些資料.
不過Maxwell有做啦,Tonga也宣稱有,就各種可能有較好有較差的...
: http://goo.gl/hVJ4Ar
DX12 async compute
不是中圖Preemtive的傳統計算,你算一個等他回來一個
而是部分的可以預先送入 利用沒用光的資源先計算
: http://goo.gl/M29cPB
所有應用軟體的要求 都會一起堆在driver內
然後除了driver之外,硬體層也在接受要求後
內部有排程器
這部分就...除非等HSA/Fusion完全完成,
否則只有進步沒有變革性的更動.
: http://goo.gl/02NPYM
DP支援的解析度,SDR=8bit,HDR: > 8bit
: http://goo.gl/bEaPbx
HDR色域
: http://goo.gl/hVU24E
: http://goo.gl/cwxiiC
因為節約耗電量 具有的動態調節能力
(注:最初期的省電作為以能否整個關閉邏輯閘
或者是動態調整頻率來考量省電.
而之後則實作發現比如能否劇烈切換
關閉後再打開有沒有反而更耗電各種問題
: http://goo.gl/UXfV5c
: http://goo.gl/sAE9bi
: http://goo.gl/H2u1kb
: http://goo.gl/SmqyAZ
: http://goo.gl/SlbT3i
: http://goo.gl/FwgSTh
傳統的繪製 假設在環境中存在一隻攝影機
而攝影機所拍到的東西存在他自己的"底片"上
這個底片是一個平面,你看的是這個平面,而且每個像素
大小均等
那現在如果是環境中有兩支攝影機在不同地方?
還是所用的底片不是平面的 ?
想也知道這是用在那個環境的,但我們先把這兩個問題訂為
雙眼顯示和曲面螢幕
傳統方式當然可以繪製兩個攝影機所拍的東西
只是你要這個frame切換攝影機所在位置,Vertex Shader
開始就重算一次.然後下個frame又要切回來
我跳過去了 我又跳過來了 每次你都要幫我重算呦
至於非平面螢幕也可以在每個vertex Shader後,Pixel Shader
之前再套入另外一個Shader換算.
可是就要多一套計算.
那直接硬體化了就是使用他的介面就可以直接做到兩個效果
不用在軟體再中間重新計算
: http://goo.gl/AtmnVq
Reservation (Station):
只要處理器需要動態分配執行的資源,也就是說不只
GPU,連現代(1995後吧)的cpu也會有,
: http://goo.gl/lgOSXJ
對應multiGPU或者是Crossfire的重大變更
理面的AFR指的是CF採用AFR(每Frame交互計算)
但是他會產生嚴重的叫做
Micro-Stuttring的問題
這是甚麼問題我記得剛好以前有寫過
https://webptt.com/m.aspx?n=bbs/PC_Shopping/M.1336495940.A.DCA.html
簡單說FPS平均很好看 顯示出來的時間不均等 而且視覺差異更糟糕
那這個改進就是,
我AFR後算好後 我插一個延遲 到固定的時間才確定要顯示
這可以解決micro-stuttring的問題
可是我暫時懷疑一下.因為預設如果開 那麼CF後的數字就不一定漂亮
而且這個做法說不定之前多卡的時候如果有開VSYNC也不會有問題...
這就要確認了,但對不用多卡的這個功能是沒差別
: 懶人包:(只看標題)
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.72.117.179
※ 文章網址: https://webptt.com/m.aspx?n=bbs/PC_Shopping/M.1467390739.A.099.html
1F:推 brmelon : 看不懂 只能推QQ 07/02 00:37
2F:推 dctmax : 不是做電路的 看不懂+1 QQ 07/02 00:38
3F:推 jasn4570 : 無腦推就對惹 07/02 00:39
4F:推 obov : QQ 07/02 00:39
5F:推 chro924xxxx : 先推再看 07/02 00:40
6F:推 MrDisgrace : 看無推QQ 07/02 00:40
7F:推 kuninaka : 推 07/02 00:40
8F:→ chro924xxxx : 阿 看不懂QQ 07/02 00:40
9F:→ KotoriCute : 太高深了看不懂QQ 07/02 00:41
10F:推 chibon1992 : 幫教主QQ 07/02 00:41
11F:推 b155073 : Jk大必推 不過好想知道為什麼ACE會被刪減阿 07/02 00:41
基本上ACE/ROP等只看數量變化不準
因為不同的設計 不要說不同代了
同一代內的高低階晶片都不一定一樣
一組ACE不一定做一樣多的事情 搞不好更多了..
而就算是簡化的設計也很多啊
G92/G80都是2-way VLIW,但是是1+0.5個MAC
後來G200就取消那0.5個了
然後ATI的VLIW5很快就簡化成VLIW4
因為第5個不但很少用 也沒人排的出4+1的指令.
通通都是4+0 or 0+1,所以就砍了一個也少點損失
12F:推 vic88001 : 看不懂 = = 07/02 00:42
13F:推 obov : 用不到就先刪阿QQ 大家都馬拿產品作實驗 07/02 00:42
※ 編輯: jk21234 (42.72.117.179), 07/02/2016 00:47:05
14F:→ obov : 8葛ace用不太到 先砍到四葛試水溫QQ 07/02 00:43
15F:推 pmes9866 : 快推不然別人以為我看不懂 07/02 00:44
16F:推 jasn4570 : 懶人包應該放在最上面 我都拉完了.... 07/02 00:44
17F:推 w113353 : DX12不是會用到嗎QQ 07/02 00:44
18F:推 freshego : 快推避免別人知道我看不懂 07/02 00:44
19F:推 seemoon2000 : 這篇技術含量太高 只能推了 07/02 00:44
20F:推 b155073 : QQ 應該是用不到那麼多 一個甜品級的概念 07/02 00:45
21F:推 ang728 : 推 深入淺出 07/02 00:46
22F:推 qxxrbull : micro-stuttring跟侏儒畫格是同個意思嗎? 07/02 00:47
23F:推 yys310 : 拜 07/02 00:48
24F:→ ang728 : 同意思 07/02 00:48
25F:推 SilverFox : …也太多頁,看到眼花 07/02 00:54
26F:推 JackChung : intrinsic那邊應該就是把GCNㄧ些用高階語言難表示 07/02 01:01
27F:→ JackChung : 的功能包成函數 07/02 01:01
28F:→ JackChung : 像同一wavefront資料洗牌這種功能 07/02 01:02
29F:→ b155073 : 這不就要遊戲廠商去針對gcn作特殊的優化 07/02 01:09
30F:→ b155073 : 還是這個是對計算所做的 07/02 01:09
31F:推 kzfun2001 : 嗯,原來是這樣 07/02 01:09
32F:→ JackChung : CU reservation 那頁是講說可以為 command queue保 07/02 01:11
33F:→ JackChung : 留專用的CU 07/02 01:11
34F:→ JackChung : 像是說RX480上有36個CU 我便可以專門切4個出來專門 07/02 01:13
35F:→ JackChung : 算某幾個特定的kernel 07/02 01:13
36F:→ JackChung : 其他kernel去分其他32個 07/02 01:14
37F:→ kuma660224 : AFR frame pacing就是要解決多GPU輸出frame時間差 07/02 01:14
38F:推 b155073 : 對岸有說rx480 frame的延遲比之前的A卡更低了 07/02 01:17
40F:→ b155073 : 感覺跟這裡提到的AFR無關? 07/02 01:17
41F:→ kuma660224 : 這可能搭配DX12非同步計算能力,在delay插入其他非 07/02 01:17
42F:→ kuma660224 : 繪圖工作? 07/02 01:17
43F:推 CactusFlower: 嗯 好像暸解了些什麼呢! 07/02 01:26
44F:推 damnedfish : 快推,不然人家以為我看不懂 07/02 01:29
45F:→ JackChung : shader intrinsic 需要遊戲對GCN最佳化 07/02 01:29
46F:推 jior : 快推,不然別人以為我看不懂!!! 07/02 01:29
48F:→ JackChung : 計算部份也當然是用得到 07/02 01:30
49F:→ kuma660224 : Variable Rate Shading那邊說的不是vertex shader 07/02 01:38
50F:→ kuma660224 : 而是能應需求變化改變繪圖品質,比如視點看的位置 07/02 01:40
51F:→ kuma660224 : 高解析高畫質,外圍餘光處低解析低畫質。 07/02 01:40
52F:→ kuma660224 : 不過這可能需要搭配其他硬體偵測眼球看的位置 07/02 01:41
53F:推 oasis822 : 看不懂 推就對了… 07/02 01:45
54F:推 i9602283 : 太專業看不懂。。。 07/02 01:45
55F:→ kuma660224 : VR兩眼其實還是硬體要算兩次vertex shader, 07/02 01:49
56F:→ kuma660224 : 因為兩眼座標不同,這邊的一pass是指軟體 07/02 01:49
57F:→ kuma660224 : 只處理送出一份模型,但有兩組矩陣轉換座標 07/02 01:49
58F:→ kuma660224 : Cpu處理的API與Driver可以省工,但GPU其實仍處理兩 07/02 01:50
59F:→ kuma660224 : 次 07/02 01:50
60F:→ kuma660224 : 所以VR很操GPU,但卻不一定操CPU... 07/02 01:50
61F:→ kuma660224 : 這些技術可以提升軟體處理效率,但GPU仍加倍負荷 07/02 01:52
62F:→ kuma660224 : 用比喻就是可以跟點菜的(CPU)說來兩桌類似的菜 07/02 01:55
63F:→ kuma660224 : 只是這個不要辣,那個不吃牛。 07/02 01:55
64F:→ kuma660224 : 點菜小妹的一次搞定兩桌,效率很好。 07/02 01:55
65F:→ kuma660224 : 但是廚房還是得紮實做出兩桌,沒法省事。 07/02 01:55
66F:→ kuma660224 : VRS那邊才是未來能幫GPU大廚省事的功能。 07/02 01:55
67F:→ kuma660224 : 等於告訴廚師,我們只在意主菜,小菜你隨便上就好 07/02 01:56
68F:→ kuma660224 : VR離眼睛注視處以外的區域邊邊角角糊一點無所謂。 07/02 01:57
69F:→ kuma660224 : 但主菜=視點注視處要確實做好做滿。 07/02 01:58
70F:→ Litfal : GPU上16bit好像夠用,我搞別的DSP的演算法倒是常常 07/02 02:34
71F:→ Litfal : 遇到16bit精度不夠的問題OTZ 07/02 02:34
72F:→ JackChung : fp16應該是特別為DNN搞的吧 07/02 02:37
73F:→ kuma660224 : FP16在手機GPU很普遍,因為省電晶體。 07/02 02:39
74F:→ kuma660224 : 其實FP16很好用了,只有某些狀況精度差會出包要避開 07/02 02:40
75F:→ kuma660224 : PC現在是因為走GPU多用途化,GPGPU時機到了 07/02 02:41
76F:→ kuma660224 : 開始有更多兼差的工作不需要高精度。 07/02 02:42
77F:推 obov : nv這樣手筆很大 額外開一顆大顆的專作gpgpu 07/02 02:51
78F:→ obov : 那種大顆光罩來一次就破10M惹好像 07/02 02:51
79F:→ kuma660224 : 他退出手持晶片,總要找東西塞滿約好的產能 07/02 03:01
80F:→ kuma660224 : 而且搞不好繪圖也用的上。 07/02 03:02
81F:推 obov : 他那整組要賣十二萬鎂耶 根本是瞄準估狗之類的 07/02 03:10
82F:推 fishxd1096 : 樓上obov 完全看不懂先推 07/02 04:14
83F:推 howyuan : 推 07/02 04:57
84F:推 AxAy : 推~ 07/02 07:13
85F:→ ericinttu : 樓下是圖論大師 07/02 08:17
86F:推 Cubelia : 專業 07/02 08:24
87F:推 WeAntiTVBS : 推 07/02 08:39
88F:推 giantwinter : !! 07/02 08:42
89F:推 ping870224 : EE系看懂一點幫推 07/02 08:47
90F:推 Ekmund : 這太猛了... 07/02 09:24
91F:推 wert213 : 快推不然人家以為我看不懂 07/02 09:35
92F:推 terry6503 : 資訊量龐大,還好是早上看到,推~ 07/02 09:46
93F:推 semihumanity: 請問一下,warp不是相當於wavefront嗎?1warp有32t 07/02 10:14
94F:→ semihumanity: hread;1CU有8wavefront,1wavefront有64workitem 07/02 10:14
95F:→ semihumanity: 。thread相當於workitem 07/02 10:14
96F:→ nucleargod : 不同一張卡 warp 會不一樣大喔 07/02 10:30
97F:推 semihumanity: 不過後來好像都改成1wavefront32workitem了的樣子 07/02 10:32
98F:→ nucleargod : 現階段 VR 軟體端還是硬幹居多,軟體上寫畫兩遍 07/02 10:32
99F:→ nucleargod : 你硬體提供了畫一遍的神技,沒人拿去套也是沒用 07/02 10:33
100F:推 felaray : 好複雜 看不太懂 只能跪了... 07/02 13:08
101F:推 otoni : 嗯……算了,先推再說 07/02 13:19
102F:推 kanyewest927: 我們講同一種語言? 07/02 23:25
103F:→ kanyewest927: 膝蓋痛痛的... 07/02 23:26
104F:推 nfsong : 專業推 07/03 13:38