amd吧 关注:787,466贴子:18,072,949

指令集层面对A卡负优化 和 目前RDNA3瓶颈

只看楼主收藏回复

1.从指令集层面解释,如何对N卡优化的同时对A卡负优化。
目前两家游戏卡中参与游戏运算主要是FP32和INT32。游戏运算都是浮点指令,设FP 32指令集范围 - XX.XXXX至XX.XXXX。FP 32可以直接正确运算这个范围内所有指令。 而INT 32范围卫 - YY 至 YY。
|YY| > |XX|INT 32 运算浮点指令,会自动无视浮点指令 小数位数字,即当成XX运算。因此其中只有小数位为0,即XX.0000交给int32, int32才可以运算出正确数值。
游戏正常运行同时发出多条XX.XXXX。 其中 小数位非0指令 :小数位为0指令比例 在7:3或者更高的8:2 。 但是N卡FP32和int32数量是1:1。因此N卡就有许多int32闲置,为了提高INT 32利用率,就需要更多XX.0000的指令。于是N的gameworks工作室下场,制作许多包含AA.0000指令集( |AA| ≤ |YY| ),提高Int32利用率,但是当AA.0000大于XX.XXXX,FP32就不可以直接运算,需要同过拆分指令,再由多个FP32进行运算,最后再合并结果。
AMD没有INT32单元,只能通过FP32间接运行许多AA.0000,多个FP32只能执行一条指令的运算得出一个正确数值。这样大大降低AMD的FP32效率。进而实现对A卡的负优化。


