硬件加速|什么是硬件加速GPU计划?用处真的大吗?实测惊讶

本文转载自超能网,其他媒体转载需经超能网同意 。
在Windows 10 Version 2004中,开发团队给系统新增了一个名为“硬件加速GPU计划”的选项,它隐藏在“显示设置-图形设置”中,作为一个实验性的选项提供 。对于这个选项,微软官方在之前并没有做太多的解释,我们也就是道听途说认为它可以减低显示延迟什么什么的 。
在上个月末,终于有官方人员对这个选项进行了完整的解释,本文就根据官方的这篇博文,讲讲这个全新的硬件加速GPU计划选项的具体工作原理和作用,并整合了多家媒体的测试数据,看看它起的作用大小 。
硬件加速|什么是硬件加速GPU计划?用处真的大吗?实测惊讶
文章图片
“硬件加速GPU计划”
官方把Hardware-accelerated GPU scheduling这个词翻译成了硬件加速GPU计划,实际上在这里scheduling翻成“调度”能够让更多人明白它的意思,这也是比较有微软风味的翻译了 。
回归正题,要说到GPU调度管理,我们就先要了解一下WDDM GPU调度器是什么 。
WDDM GPU调度器与命令缓冲队列
从NT 6开始,微软给Windows引入了一套新的显示驱动模型,也就是我们现在所熟知的Windows Display Driver Model,简称WDDM 。在WDDM出现之前,应用程序可以直接把任务提交到GPU,当时系统只有一个全局的任务队列,严格按照先到先执行的原则进行任务的调度 。鉴于当时用到GPU的场景基本上就是全屏游戏或者专业用途的渲染什么的,这种方案也没出什么问题,被沿用了很多年 。
硬件加速|什么是硬件加速GPU计划?用处真的大吗?实测惊讶
文章图片
现在很多程序都会调用GPU
到了应用程序开始普遍利用GPU加速的年代,比如说Windows要直接用GPU加速整个UI界面的渲染了,那么再用这个全局任务队列就会有问题,比如渲染系统界面的任务前面排了一个其他程序提交的任务,那么GPU会先处理掉那个任务再回头来处理系统的需求,这会造成整个系统UI的卡顿 。为了妥善地安排GPU工作的优先级,势必需要一个新的任务调度器,由它负责安排GPU任务的工作优先级 。
那么WDDM就引入了那么一个任务调度器,它以高优先级线程的形式一直运行在CPU上,负责协调、优先处理和调度各种应用程序提交的工作 。从Vista上面的WDDM 1.0到Windows 10 Version 2004的WDDM 2.7,官方一直都在加强这个调度器的功能 。但这种管理方式存在有一定的限制,主要体现在提交会有额外开销和任务达到GPU有一定的延迟时间,不过这些限制在实际中都被传统图形应用的渲染缓冲队列给掩盖了 。
缓冲用来存放提前准备好的渲染命令等等内容,在GPU渲染当前帧的时候,CPU已经在准备下一帧、下下帧乃至之后的更多帧数了 。这种方式能够保证CPU与GPU之间的良好执行并行性,也可降低整体的性能开销,是现在很常见的GPU调用方式 。同时为了降低频率提交渲染命令带来的额外性能开销,一般应用程序会提前准备好多帧的内容一起发送到队列中 。这里产生了问题,缓冲的帧数越多,用户能够感受到的延迟越高 。
硬件加速|什么是硬件加速GPU计划?用处真的大吗?实测惊讶
文章图片
题外话,NVIDIA和AMD两家在去年都已经在驱动层面提供了对缓冲队列深度的控制,通过降低缓冲队列的帧数来实现降低延迟这一目的 。
但如果想减少缓冲队列的深度来降低延迟,又会造成提交开销增加,影响到性能 。这两者之间是一个权衡关系,程序可能以更高的频率每次提交更少的帧数来降低延迟,又可能以较低的频率每次提交更多的帧数来减少额外的调度、提交开销 。所以,微软决定修改其显示驱动模型的基础架构,引入了“硬件加速GPU计划” 。