【解析AMD在DX12时代下三大优化】
随着Windows10操作系统的发布,DX12这一全新的API也进入了我们的眼球。与以往的任何一代DX API都不同,从DX12开始,应用、游戏的开发者们可以接触到CPU或GPU的底层,并进行有效率的优化调用,充分地发挥硬件的效率。
生意似乎不太好的AMD,与微软进行了一次深层次的合作,针对DX12的环境下,对自家的CPU和GPU作出了三大优化,这是否能成为AMD在DX12时代力挽狂澜的筹码呢?
一、增强多核心CPU工作效率
众所周知,核心数量一直是A家CPU最大的特点,相比Intel保守地增加核心,通过改进架构和设计来提高单个核心性能、从而提高整体核心性能的思路不同;AMD靠多核心的堆砌来获得性能的加成。在之前的DX版本中,CPU在游戏中所起到的作用是什么呢?举个例子,就是由CPU书写“算式”(GPU准备命令列表),然后将其放到GPU计算的书堆里(存储到缓存区域),接着由GPU进行计算。
由于曾经的DX版本中,开发者们接触不到这一过程,也就导致了开发者难以对其进行多核心线程的优化。所以也就是现在很多吧友们所说的游戏“吃单核”的现象。在DX12中,由于底层能够更加透明地被开放给开发者,使得开发者可以简单地对这一过程实行优化,就能够有效地提升多核心的工作效率。根据AMD的说法,在八核心的AMD推土机处理器下,八个核心中的六个都可以得到充分利用。尽管目前这都还是PPT,没有实践证明它的效率到底如何,不过从原理上来看,这一说法似乎也并不是完全不靠谱的。
二、多卡互联下的工作效率提高
AMD现有的Cross Fire交火技术,是AMD花了不少精力开发并优化的,相比NVIDIA的SLI技术,它可以不需要桥接器(最新一代R9 300系显卡已经可以脱离桥接器),并且不需要授权费,可以降低组建成本。
在以往的DX版本中,如果不是开发者的特别优化,部分游戏甚至都不支持多卡并联或双芯显卡,这对多路GPU的显卡造成了性能浪费。最令人诟病的是显存问题,显存由于采用复制机制,所有并行工作的显卡中,只能使用显存最小的那张显卡作为整个系统的显存,对大显存、多路玩家来说,就大大地造成了显存浪费的情况
在DX12中,API开始原生地支持了多路显卡,游戏、驱动开发者可以对多GPU做出优化,将计算任务分配到各个GPU上。甚至是核芯显卡(因为文章主体是AMD所以这里特指APU的核显),都可以与独立显卡的GPU共同工作,即便这两者性能差距比较悬殊,不过在这种核显+独显的双显卡平台并且台式机上没有方便自由地切换两者的技术的情况下,核显也不会被浪费,对消费者来说也算是一件好事。另外,显存的使用机制由复制变成了叠加,这也就是说可以让多路显卡的显存叠加起来。以往,4张4GB独立显卡并联工作,显存也只有4GB,在4K游戏的潮流下已经显得有些捉襟见肘;而现在,4张4GB独立显卡并联工作时,显存便可以达到16GB,这就解决了显存浪费的问题。
三、着色器异步计算引擎
在AMD上,这是一项硬件层面上的优化。
什么叫做“着色器”。在早期的GPU上,“着色器”正如其名,是为顶点着色器计算出的三角形进行着色计算的。不过现在,它的功能就更加多样化了,可以支持各种通用计算。不过这里也就提一下,这其中涉及到GPU工作原理和发展历史上,由于比较复杂,笔者能力有限,如果有兴趣的吧友可以查阅更多资料了解。
在近代的GPU工作中,GPU运用着色器进行计算的时候,往往将指令进行“排队”式的工作。指令往往在缓存区中,等待上一组计算完成后,下一组才开始进行计算。并且刚刚提到着色器的功能多样化之后,功能之间、计算指令“队伍”之间的切换、等待。在GPU的世界中就造成了较大的延迟。尽管后来通过软件、硬件的结合优化,厂商们为这个“排队”式的工作方式进行了改进,使得它拥有了优先,暂停,继续等稍微智能化一些的做法。提高了一定的工作效率,但这还不够。
所以,AMD为使用GCN架构的GPU设计了一个名为Asynchronous Compute Engine(异步计算引擎,简称ACE)的东西,它可以智能协调GPU上着色器的计算。“排队”式的工作逻辑被打破,ACE为指令进行有计划的、有规律的排序。还是提到刚刚的所说的着色器功能多样化问题,这里举个例子,假如指令中包含复制、图形计算、通用计算三种不同的功能。有了ACE后,这些不同的功能会被ACE排好序,同时进入GPU,进行统一计算,并且它还拥有平衡功能,可以灵活地关闭、开启计算用的单元。减少了以往切换、等待的延迟后,GPU的计算效率自然就提高了。这一点创新笔者认为是不错的。
【总结】
笔者还是要声明一下,本文提到的一些东西,都是理论上的东西,目前都还只是PPT,至于具体的效果如何,笔者还无从得知。不过,就笔者知道的一些信息,在部分DX12游戏的Benchmark测试中,AMD显卡的工作效率的确都得到了显著提升。而NVIDIA方面,在许多Benchmark测试中表现不佳,不过据NVIDIA所说,这是因为对应的驱动和程序尚未到位,将来会解决这个问题。
在DX12时代,以往影响工作效率的问题得到了不小的改善,这一全新的API相信可以成为一座里程碑。至于AMD是否能真正在DX12凭借这三大优化“逆袭”,还需要时间的验证。让我们拭目以待。