来自Android客户端1楼2022-12-04 14:52回复
    2.RDNA3目前瓶颈在哪,为没实现6900XT的2.5倍理论峰值性能,以及如何改进。
    首先讲清楚RDNA3的架构 RDNA3满血 GCD 物理层面只有96CU,6144流处理器,也就是6144个FP32 。6900XT的1.2倍。但是官网给出理论峰值却是 6900XT 的2.5倍多,这是因为AMD改变流处理 排列,升级指令分配器,让每个PF32原来的单位时间内进行了两次工作,完成了原本12288个FP32运算一次的工作量。通俗的讲,就是1个人干了2个人的活。
    但是最终游戏实测却没有实现2倍多的性能,在AMD优化好的游戏中只实现1.5倍性能提升也就是只有25%的FP32在单位时间内运算2次,75%的FP32只进行1次运算。多余算力被闲置。因此得出1次性载入指令总数量不够多。进而得到储存指令的缓存容量不够。如果把CU比作工厂流水线,那么缓存相当于原料供应。现在原料供应赶不上,生产线自然不能满载。
    从官方PPT也可以看出 96MB缓存是不够的。下图是发布会上AMD官方强调的纯渲染能力的提升比例,注意 不是 帧数 !PS : 这也可以看出AMD在发布会时候还没完全搞懂自己的架构(下面还会说明为啥说AMD在发布会没搞懂自己架构)
    首先96MB所存储的浮点指令数量是一定的,当游戏中都是XX.XXXX,属于FP32能够直接运行的范;而2077是和NV深度合作的,所以出现了YY.0000,FP32无法直接运算的指令,加重自己FP32的压力,反而使得更多FP32,也就是41.6%的FP32在单位时间内进行了两次运算。但是AMD自己可能也纳闷为啥出现这种情况,A黑游戏比A优化游戏提升还高。所以强调了纯渲染性能提升1.7倍,而在此处不提帧数。
    现在解释为啥说AMD在发布会的时候还没搞懂自己的架构,如上所说96MB缓存只够96CU当中25%的FP32完成双次运算。也就是在99.999%游戏中,性能等同 60CU全部完成双次运算。60CU在96MB缓存加持下就可以达到7900XTX的性能。而AMD作为一个对成本十分敏感硬件厂商,不会允许出现5NM制作的GCD,出现如此夸张浪费。


    来自Android客户端3楼2022-12-04 14:56
    回复
      如上面一段铺垫,接下来再说说,如何解除瓶颈,让满血GCD 96CU能够实现2.4倍于6900XT的提升。首先加大缓存,96MB配60CU,那么96CU则需要154MB缓存。还有解除功耗限制。


      来自Android客户端4楼2022-12-04 14:56
      收起回复
        你怎么不说AMD省晶体管,用int24凑数呢


        IP属地:湖南来自Android客户端5楼2022-12-04 16:03
        收起回复
          大神进一步讲讲?讲讲rdna3的瓶颈在哪里,以及这个局面如何化解?


          IP属地:河南来自Android客户端6楼2022-12-05 03:03
          收起回复
            2.RDNA3目前瓶颈在哪,为何没实现6900XT的2.5倍理论峰值性能,以及如何改进。
            首先讲清楚RDNA3的架构 RDNA3满血 GCD 物理层面只有96CU,6144流处理器,也就是6144个FP32 。6900XT的1.2倍。但是官网给出理论峰值却是 6900XT 的2.5倍多,这是因为AMD改变流处理 排列,升级指令分配器,让每个PF32原来的单位时间内进行了两次工作,完成了原本12288个FP32运算一次的工作量。通俗的讲,就是1个人干了2个人的活。


            来自Android客户端7楼2022-12-05 17:06
            回复
              但是最终游戏实测却没有实现2倍多的性能,在AMD优化好的游戏中只实现1.5倍性能提升也就是只有25%的FP32在单位时间内运算2次,75%的FP32只进行1次运算。多余算力被闲置。因此得出1次性载入指令总数量不够多。进而得到储存指令的缓存容量不够。如果把CU比作工厂流水线,那么缓存相当于原料供应。现在原料供应赶不上,生产线自然不能满载。


              来自Android客户端8楼2022-12-05 17:06
              回复
                从官方PPT也可以看出 96MB缓存是不够的。下图是发布会上AMD官方强调的纯渲染能力的提升比例,注意 不是 帧数 !PS : 这也可以看出AMD在发布会时候还没完全搞懂自己的架构(下面还会说明为啥说AMD在发布会没搞懂自己架构)


                来自Android客户端9楼2022-12-05 17:07
                收起回复
                  首先96MB所存储的浮点指令数量是一定的,当游戏中都是XX.XXXX,属于FP32能够直接运行的范;而2077是和NV深度合作的,所以出现了YY.0000,FP32无法直接运算的指令,加重自己FP32的压力,反而使得更多FP32,也就是41.6%的FP32在单位时间内进行了两次运算。但是AMD自己可能也纳闷为啥出现这种情况,A黑游戏比A优化游戏提升还高。所以强调了纯渲染性能提升1.7倍,而在此处不提帧数。
                  现在解释为啥说AMD在发布会的时候还没搞懂自己的架构,如上所说96MB缓存只够96CU当中25%的FP32完成双次运算。也就是在99.999%游戏中,性能等同 60CU全部完成双次运算。60CU在96MB缓存加持下就可以达到7900XTX的性能。而AMD作为一个对成本十分敏感硬件厂商,不会允许出现5NM制作的GCD,出现如此夸张浪费。


                  来自Android客户端10楼2022-12-05 17:07
                  回复


                    来自Android客户端11楼2022-12-05 17:09
                    回复


                      IP属地:江苏来自Android客户端12楼2022-12-05 17:10
                      回复
                        三个8PIN


                        IP属地:湖北来自Android客户端13楼2022-12-05 17:32
                        收起回复
                          xswl还以为楼主会写代码呢


                          IP属地:上海来自Android客户端14楼2022-12-05 18:23
                          回复
                            AMD应该走XSX\PS5游戏主机的统一内存架构,把显存当缓存用,可惜最新一代6800U了。


                            IP属地:北京15楼2022-12-05 18:28
                            收起回复
                              要在脑子里打开


                              IP属地:广东来自手机贴吧16楼2022-12-05 18:30
                              回复