解开G70自动超频之谜

DIY

拥有G70显卡(如GeForce 7800GT/GTX)的朋友一定会发现如下“怪”现象:有时在驱动中稍微提高一点核心频率,各种软件的测试成绩就会大幅提升;有时核心频率提高不少,但测试结果却和没超频前一样。更奇怪的是,当用Everest UE 2006或RivaTuner 2.0 RC15.8来查看G70显卡的工作状态时,你会发现它竟然有3个核心频率(图1),Geometric(几何单元)、Shader(阴影单元)、ROP(光栅操作处理器)的频率,而且Geometric频率还会在运行3D程序时自动超过驱动程序的设定值,就像自动超频一样!这是怎么回事?

30-d6d7-1.jpg
图1

解读谜团

1.频率步进为何过大

下表是笔者在对7800GT显卡进行超频时,记录下的驱动频率设定值和RivaTuner 2.0 RC15.8软件测出的3个核心频率数值,它们之间存在着不小的差异:

30-d6d7-b1.jpg

根据表中的数据,G70在以10MHz为步进值的超频过程中,不论驱动中的频率设为410MHz~425MHz范围内的哪一个值,用软件测得的ROP和Shader频率都是432MHz,这表明显卡根本没有按照驱动中设定的频率工作(步进值也不是10MHz),而是从默认的405MHz直接跳到432MHz,432MHz-405MHz=27MHz正是这个变化的增加值。此外,在以25MHz为步进值超频测试中,ROP和Shader频率的增加值也是27MHz,而Geometric频率比其他频率都高一些。

图2为7800GT显卡在使用驱动的“自动检测最佳频率”功能进行超频时的频率变化图。这个功能的原理是让驱动自行逐步提高显卡的频率,并在每次频率的提升后都进行一次简单的稳定性测试,最后找出驱动所认定的显卡极限频率。从图2可以看出,7800GT在超频时频率是呈阶梯状分段上升的。在给每段都标上频率数值后,我们发现每段频率之间的差值都是27MHz。

30-d6d7-2.jpg
图2

综上所述,在3D工作状态下,G70核心的频率变动不能做到和驱动设定的频率同步,也不能以1~2MHz的步进值来超频,它的频率变化是以27MHz为步进值。G70的核心频率就像是由27MHz的步进值再乘以一个倍数而得出的。按照前面的测试结果,由监控软件测得7800GT的默认核心频率为405MHz,这个数值正好等于27MHz×15。

再看看G70系列其他显卡的情况:7800GS是27MHz×14=378MHz;7800GTX(256MB)是27MHz×16=432MHz;7800GTX 512MB是27MHz×21=557MHz.。这很像CPU的“外频×倍频=主频”的计算公式,只不过CPU通常超的是外频,而G70提高的是“倍频”,这样的频率计算方式就把G70的核心频率划分为一个个以27MHz为间隔的区域。

现在我们可以解释本文开头提到的“怪”现象了:当在驱动中对核心超频时,有可能只提高一点点频率就达到了改变“倍频”的条件,使核心频率一下子获得了27MHz的频率增加值而“跃”至下一个频率区域,导致软件测试成绩一下子提高很多;有时频率调节的数值虽然比较大,但仍然处于某个频率区域的范围内,达不到改变“倍频”的条件,即核心频率根本没改变,这时测试成绩当然没有变化了。

2.几何增频是怎么回事

根据G70核心频率在软件中显示为3个数值这一点,我们认为G70核心可能被规划为了几个区块(Block),其中最主要的有三个:ROP光栅操作处理引擎、Shader像素着色单元和顶点单元,它们各自的工作频率互相独立。在2D模式下这3个部分都工作在275MHz的相同频率下;在3D工作状态时,它们的频率就会根据几何增频时钟发生器产生的27MHz步进乘上一个系数而得出G70的整体核心频率。NVIDIA的工程师很可能把核心中频率比较容易提高的部分设定为在3D工作状态下工作频率可以比其他区域的高,这样就可以巧妙避开使用提高核心整体频率这个难度较大的方法来进一步提升显卡性能。这个自动增频称为“Geometric Delta Clock”(几何增频)。

几何增频是由BIOS控制的,所以它的频率可以不受时钟发生器27MHz步进值的限制。前面的测试中已经表明它的增加值并不是27MHz,核心经过几何增频后的最终频率也不是以ROP或Shader单元的频率为基础,而是以驱动中设定的频率加上几何增频得到的。

如何控制几何增频

