作者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/cn.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/cn.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