【AMD/NVIDIA】HWS vs SWS: 谁是赢家?
首页 > 观测 > 数码科技    作者:剧毒术士马文   2017年4月3日 21:36 星期一   0条评论    
时间:2017-4-3 21:36  

NerdTechGasm做了一期视频讲述了GCN架构和NVIDIA从Fermi到现在Scheduler的变化

能够很清楚的解释为什么当前GCN的A卡在DX11下性能不及N卡,以及为何DX12下A卡发挥更好,而N卡CPU占用率高(偷U)


典型的DX11游戏中,Draw Call全在主线程上,瓶颈比较严重


img002.jpg


使用Command Lists/CMDList时,将Draw Call打包分给其他核心处理后再交给主线程,一定程度上缓解瓶颈

但并没有完全解决问题,因为有硬件瓶颈在。


img004.jpg


NV的DX11驱动永远都是多线程的

通过上面的CMDList “Server”进程实现,“Server”进程监控Draw Call,拦截Draw Call后分给各个线程

这个解决方法很好。

驱动是从AMD开始在BF4上试水Mantle之后出来的。


img005.jpg


新的DX11“多线程”驱动使得N卡受CPU单线程的瓶颈影响小了很多

只能用到1-2个线程的优化很差的游戏突然在N卡上跑的快了很多,同时导致非常吃CPU的PhysX在N卡上变得几乎没有负面影响。


img006.jpg


这也是为什么N卡在DX11上占优的原因。



img003.png

img004.png


img005.png



Draw Call提交到GPU后,调度器决定如何把工作分配给CU/SMX

然后通过HW Warp Scheduler分配给SP/CUDA核心



之前在Fermi上,NVIDIA设计了一个很强大的HWS-GigaThread Engine,类似于目前GCN的HWS


img002.png



Fermi因为功耗太高被称为核弹

为了提升能效,在Kepler上NV砍掉和简化了很多东西,其中就包括HWS,改为软件,也就是驱动来进行的SWS。


img003.png


NV的调度器是基于软件的,也就是驱动程序。它可以接受许多CMDList,甚至是比较大的那种,因为它们在执行前都被缓存了。

驱动程序确定了工作如何分配到每个SMX。


所以在游戏时N卡的CPU占用率会比A卡高不少,也就是偷U




AMD GCN上使用的则是硬件调度器HWS,驱动不负责分配工作,直接交给GPU,然后由HWS决定工作分配。

设计上HWS更依赖于即时的内容,也就是要保持持续的Draw Call一直进入,而不是CMDList这种必须打包后分发的庞然大物。

GCN的HWS缺乏妥善支持CMDList的缓存/机制。


img004.jpg


如果直接将CMDList送到AMD GPU,驱动就需要重新处理,这会浪费CPU资源。

Polaris的HWS可以缓存一点点,主进程瓶颈比之前几代GCN稍有改善。


img007.jpg


DX11下对A卡来说最理想的情况,将游戏逻辑(AI、物理、音效等)尽量分配到其他的线程,缓解主线程的瓶颈


img008.jpg


在DX11下,多线程优化良好的游戏中的情况


img009.jpg


而DX12和Vulkan等low-level API就不一样了

DX12和Vulkan可以真正完全利用到GCN的HWS的优势,主线程的瓶颈大大降低。


img011.jpg


当然,在N卡上由于没有HWS,就由驱动来承担。

并行线程越多,合并、优化、分发等工作对于N卡的SWS就越困难。

对于软件工程师来,说想在DX12上实现NV在DX11上一样的效率就非常需要技巧。


在3DMark API overhead测试里的结果并不能直接体现游戏中的情况,因为真正的游戏远比测试复杂得多。

3DMark测的只是理论上的,在现实中永远不会出现的场景。


img013.jpg


事先说明,N卡依然能在DX12和Vulkan中获得性能提升。

只是需要游戏开发者的大量经验和调整

比如id Software开发的Doom,采用了Vulkan并且实现了非常高的效率(可以说是目前优化的标杆...


img014.jpg


那么硬件和软件哪个更好?很明显,目前NVIDIA是赢家。

AMD的赌注是DX12以及Vulkan的快速普及,因为DX11可能很快就会达到瓶颈,开发者就会转向下一代API


但DX11的生命周期要长于预期。


就算是现在,很多游戏依然只集中使用1-2个线程,对剩下的线程利用不多。

在这种情况下,NV的DX11驱动就能将Draw Call分配给其他空闲CPU资源,增加Draw Call吞吐量。


真正很好地优化了多线程的游戏很少,大多都是主机移植的。

N卡的SWS带来的额外CPU overhead虽然会带来一点负面影响,这也能被更快更多的CPU核心/线程抵消。


在主要利用一个线程的游戏中,N卡会有巨大优势

而对于A卡,GCN架构会被主线程的瓶颈严重影响。


所以目前来说NV的SWS更优,在正确的时间点 - DX11上提供了更好的性能。


img015.jpg


而AMD更需要DX12和Vulkan的普及,也需要游戏引擎改进对多线程的优化,特别是现在有了Ryzen CPU。

主机上八核的优化优势还会继续下去。


而NV更有$,只要肯给工作室砸钱,就可以决定游戏在PC上如何优化。

在这方面AMD缺乏竞争资源,工程师更少,能赞助给工作室的钱也更少。


同时AMD也必须在硬件设计上更灵活一些,以对抗NV的策略。

Polaris上的Discard Accelerator就是这样的设计,抵消了x32/x64曲面细分的瓶颈。【很多游戏,比如孤岛危机2中就用了非常大量且毫无必要的曲面细分(故意的),A卡性能受到很大影响】

改进的HWS和整数预取也对减轻主线程瓶颈有帮助。


Vega将会大幅改善HWS和效率,因为DX11还将维持很长时间。


游戏将会变得越来越复杂,DX11 Draw Call瓶颈对于AMD来说,即便是多线程优化良好的游戏里也会成为主要瓶颈。


img001.jpg


来源:https://youtu.be/nIoZB-cnjc0,本站整理翻译,转载请注明出处。


二维码加载中...
本文作者:剧毒术士马文      文章标题: 【AMD/NVIDIA】HWS vs SWS: 谁是赢家?
本文地址:http://www.moepc.net/?post=1589
声明:若无注明,本文皆为“MoePC.net (原My艦これ/Mykancolle)”原创,转载请保留文章出处。

WRITTEN BY

avatar

返回顶部    首页     管理  
版权声明      pw:moepc.net或mykancolle.com (有时需加www.) 留言补档
本站JPEG均经过Google Guetzli压缩
网站纯属爱好 无盈利无广告(亏本运行)
恕不提供软文和饲料 这里只有特效药。
部分内容来源于网络,并不代表本站赞同其观点和对其真实性负责。
如涉及作品内容、版权和其它问题,请在30日内与本站联系,我们将在第一时间删除内容。
本站资源仅为个人学习测试使用,请在下载后24小时内删除,不得用于商业用途,否则后果自负,请支持正版!
illust-AMD/Ryohka
Feel free to use your Adblock, we don't have any ads.
Foreign visitors, if you have any questions, leave a comment in English/Japanese/German.
(just copy and paste one Chinese character cauze the anti-spam settings.)   sitemap