NVIDIA Kepler系列显卡让玩家又爱又恨:虽然性能出众,但BIOS对诸多参数特别是核心电压进行了限制,无法在正常情况下通过软件来提升核心电压,进而提升显卡的超频性能。对于这种限制,我们应该如何解决呢?
NVIDIA Kepler系列显卡和以往的显卡相比,核心电压等和超频相关的一些参数都无法通过软件来更改。显然,我们需要通过一些特别的方法来打破这种限制。事实上,本刊曾经多次介绍过使用NiBiTor软件对NVIDIA显卡的BIOS进行修改,从而破解电压上限超频的方法。但由于Kepler系列显卡的BIOS文件结构与以往有较大差异,因此NiBiTor等软件至今都不能支持Kepler系列显卡的修改。不仅如此,Kepler系列显卡较以往的产品除了有核心电压、风扇转速可调范围等限制外,还有一个能明显影响超频能力的参数:功率(也就是我们在超频软件中看到的Power Target选项),这使得Kepler系列显卡的超频变得更加复杂。难道我们就只能等待软件的更新、再进行BIOS的修改吗?事实上,NiBiTor自今年5月21日升级到6.06版本后就一直未曾更新了。因此我们唯有“自己动手,丰衣足食”。
经过笔者的研究及实践发现,完全可以通过修改Kepler系列显卡的BIOS文件来破解Kepler系列显卡的诸多限制。本文将以公版GeForce GTX 680以及华硕GTX660Ti DC2T显卡为例,为大家讲解如何通过16进制编辑器直接修改Kepler系列显卡的BIOS文件,以此释放显卡的潜力。
1. 执行“开始菜单→所有程序→附件→命令提示符”的操作,并跳转到nvflash软件所在的位置。
2.输入nvflash-bgtx680_org.rom读取出原始的BIOS文件,其中“xxx.rom”为自定义的文件名,比如gtx680_org.rom等。执行命令后稍等片刻,看到“Savingofimage completed”字样就表示保存成功了(图1)。为防止意外情况发生,一定要备份原始的BIOS文件。
就笔者目前的实践来看,GTX 680、660Ti可以修改的参数主要有:风扇转速可调范围、功率限制、高核心电压、显存频率、核心频率。两款显卡的修改方法基本相同,只是各参数值存储的位置不一样。下面将以公版GTX 680显卡为例进行修改,并在后的表1中列出GTX660Ti参数的具体修改方法。
1.修改风扇转速可调范围
在默认状态下,公版Kepler显卡把风扇转速的可调范围限制在30%~85%左右。破解的方法非常简单,定位到0x810A和0x810B单元格(图2),分别对应低转速和高转速),里面的数值分别为0x1E和0x55(分别等同于十进制的30和85)。为了获得好的散热性能,笔者把大转速修改为100%,也就是将0x810B单元格改成0x64。至于低转速,可以稍微降低一些,这里把0x810A的值改成0x14,对应20%转速。
2.修改功率和Power Target
定位到0x80A6单元格(图3),可以看到连续的三个数值:10 98 02。根据little-endian的原则,这三个值实际代表0x 029810,笔者把它转换成10进制即170000。没错,这里的170000就是GTX680的100%功率(单位:毫瓦),即170W。类似的,笔者把从0x80AA地址开始的三个值E86E03倒过来变成0x036E E8并转换成10进制得到225000(毫瓦),这就是BIOS定义的大功率。由于225000/170000=132%,因此我们在使用超频软件超频时只能把Power Target值拉到132%。也就是说,我们只要修改这两个数值就可以提升GTX 680的功上限。比如把10802改为90D003(0x 03D090=250000), E86E03改为05B8D8(0x D8B805=375000),时我们在软件中看到的Power Targe100%就对应250W,大可以拉150%也就是375W,这个数值对于冷超频来说足够了。
另外对于GTX 660Ti的BIOS,笔者还可以修改“输入功率”限制(后面的测试可以看到,GTX 680也有这样的限制,只是笔者还没有找到解决方法),如图4,只要把4个框内的数值改大就能提升输入、输出功耗上限。只不过笔者手上这款硕GTX 660TITOP显卡的BIOS认功耗值本来就大大高于公版GT 660Ti,在超频过程中并没有遇到发输入、输出功率上限,进而影响超频幅度的问题,因而可以不用修改。但是对于公版GTX 660Ti来说,在保证散热的前提下还是可以适当提升这四个数值的。
3.破解高电压到1.2125v
如图5 ,只要将绿框中的四处308C11(0x118C30,对应1150000uV)改为54 80 12(0x12805对应1212500uV),同时把蓝框中的处E079AF(11500000)改为4803B(12125000)就能获得1.2125V的核电压。为什么不能将核心电压改得更呢?这是因为1.2125V是硬件限制的高电压,在不进行硬改的条件下我们是没有办法突破这个限制的。
4.修改显存频率
如图6,GTX 680的显存频率是根图中两个蓝框中的数值决定的。这两个10进制以后看不出和显存频有什么关系,不过笔者经过摸索找出了以下一些常见组合,修改后就能提高显存运行频率。
BC4B :默认1502MHz( 等效6008MHz)
804C:1600MHz(等效6400MHz)
644D:1710MHz(等效6840MHz)
204E:1800MHz(等效7200MHz)
另外我们也可以修改核心频率和GPU Boost频率。不过由于GPU Boost功能的特性,核心的实际运行频率一般都会比BIOS设定的要高,甚至会超过标称的GPU Boost频率,因此直接修改这两个参数的意义不大。当然,如果你为了在GPU-Z里面获得一个漂亮的参数截图的话,则另当别论。图7中,蓝框和绿框分别是GTX 680的GPU Boost频率、默认频率。不过其中的数值换算过来是我们在GPU-Z里面看到的2倍。比如蓝框中的0x0845=2117,除以2刚好就是GTX680的Boost频率:1059MHz。
在这里,我们不妨研究一下Kepler系列显卡的GPU Boost功能是如何影响频率的。首先我们要知道,Kepler系列显的核心频率不像以往产品那样可以进行逐MHz的调节,而是类似于C PU频率的调节方式:基频×倍频,这里的基频为13M Hz。因此GPU Boost功能在运行的时候是以13MHz为1挡进行增减的。于大能增大到多少则是由BIOS中的上限电压和频率表共同决定的。之前笔者并没有修改频率表(因为修改起来很繁琐,而且这个作用可以由超频软件中的增加频率offset来代替),只提升了高电压。在后面的测试中我们将会看到解锁电压对高GPU Boost频率的影响。
那么究竟是哪些因素在影响GPU Boost频率的运行呢?它们是温度和功耗,在3D模式下,只要没有达到温度或者功耗上限,GTX 680显卡就可以一直运行在高GPU Boost频率。反之,一旦触及了温度或者功耗上限,GTX 680显卡会自动降低1挡频率。如果降低一档频率后,GTX 680仍然达到了功耗、温度上限,那么它的频率会继续降一挡,以此类推。
需要说明的是,按照上文修改后的BIOS文件是不能直接使用的,因为显卡的BIOS文件中都有一个单元用来存放文件的校验码。修改后的文件与校验码不匹配,此时如果强行刷入这个BIOS,会导致系统出现黑屏、无法开机的情况。唯一的解决办法就是重新计算并填入文件的校验码,因此下面的步骤非常关键。
1. 点击HxD软件的Edit菜单→SelectBlock(图8)
2.进入SelectBlock对话框,在“Start-offset”栏输入400,“End-offset”栏输入FFFF后点击“OK”(图9)。
3 . 右键→ Copy( 或者直接“Ctrl+C”)复制选中的文本(图10)点击File→New(或者Ctrl+N)创建一个新文件,把复制的文本粘贴到这个新文件中,并保存为“checksum_fix_tmp1.rom”(图11)。
4.开启Ni BiTor6.06软件,导入刚才创建的checksum_fix_tmp1.rom文件。这时候NiBiTor会弹出Device unknown(无法识别的设备)错误对话框。不用担心,连续点击O K忽略一切弹出的错误提示,直到不再弹出错误对话框后把文件另存为checksum_fix_tmp2.rom。注意这里要选择File-Save Bios来保存,而不要用Save without checksum(图12)。
5 . 回到H xD软件中,打开刚刚用Ni BiTor保存的check sum_fix_tmp2.rom文件,全选(Ctrl+A)并复制(Ctrl+C)(图13)。
6.切换到先前打开的gtx680_org.rom文件,此时0x400至0xFFFF单元格还处于选中(高亮)的状态,直接把checksum_f ix_tmp2.rom中的全部内容粘贴过来。后把这个文件另存gtx680_mod.rom,整个修改的过程就完成了(图14)。
重新进入命令行模式并跳转到nvflash所在的文件夹,使用nv f l a s h-4-5-6 g t x680_m o d.r o m命令进行刷新。期间会有“Press‘y’toconfirm” (按y键确认)的提示,等出现“Update successful”字样后就可以重启系统了(图15)。
值得注意的是,部分显卡品牌的产品(比如华硕)默认开启了BIOS的写保护机制,在执行刷新命令后会出现错误提示。这时只要运行“nv flash--protectoff”命令解除写保护再刷新就好了(图16-1、16-2)。