第一部分:Core m性能与限制墙
硅芯片会有一个指标叫做TDP,是芯片的最大所需要的散热功耗,也就是芯片实际预期中连续稳定的最大会散出的热量,耗用的电力绝大多数转化成了热量,虽然它们之间会有时间差(非纯电阻电路)。实际的TDP也就是实际的散热功耗,实际上只要消耗电能发出的热量的速度不等于TDP,芯片的温度就会变化,直到他们达到散热,发热平衡时达到稳态。所以功耗是决定实际TDP的主要因素。
当达到发热散热稳态时,芯片和机身表面会有一个较为稳定的温度,厂商可以根据自己设计的散热条件计算机器实际的散热能力,在知道TDP和自己设计的散热能力的情况下,这个最大机身温度也确定了,为了保护芯片,其实更多的是为了用户体验,厂商会控制这个温度。当散热能力和机身最大预期温度都确定的情况下,TDP也就确定了,芯片的长期最大功耗也确定了。
于是厂商会给芯片设计一个长期的最大TDP,限制了CPU的最大频率,这就是功耗墙。除此之外,芯片有一个自我保护温度,不能让芯片温度超过一个最大值(Tjmax,过热保护温度,skylake Core m为100℃),超过了这个温度也会强制降频,这就是温度墙。另外,DPTF框架可能会自动检测平板的使用状态,调节这两个墙,从而带来不同的用户体验。详见下图:
因为绝大多数应用并不会长期占用芯片资源,所以在应用需要的短时间内提供超过长期TDP的功耗值,可以大幅度增大性能,从而提升应用体验,而不会多发出很多热量。基于以上的观察,芯片除了会被设置一个长期的最大TDP外,还会有一个短期内的突发最大TDP。这种突发的超高睿频,是在几乎不付出功耗代价的情况下,大幅度提升使用体验的最重要方法之一。
Intel基于市场等因素给了厂商一个指导性的TDP设置值:4.5w for Skylake Core m。大部分厂商也是按照Intel的建议设计的。但很显然,4.5w这点可怜的功耗上限不可能满足芯片上的主要AP Core全速运行在高负载高频率下。于是为了更好的性能,我们需要调节这个功耗的墙,也就是功耗的上限。
一般的厂商会把这些设置写在固件里面供芯片加载。如果厂商在固件的设置中(比如BIOS设置,如上图)提供了选项,那再好不过,可以直接进BIOS设置。不过有些厂商并没有把这些设置摆出来,但是如果厂商开放了接口,我们可以用特殊的软件修改(比如这里的XTU软件)。
第二部分:XTU与功耗调节
正如我们上一部分所说,Intel Extreme Tuning Utility(XTU),这个软件可以访问并修改这些控制接口(前提是固件没有锁定这些接口,他们是开放的,如果固件锁定了,你需要刷无锁的固件以解锁),还能提供监控功能,支持几乎所有的酷睿平台(surface pro 4之类的也是可以用的),遗憾的是似乎不支持凌动平台。如何查看固件有没有锁定这些接口呢?可以通过另一软件:AIDA64 Extreme Edition来观察,观察的效果图如下:
从上图看出,示例的固件没有任何的限制,可以随心所欲。
打开XTU软件点击调节选项的advanced turning就可以调节所有接口了:
调节页面介绍如下:
具体用法如下:
1.下面打开XTU,你会看到下面这个画面
2.点击左边的Manual Tuning下的All controls,你就进入了这个软件的核心页面。首先你会看到这个
3.然后你会看到类似于此的画面
Reference Clock,处理外频,作为移动端处理器,不建议调整它,本人尝试过超过1Mhz以上的调整会导致死机,1Mhz以下会导致系统严重卡顿,我们忽略它保持默认的100Mhz。
PEG/DMI Ratio,据我所知它是总线频率,同样我们不需要用到它,也不要去调。
Core Voltage:核心电压,默认是default,这对于CPU的发热/频率起着至关重要的作用,它与频率成正比,与发热成正比,而且发热与频率成正比,这里面就存在一个权衡,警告:这是一个比较危险的选项,调整并点击Apply会立即生效,过低会导致断电重启,过高轻则断电重启,重责CPU击穿报废,除非你知道你应该调成什么,否则不要动。
Core Voltage Mode:该选项只有当核心电压在1.15V以上时才会可调,Adaptive为动态调整的电压,Static为固定的电压,一般来说使用动态电压有利于功耗性能的平衡,使用固定的会增加使用温度但是会有更稳定的性能表现。
Dynamic CPU Voltage Offset:电压浮动微调,基本同上
Intel Turbo Boost Technology:CPU睿频开关,这个要参考你的CPU是否有这项技术,有的话默认是开启。
Turbo Boost Short Power Max Enable:短时最大睿频,俗话就是CPU鸡血开关,会在短时间提高频率超过默频以提升瞬间体验
Turbo Boost Power Max:这里最大可以拉到512W,这个不是即时选项,不同于电压,它只是表示这功耗最大限制,建议在57W以上,即时不调其他选项,拉大它也有可能有性能提升
Turbo Short Boost Power Max:同理
Processor Current Limit:最大电流限制,同功耗,这里有个说法,156A是个阈值,超过它会有更好的性能表现,我是没有发现,不过还是将其设置在156A。
Processor Graphics Ratio Limit:显卡频率,此选项每增加1倍频,表示GPU核心增加50MHZ。
MultipLiers:倍频调节,这个就是影响性能的主打因素,可以直接通过滑块拉动,要注意的是这里需要和电压配合,拉2倍频或者4倍频一般来说不需要动电压,但更高的话就需要适当加压,ES以及MX版的CPU在这里不作限制,但是也要注意电压温度。
Cache选项下的Processor Cache Ratio,缓存频率,这里建议设置为与单核心倍频相同。
拉动完它会变成黄色,点击右下角的Apply,立即生效。
下面是核心显卡的超频页面,核心显卡讲的就是低功耗,故不做讨论,基本与CPU同理,13x为最大倍频,Voltage为电压。
这里是内存超频页面,默认是这个样子的:
我们需要按”Custom",然后你会看到这些:
Memory Multiplier:内存倍频,右边的就是内存外频,内存外频是可以调整的,你可以自由组合外频倍频,相乘即为频率。
要注意的是,所以对于内存的改动均需要重启生效。
这里是测试页面,可以测试CPU.内存/显卡的稳定性:
这里是保存页面,你可以把你的设置保存成一个文件下次直接加载而不需要再次一个个去调,保存按钮也在右下角“Save”。
总之,解开功耗墙,主要需要需要调节Turbo boost Power Max,Turbo boost Short Power Max,和Turbo boost Time windows,直接单击他们右边的数子就可以调节了,调节后,旁边的当前设置中变化的值会变成黄色,点击apply生效,点击discard取消修改。
注意,XTU的所有调节在重启后都会回复默认,所以出了问题请强制重启!
第三部分:XTU实战与效果
通过观察Power Limit Throttling(功耗限制降频,功耗墙)和Thermal Throttling(温度保护降频,温度墙)两项值,我们可以了解当前处理器是受到怎样的限制,我们的目标是在不触发Thermalthrottling的情况下(也就是散热允许的情况下),尽量将功耗墙提高。当然,不同的负载,带来不同的扇出,他们的功耗情况各不相同,所以每个程序可以提高的空间是不同的。这里指的芯片的负载是指实际活动的晶体管数量,不活动的部分为dark silicon,他们只有静态功耗。一般来说,计算结构的动态负载是很高的,比如,CPU-SIMD FU(AVX),GPU Compute component,之类的,它们一旦满载,功耗是很高的,其次是Cache,但是Cache可以以通过Banking的方法只活动访问的部分,比前面的计算单元好一些。而一些标量的运算/逻辑指令,分支指令,标量存取,则比不过前面的组合功耗大。所以不同的程序在100%CPU time占用的时候功耗千差万别。
一个程序有多大的提升空间,可以这么观察:以AIDA64 Stress CPU 为例示范:
注意到长期烤机的情况下,我们的CPU频率是无法稳定在满睿频2.0Ghz上的,而且Powerlimit throttling曲线告诉我们TDP回落到4.5w后,CPU 100%的时间都是撞到功耗墙的,所以4.5w无法让改应用满血,但此时CPU温度才65℃!这太低了,显然不是我们想要的,从功耗墙曲线看出来5.5w几乎是不撞墙的,大致猜测5.5w是该负载满血点,那么这个程序能从XTU中获得的大概提升为2Ghz/1.8Ghz,11%左右(在达到7w之前CPU早已满血,所以提升不会是7/4.5)。
接下来我们尝试AIDA64 FPU测试,丰富的SIMD运算,使其功耗大不少:
可以清楚地看到,short power max的5.5w能明显提供更高的性能。然而66℃还是太低,我们需要进一步提升,我们调到7w/7w 100秒尝试:
可以看功耗墙曲线不再是100%,比原来的低多了,频率也来到了稳定的1797Mhz,代价就是85℃的温度。当然,在这种情况下,我们还是没碰到散热墙(似乎FPU单元只能到1.8Ghz,他的速度可能比处理器其他的部分频率低点)。
所以,在没有碰到散热墙的情况下,性能提升一般是2Ghz/之前的频率(FPU那个除外)。
最后我们测试GPU部分,也就是功耗最大的部分(尤其是Intel这种完整FP64的GPU),负载是furmark:
可以看到有50%左右的时间触碰了功耗墙,GPU只有400Mhz,一半的最大频率都不到,68℃还有很大的提升空间。我们调到7/7 100秒。
可以看到,频率来到了600Mhz,功耗墙的情况也好多了,帧率为7FPS(截图的一瞬间为6)。
为了考验极限的情况,我们把TDP调至了9/9 100秒:
Power limit已经很低了,频率也来到了800Mhz,很接近最高的850Mhz,但是我们的芯片已经来到了100℃触动了温度墙,功耗带来的提升被温度墙抹杀了(FPS为8-9FPS,图中截图是同样一瞬间掉到了6,Temperature的话,一旦触碰到温度墙的一瞬间,频率回落到最低,温度迅速下降,过程十分短暂,此时温度就只剩80℃了)。
可以看到,在触动了温度墙的情况下,频率非常不稳定,所以功耗提升带来的性能提升就没有用了,所以这种情况下:性能提升为碰到温度墙之前的性能/初始的性能,然而这个临界点你很难找。
测试过程中很多经验表明:对于Core m 6Y30来说,7w的长时间功耗是安全的,不会触摸到温度墙。(注意:温度墙和散热的环境关系很大,笔者所处的环境为零上10℃左右,请注意你的环境调节)。
而对于其他的酷睿处理器,显然更高的频率需要提供的更高的TDP。正如本文所说,在散热允许的情况下(也就是不触碰温度墙),适当的提高你的机器的TDP,有利于显著提高机器的性能,从而让你的处理器更加“满血”。