首款DX12游戏《奇点灰烬》让AMD、NVIDIA两家又一次吵翻了天,不同的是这次AMD占了上风,R9 290X显卡在DX12中都可以逆袭GTX 980显卡了,而NVIDIA显卡有些神伤,DX12并没有带来什么优势,不复当年DX11之勇了。
游戏开发者指出,NVIDIA处于劣势的原因是他们并不支持DX12的异步运算(Async Compute),但现在情况有所变化,NVIDIA的Maxwell显卡硬件上是支持异步运算的,问题出在驱动上,他们正在跟游戏开发商合作解决这个问题。
我们简单回顾下问题的来源:Oxide开发的《奇点灰烬》是首款正式支持DX12的游戏,在这个测试中AMD的GCN架构显卡表现很猛,DX12下性能大幅提升,R9 290X显卡都可以逆袭NVIDIA的GTX 980显卡,但NVIDIA自己的显卡从DX12受益不多,性能提升并不大。对此,NVIDIA表示《奇点灰烬》只是个例,并不能代表DX12游戏。
考虑到开发商Oxide多年来一直都是AMD的合作伙伴,从Mantle问世时就在合作了,所以有些不明真相的群众也在怀疑这种情况是否是AMD出钱负优化友商(一如之前NVIDIA在Gameworks游戏中被人怀疑的那样),所以开发商Oxide也不得不作出公开回应,并指出了NVIDIA显卡在游戏中不行是因为不支持异步运算,所以他们不得不关闭在N卡上关闭这个功能。
随着双方的进一步沟通,Oxide公司开发者日前表示:“对于异步运算,我们跟NVIDIA做了进一步的沟通。虽然现在的驱动还没有完全应用这个技术,但它看起来是支持的。我们正在跟NVIDIA合作以期实现完整的异步运算支持,有更多消息时我们会尽快通知大家。”
问题的根源实际上是,AMD、NVIDIA两家在异步运算上使用了不同的实现方式,NVIDIA的解决方案是软件、硬件一体的,并不单单是硬件功能。
另一名开发者也在Overclock论坛上解释了两家的不同,里面涉及很多游戏技术名词,来看下:
NVIDIA的硬件架构中,AWS(Asynchronous Warp Scheduler,异步弯曲调度器)是硬件功能单元,每个SMM单元(类似AMD GCN架构中的Shader Engine渲染引擎)有4个AWS单元。与GCN架构不同,Maxwell 2架构中这个调度器是软件控制的。
但在AMD的GCN架构中,驱动程序只是负责把队列发送到ACE(Asynchronous Compute Engine,异步运算引擎)或者GCP(Graphic Command Processor,图形命名处理器,也可以处理计算任务)、DMA引擎(复制)中,然后都是ACE引擎负责处理、分配的。
简单来说就是,NVIDIA的Maxwell架构中队列、分配等任务都是驱动程序负责的,AWS、DMA引擎、CUDA核心都是硬件实现的,而在GCN架构中,队列/任务分配/ACE等都是硬件实现的,复制(DMA引擎)也是硬件的,CU单元也是硬件的。
说了这么多,其实简单一句话就是NVIDIA的Maxwell 2架构也是支持异步运算的,但实现这个功能需要软件及硬件两方面的参与,而NVIDIA现在出问题的地方就是驱动程序还没做好支持。
与之不同的是,AMD的GCN架构中异步运算基本上都是硬件单元实现的,简化了开发,也不依赖驱动程序。