1我们来兑现承诺了
“GPU Boost技术是NVIDIA在Kepler架构中引入的动态频率/功耗管理机制,它可以榨取TDP上限与实际功耗之间的差值所隐藏的性能,将单元复用率不足而压制的性能释放出来交还给用户,还可以根据用户的需求降低GPU的负载和频率,为用户提供一个更清凉安静的使用环境,除此之外它还可以将……”
“等等等等,你在那边手舞足蹈的说什么呢?‘榨取TDP上限与实际功耗之间的差值所隐藏的性能’这样的东西是正常的汉语么?到底GPU Boost技术是什么,你这么blablabla了半天我根本就没明白嘛!”
好吧,我承认上面这个就是我最新收获的一次挫败,我尝试这给一位朋友解释GPU Boost技术的特性以及它跟功耗性能之间的关系,结果因为没有可以用来说明的实际现象,我的努力以失败而告终。GPU Boost是一个可以管理功耗同时将功耗空间转化成性能的技术,但这种管理的过程会导致怎样的现象呢?我们能找到由GPU Boost导致的与众不同同时又有意义的现象么?
算我们运气好,这种能够说明GPU Boost功能作用的效果,还真被我们找到了。
在一个月前的GeForce GTX 660首发测试中,我们首次启用了全新的功耗测试体系及测试方法。新的测试方法不仅帮助我们获得了更加准确和真实的显卡实际功耗数据,同时还为我们带来了一个与GPU Boost技术息息相关的奇特现象。当时我们曾经承诺过,有介于新测试体系及方法的特殊性,以及由新测试方式获得的出现在GeForce GTX 660上的全新现象,我们将会进一步拓展对显卡实际游戏功耗的测试,并以单独的一期GPU炼金试验室栏目来进行讨论。今天,我们来兑现承诺了。
这现象究竟是什么呢?别急,先让我们来做一些必要的准备活动,来了解一些必须的基本概念吧。
2游戏功耗为什么会有波动
● 游戏功耗为什么会有波动
通过GPU大百科全书,相信很多读者已经对GPU执行图形的过程有基本的了解了。图形过程是一个连贯的由多个组成部分构成的可并行顺序动作,每一帧画面的生成都要经过几何处理、光栅化、材质及像素处理以及混合输出等一组完整的过程。这些步骤环环相扣且具有长短不一的执行时间需求,如果其中某一个步骤因为某种原因而“慢了”,顺序步骤的其他环节的执行延迟也将会受到影响。
顺序的GPU硬件渲染流水线步骤
我们所运行的绝大多数游戏都是一个开放式的应用过程,游戏过程必定会伴随着玩家们自由或者相对自由的视野及显示内容改变,游戏所呈现的内容也会随着游戏过程的推进而出现巨大的变化。这些变动本身带来的负载需求变化,最终会被反应到一个共同的结果中,那就是显卡的运行功耗。
正常情况下, 我们执行游戏过程中的几乎不可预期的一举一动都会导致游戏有延迟变化,即便是我们甚少干预的脚本游戏测试或者benchmark,也会因为图像描绘内容的不同而带来不同的性能需求。有需求和执行过程变化,显卡的动作形式就要发生变化。显卡动作形式发生变化,显卡消耗能源的状态也就跟着发生了变化,所以在游戏过程中,我们能够看到的功耗数据就会不断地发生变化。有介于同样的原因,不同的游戏还会给我们带来不同的实际功耗结果。
在变动的功耗中寻找有代表意义的某个时间断点作为记录的对象,或者通俗说就是随便瞄一眼或者拿最高/最低值来充当有参考和比较价值的游戏过程中的功耗数值,显然是不科学的。游戏不是围绕着一个固定的点来进行的,所以开放性以及任意性导致我们不可能找到一个典型的“点”来充当显卡在工作过程中的功耗测试基准。不同的游戏会因为进行的节奏不同而导致功耗变化节奏出现偏差,因此以固定时间间隔来截取不同类型游戏的若干功耗数据同样不准确。那我们究竟应该如何做才能获得准确的可参考性的显卡功耗数值呢?
答案就在与功耗相对的存在——能耗。
3以什么“平均”才能代替瞬时?
作为功耗数值最有意义的体现,能耗状态不仅关系到我们要掏多少电费之类的问题,更可以为我们直观的反映出显卡以及整个平台工作期间的能源消耗状态,而单位时间内的能源消耗量,就是我们通常意义上所理解的功耗状态了。
我们现在面对的问题本质上其实就是功耗的随机变动,因为功耗的变动,同时又不存在一个对所有或者哪怕是绝大多数游戏以及测试都拥有指导意义的功耗参照点作为统一标准,我们不得不放弃直接读取某些功耗测试数值来还原实际功耗的测试方法。
就靠这货是得不到真实的游戏功耗数据的
能耗是一个连续的累积,它可以随着时间的增长而不断增加,最终得以呈现的一段时间的累计总量,因此它可以弥合一定时间内功耗变化所带来的随机变动问题。对于一般显卡而言,执行特定的一组画面也许会产生十几甚至几十种功耗状态,但只要画面固定且可重复,那么执行这些画面所需要消耗的总能耗就是相对确定的。因此我们只需要测定出测试过程的能好状态,就可以回推出测试执行过程中显卡的平均功耗状况了。
收集能耗读数最简洁的办法,是使用能够实时记录精度能够达到0.1W甚至更高的电力计。但很遗憾,这种仪器通常十分昂贵,我们目前仍然缺乏这种精度能够满足要求的动态功耗记录的设备,所以我们决定采用一种新的记录方法来规避这种问题——以记录不同游戏中平台消耗单位电量的时间,来计算游戏中的平均功耗状况。
无论记录功耗数值还是能耗数值,实际上如果拥有能够以足够短的时间间隔实时记录并输出连续瞬时功耗数据,同时精度能够达到0.1W甚至更高的专业仪器,我们就可以直接以平均数值来替代瞬时变动带来的不确定性。问题是我们没有,甚至绝大多数媒体都没有满足要求的这类设备。所以,我们只能在现有条件允许的前提下寻找可以达到最高精度的解决方案。
我们分别以1W.H和5W.H为单位电量,精确记录测试平台在游戏测试过程中消耗1W.H以及5W.H电量所消耗的时间,以此来求的平台的每秒电量消耗状况,并以此来求的平台每小时消耗电量的情况。由于目标值固定,场景和负载对功耗的影响会被正确的反映在最终的时间数据中,因此我们获得的数据可以尽可能的避免低可重复性导致的错误数据陷阱,反映游戏测试过程中平台以及显卡最真实的功耗状态。
4依旧固定统一的测试平台
● 依旧固定统一的测试平台
为了满足测试条件的均一性,我们的性能测试使用的硬件平台依旧由Intel Core i7-3960X、X79 Chipset和4GB*4四通道DDR3-1600内存构成,所有参测显卡均在该平台上完成测试。细节及软件环境设定见下表:
测 试 平 台 硬 件 | |
中央处理器 | |
Intel Core i7-3960X | |
(6核 / 12线程 / 100MHz*33 / 15MB L3 Cache ) | |
散热器 | |
Intel RTS2011LC | |
(原厂水冷散热器 / 选配件 ) | |
内存模组 | |
Samsung 黑武士 DDR3-1600 4GB*4 | |
(SPD:9-9-9-24-1T) | |
主板 | |
ASUS Rampage IV Extreme | |
(Intel X79 Chipset) | |
硬盘 | |
Hitachi 1T | |
(1TB / 7200RPM / 16M 50GB NTFS | |
电源供应器 | |
NERMAX 白金冰核 1500W | |
(CSCI Platinum 80Plus / 1500W) | |
显示器 | |
DELL UltraSharp 3008WFP | |
(30英寸LCD / 2560*1600分辨率) |
为保证系统平台具有最佳的稳定性,此次硬件评测中所使用的操作系统均为Microsoft Windows 7 正版授权产品。使用Windows 7正版软件能够获得最好的兼容性以及系统升级更新服务。
用户在体验或购买安装Windows 7的操作系统时请认准所装系统是否已经获得正版授权许可!未经授权的非正版软件将无法获得包括更新等功能在内的Windows 7服务。
操 作 系 统 及 驱 动 | |
操作系统 | |
Microsoft Windows 7 Ultimate RTM SP1 | |
(64bit / 版本号7601) | |
主板芯片组驱动 | |
Intel Chipset Device Software for Win7 | |
(WHQL / 版本号 9.2.3.1022) | |
AMD 显卡驱动 | |
AMD Catalsyt | |
(官方正式版 / 版本号 12.8) | |
NVIDIA 显卡驱动 | |
NVIDIA Forceware | |
(Beta / 版本号 306.38) | |
|
桌面环境 |
2560*1600_32bit 60Hz |
我们分别选择了NVIDIA以及AMD的旗舰级、甜品以及中端3档架构的产品作为测试对象,参测显卡分别为GeForce GTX 680、GeForce GTX 660、GeForce GTX 650 Ti以及Radeon HD 7970、Radeon HD 7870、Radeon HD 7770。由于NVIDIA在Kepler时代的甜品级产品线由GK104和GK106两款架构组成,因此我们也将GeForce GTX 660 Ti纳入到了测试范围中。
5运气很糟的满载功耗对比
● 运气很糟的满载功耗对比
我们首先要测试的是各款显卡在常规概念中的满载功耗,也就是通过furmark满载取得的功耗状态。
最近ZOL显卡频道的运气一直十分糟糕,这种坏运气延伸到了我们本次的测试中。我们找到的公版GeForce GTX 680、GeForce GTX 660 Ti以及Radeon HD 7970的芯片品质都让人失望,不仅超频能力十分有限,满载平台功耗较之公测期间取得的产品也都有了20~30W的提升。
首测时GeForce GTX 680的平台满载功耗
除了上述3块显卡之外,我们测试的其他产品都使用了芯片级首测时登场的那块,因此功耗并没有过大的变化。由于游戏测试同样基于相同平台完成,因此我们依旧可以以目前收集到的数据作为基准的参考依据。
6咦?说好的功耗波动呢?
● 咦?说好的功耗波动呢?
在实际的游戏测试环节中,我们分别使用Crysis2、蝙蝠侠:阿克汉姆之城、幕府将军:武士之殇、Dirt3以及天堂3.0作为测试环境来收集实际能耗数据。Crysis2测试基于Benchmark脚本,蝙蝠侠以及Dirt3使用游戏自带benchmark程序,而幕府将军则采用runtime方法完成测试,各游戏具体测试方法同芯片级首测相同。
参测的AMD显卡很好地证明了我们采取措施的成功。在处理需求不同的游戏类型中,我们顺利的收集到了完全不同的功耗数据。所有参测AMD显卡的游戏功耗差值,也就是最省电的游戏和最费电的游戏中的功耗差值都在20~30W,而且在部分游戏中的实际功耗还达到了超过Furmark功耗的级别。但当我们将注意力集中到NVIDIA产品表现的时候,不同的现象出现了。
在第一次启用这种测试方法的GeForce GTX 660首测过程中,我们已经注意到了这样的现象——相对于AMD,大部分参测的NVIDIA显卡拥有更加稳定和统一的实际游戏功耗表现。除了GeForce GTX 650 Ti的成绩“坡度”较大且距离Furmark功耗差距明显之外,其他参测NVIDIA显卡不论在哪个参测的实际游戏中,其功耗表现都非常平稳且贴近furmark满载功耗。换句话说,就是NVIDIA现在现在可以在绝大多数游戏中都达到接近满负荷的状态进行工作,同时还会微妙的保持在不会超负荷运转的状态中。
是谁导致了这样微妙的结果呢?答案就在开篇中给我们带来极大挫败感的难以解释的技术——GPU Boost。
7化波动为性能
● 化波动为性能
半导体电路虽然设计千差万别,能耗状态也各不相同,但以一个架构自身而言,大体上都还是遵循“干了多少活就耗了多少电”这样的原则。不精确但通俗的理解,我们可以把显卡的满载功耗看做是显卡内部单元进行最佳动作时的功耗。对于没有EDA缺陷等干扰因素存在的架构来说,如果能够以达到设计功耗的状态进行运作,那么它基本上也就达到了设计者希望达到的最佳的性能。
每一款不同的游戏程序/应用因为各自不同的编程特点和玩家进行游戏时的状态,而在不同构架的显卡上反映出不同的负载或者说GPU使用情况,这种GPU负载的不同,归根结底是GPU构架的单元复用率以及程序对硬件不同组元使用率差异造成的欠载所导致的。这些无法避免的欠载,会让GPU在绝大多数场合都不会运行在设计功耗数值之上。于是,我们在一般显卡产品中就会看到不同游戏甚至不同游戏形式所导致的显卡实际功耗不同的现象。
当构架设计完成之后,构架的诸如单元复用率之类的特性也就随之凝固,游戏程序及应用程序在编写完成之后也要面临对不同构架使用情况发生凝固的情况。既然我们无法改变构架的单元复用率,也无法实时的修改游戏对GPU的单元使用情况,同时两者的矛盾已经已经被体现在了实际运行功耗与设计功耗之间的差异上,那么增大整个构架的运行频率,善加利用实际功耗与设计功耗之间的差值空间来获得更高的总执行能力,就成了提升性能以及解决单元复用率不足矛盾的最好办法了。
通过对GPU实时运行状态的监控,我们可以发现GPU Boost在不改变GPU占有率的前提下动态实时的调节了GPU的运行频率。如果某个是时刻显卡的功耗因为欠载而可能出现帧数下降或者并未表现出最佳帧数时,欠载所导致的功耗下降就会被传感器检测到,GPU Boost便会介入并抬升GPU的运行频率,以便将欠载功耗同设计功耗之间的差值转化成性能,在不让实时运行功耗超过设计值的同时尽量阻止帧数下滑或者让帧数达到更高的水平。
因此,我们在测试中观察到了具备GPU Boost的NVIDIA显卡在大部分测试中都可以保持均一且相对稳定的贴近设计满载功耗的实际功耗表现,而AMD以及不具备GPU Boost的NVIDIA显卡则会有更大的实际功耗“起伏”,在不同游戏中表现出了差异较大的功耗水平,甚至还会出现突破furmark满载功耗的情况。常规显卡的这种起伏,被GPU Boost成功的转化成了性能。
8GPU Boost的实际意义
GPU Boost拥有的特性决定了它可以根据不同游戏动态的为用户换来性能,除此之外,它还有更多有待发掘的功用和实际意义。
3Dmark 11测试期间GPU Boost动作记录
GPU Boost是一种对功耗和性能的综合控制管理机制,这意味着它不仅可以利用功耗空间并将之变成性能,同时还意味着它可以约束显卡,使其运行功耗不超过设计功耗的上限。这种约束不仅保护了显卡的运行安全,也让我们选择电源时变得更有目的性。
除了利用功耗空间提升性能,GPU Boost还可以根据用户的实际性能需求来限定实际性能及运行功耗上限。当用户认为当前的游戏帧数过剩并将实时运行帧数限定在自己喜欢的特定值时,GPU Boost会积极的根据系统的性能需求动态且实时的降低GPU运行的频率,用户自定义的个性化帧数可以被真实的转化成节约的功耗以及降低的温度,定制功耗这件事,现在已经变成现实了。
不具备GPU Boost的中端产品:GeForce GTX 650 Ti
可以换取性能并对显卡的运行状态和功耗进行约束,这些特征都注定了GPU Boost或者类似的功能在未来将会成为界定产品等级的重要标志。我们预计在未来的市场中,无论AMD还是NVIDIA都会将是否具备Boost类功能作为界定甜品/中端级产品,或者游戏/应用级产品的重要标志。未来显卡市场上具备GPU Boost以及Boost类功能的产品,也将会随着时间的推移而进一步增加。
关于GPU Boost的特性以及现象的分析到这里就结束了,但对功耗的测试和探讨还将持续下去,我们不仅会进一步改进我们的功耗测量手段,同时还会针对不同显卡在实际游戏中表现出来的功耗状态进行更深入的探讨。比如说对于不具备GPU Boost功能的显卡来说,游戏实际功耗与满载功耗之间的差值实际上可以体现内部单元复用率的不同,原则上单元复用率越高的架构,其游戏实际功耗将越接近甚至是超越furmark功耗,我们将会在今后的GPU炼金试验室当中继续完善这方面的内容。
推荐经销商