Board logo

标题: 三棒跑分被踢爆:Galaxy S4跑分超频 平常降频 [打印本页]

作者: akilla    时间: 2013-7-31 22:33     标题: 三棒跑分被踢爆:Galaxy S4跑分超频 平常降频

http://news.mydrivers.com/1/271/271016.htm

PC时代,有关测试跑分作弊的争议就从来没断过,移动平台也很好地“继承了这一光荣传统”,安兔兔屡受质疑、3DMark偏袒痕迹明显,厂商的针对性优化也早已是公开的秘密。

最近,Beyond3D硬件论坛的@AndreiF就发帖称,他通过测试发现,三星Galaxy S4配备的Exynos 5410处理器存在作弊现象,PowerVR SGX 544MP3 GPU在基准测试跑分的时候频率可以达到533MHz,但是日常应用、游戏里却被卡在最高480MHz。

为了验证,AnandTech拿出了他们自己买的两部S4,其一就是国际版GT-I9500,其二是韩国SK电信版SHV-E300S,搭载三星自己的SS222 LTE基带。它们俩用的处理器都正是Exynos 5410,拥有四个A15 1.6GHz、四个A7 1.2GHz CPU核心。

【GPU果然在“变频”】

幸运的是,不需要root,一个简单的命令就可以得到三星GPU的当前工作频率:

adb shell cat /sys/module/pvrsrvkm/parameters/sgx_gpu_clk

循环运行此命令,即可查看GPU的实时频率。代码如下:

#!/bin/bash

while [ 1 ];
do
        clk=$(./adb shell cat /sys/module/pvrsrvkm/parameters/sgx_gpu_clk)
        if [[ $clk > 481 ]]
                then
                echo "Clock is over 480"
        fi
        echo $clk
        sleep 1
done

运行任何游戏,即便是要求非常高的,GPU频率始终不超过480MHz,验证了@AndreiF的说法,但是根据内部消息,三星从来没有公布过Exynos 5410的最高GPU频率,所以到现在为止也无可指摘。

Galaxy S4被踢爆:跑分超频 平常降频
Epic Citadel:480MHz

但是我们来跑跑分。启动GLBenchmark 2.5.1,GPU频率马上就跑到了532MHz。AnTuTu安兔兔、Quadrant象限测试同样如此。@AndreiF似乎是对的。

Galaxy S4被踢爆:跑分超频 平常降频
安兔兔:523MHz

不过有意思的是,最新版的GFXBench 2.7.0(之前叫做GLBenchmark 2.7.0)却不存在这种现象,最高频率仍旧是480MHz。

频率上这10.8%的变化对性能的影响是显而易见的,三角形输出率平均可以差13.9%。

Galaxy S4被踢爆:跑分超频 平常降频

通过联系该工具的作者Kishonti,可以确认两个版本的底层测试机制是完全相同的,新版并未做什么变动,也就是说他们并未针对三星处理器作调整。

那为什么会这样?或许只有三星能解释了。
CPU也不老实】

事情到这里应该告一段落了,但我们继续深挖一下:GPU之外,CPU是否也存在类似的现象呢?

CPU频率的监控容易多了,System Monitor之类的工具都可以做到。先启动GLBenchmark 2.5.1,“八核处理器”实际工作的是A15集群,默认频率为1.2GHz,而且从来没有低于这个数值,即便是空闲的时候。

Galaxy S4被踢爆:跑分超频 平常降频

再启动GFXBench 2.7.0,这次运行的是A7集群,频率为500MHz(虚拟频率250MHz)。两个版本还是不一样。

Galaxy S4被踢爆:跑分超频 平常降频

AnTuTu、Linpack、Benchmark Pi、Quadrant等其它测试工具也同样如此。看来在测试程序启动的时候,CPU管理机制就已经确定了如何运行,期间不再变动。

有趣的是,这种现象并不是三星的专利,高通骁龙600版的Galaxy S4也会这么干,只要程序启动就给所有核心设定一个频率,然后不再变化,不管负载如何都一样。

Galaxy S4被踢爆:跑分超频 平常降频
Linpack:Exynos 5所有A15核心1.6GHz、骁龙600所有核心1.9GHz

注意,这和GPU上的变动是不同的。GPU 532MHz只能在跑分的时候看到,CPU频率则对任何应用都是可用的,只不过在这些测试中上来就指定了最高频率。
【揭示三星的幕后操作】

问题找到了,但到底发生了什么?三星是怎么设计的?

AnandTech找来了三星自带的可以改变动态电压频率调整(DVFS)的高级工具TwDVFSApp,使用十六进制编辑器打开apk文件,寻找有嫌疑的字符串,最后发现了一个“BenchmarkBooster”(基准测试加速器):

Galaxy S4被踢爆:跑分超频 平常降频

高亮区域可以看到很多根据Android Java命名方式列举的测试工具,包括Quarant标准版/高级版/专业版、Linpack免费版、Benchmark Pi、安兔兔,都是出现过问题的,但奇怪的是没有GLBenchmark 2.5.1。

TwDVFSApp运行期间涉及到的文件也可以轻松挖掘出来:

//sys/class/devfreq/exynos5-busfreq-int/min_freq
//sys/class/devfreq/exynos5-busfreq-mif/min_freq
+/sys/class/thermal/thermal_zone0/boost_mode
2/sys/devices/platform/pvrsrvkm.0/sgx_dvfs_min_lock

TwDVFSApp将特定的DVFS状态与应用联系起来的时候,boost_mode文件的值就会从0变成1,很容易就辨别受影响应用是否在运行,比如启动和退出Benchmark Pi的时候分别如下:

shell@android:/sys/class/thermal/thermal_zone0 $ cat boost_mode               
1

shell@android:/sys/class/thermal/thermal_zone0 $ cat boost_mode               
0

还能找到针对Fusion 3(骁龙600处理器加MDM9x15基带)、Adonis(Exynos 5410开发代号)的字符串,同样都带有加速字样:

doBoostAll
doBoostForAdonis
doBoostForAdonis::
doBoostForFusion3
doBoostForFusion3::

更值得玩味的是,TwDVFSApp还是个广播接收器(broadcast receiver),似乎还会向不在白名单之列的其它测试工具发出BenchmarkBoost模式的请求,目的显而易见。

6Lcom/sec/android/app/twdvfs/TwDVFSBroadcastReceiver$1;
6Lcom/sec/android/app/twdvfs/TwDVFSBroadcastReceiver$2;
?Lcom/sec/android/app/twdvfs/TwDVFSBroadcastReceiver$IntentInfo;
4Lcom/sec/android/app/twdvfs/TwDVFSBroadcastReceiver;
boostIntent
5com.sec.android.intent.action.DVFS_FG_PROCESS_CHANGED
*com.sec.android.intent.action.SSRM_REQUEST

到此,我们不仅知道了哪些程序会受到影响,也发现了疑似白名单,以及TwDVFSApp是如何为特定应用指定特定DVFS状态的。
作者: akilla    时间: 2013-7-31 22:38

这针对antutu的手写代码配置,鹏泰水军快来救主。
之前安兔兔黑华为那叫一个用劲,这次估计三棒的百亿美金用到位了,安兔兔屁都不敢放一个

作者: hypergiant    时间: 2013-7-31 22:47

posted by wap, platform: iPhone

哈哈,花钱搞跑分,为啥不花点钱把瓷砖外形换换,把万年的塑料外壳提高城金属?




欢迎光临 TGFC Lifestyle (http://bbs.tgfcer.com/) Powered by Discuz! 6.0.0