对喜欢超频的朋友来说,G70的上述两个特性并非“福音”。首先,过大的频率步进值不利于准确获得显卡的极限频率;其次,几何增频的幅度比较大,在超频时它很容易先达到核心的极限频率,而核心其他部分的频率与极限频率还有较大距离,导致显卡的性能无法充分发挥;再次,好不容易把核心频率超到某个值,但这时几何增频所在区域的频率超出显卡的极限,使显卡工作不太稳定。如果把频率稍微降低,但27MHz的步进值又可能造成超频失败。

由于步进值是受制于G70时钟发生器,我们没有办法改变它。幸运的是,几何增频是基于BIOS的,这就意味着我们可以通过修改BIOS来控制它的开/关或调节它的增幅。那么怎样修改BIOS去掉几何增频功能呢?首先我们要准备好NVIDIA显卡的BIOS刷新工具NVFlash 5.18和修改工具Nibitor 2.6。

第一步:先用Nibitor把显卡的原厂BIOS提取出来。方法是点击Nibitor主界面上方的Tools菜单,依次选择Read BIOS→Select Device(图3),在打开的菜单中选择你要提取BIOS的显卡(如果你的电脑安装了多块显卡,这一步选择非常重要),点击OK后软件就加载了所选显卡的信息。

30-d6d7-3.jpg
图3

第二步:再选择Read BIOS菜单中的 Read into Nibitor,就可以读出BIOS(选择Read into File则是把这个BIOS文件备份)。打开BIOS文件后,在Clockrate菜单中Geometric Delta Clock一项的数值就是几何增频的超频幅度(图4),默认为40MHz。把它改成0就表示关闭这个自动超频功能。当然你也可以只把这个数值改小一点而不关闭它,然后保存这个BIOS文件。

30-d6d7-4.jpg
图4

第三步:接下来用5.18版的NVFlash在Windows环境的命令提示符下刷新显卡BIOS,刷新命令为nvflash -4 -5 -6 xx.rom(xx为待刷入的BIOS文件名),最后重启电脑。

笔者发现,在BIOS中把几何增频的幅度改成0后,27MHz的步进就消失了。此时的G70核心就可以任意工作在驱动的设定值上,前面说到在2D模式下G70的3个部分可以工作在275MHz,就是因为2D状态下BIOS没有设定几何增频值。

几何增频对性能的影响有多大?

在知道如何关闭或修改几何增频的数值后,现在有两种G70的超频方案摆在面前:1.保留几何增频,在超频时把几何增频所在部分的频率超到最大,尽管其他区域可能还有余量;2.完全关闭几何增频,把核心所有可以调节的频率都超到极限。到底选哪一种呢?或许我们可以从下面的超频测试中得出答案。.

30-d6d7-b2.jpg

超频测试平台:

测试使用的丽台PX7800GT Extreme显卡默认核心是450MHz (软件检测为459MHz,带几何增频),显存频率为1100MHz.,为确保超频的稳定更换了散热器。笔者设定了3个超频方案:

方案1:核心超至486MHz,保留几何增频,几何增频所在区域工作频率为518MHz;

方案2:核心超至513MHz,关闭几何增频;

方案3:核心超至513MHz,保留几何增频,几何增频所在区域工作频率为540MHz。

上述三个方案的显存超频频率都是1250MHz。

对比方案1和2,虽然方案1中的几何增频使核心部分区域的频率达到了518MHz,但其测试成绩全面落后于拥有513MHz整体频率的方案2,而方案3由于保留了几何增频,它的性能又比驱动中设定频率相同的方案2高。此外,在1440×900这样的宽屏分辨率下,几何增频对性能的影响仍然比较明显。

笔者的7800GT在关闭几何增频前后所能达到的最高核心整体频率是513MHz,其实不少G70显卡在超频时几何增频所在区域的频率都能轻松超过500MHz。但在大多数情况下,关闭几何增频也无法让G70的超频能力有更好的表现,因为G70超频的步进实在是太大了。不过,方案3中通过几何增频高达540MHz的频率虽然没有使显卡在3Dmark中出现问题,但在运行《帝国时代3》时出现了花屏,而关闭几何增频后没有出现任何不稳定现象。DIY朋友可尝试这样的超频方法:先在关闭几何增频的情况下找出显卡的最高稳定核心整体频率,然后再打开几何增频,测试显卡在这个频率的基础上还能再增加多高的几何增频值,这样就可以最大程度地获取显卡的潜能。

30-d6d7-b3.jpg

后记

NVIDIA的新一代旗舰产品G71(GeForce 7900GT/GTX)也已上市,通过分析它的BIOS,笔者发现几何增频在G71显卡上仍然存在,而且默认的增幅达到50MHz(图5),由于G71和G70的架构相差并不大,因此G70超频的方法、技巧甚至超频遇到的困难都可能会在G71上延续。

30-d6d7-8.jpg
图5