Skip to main content

神舟同方模具笔记本性能提升笔记

· 20 min read

前面是一些啰嗦话

HASEE向来是一个不折腾就不能用的牌子,购入后换硅脂刷系统已经是基本操作,但我们面临的最大问题是移动平台的功耗限制。对于一个游戏本,OEM设置的功率墙温度墙过于保守让芯片犹如被砍断了四肢,发挥不出自己本来的性能。作为一个穷学生,已经买了游戏本也就不用提换桌面平台之类的话了,唯一能做的就是在软件层面上尽可能地释放机器的性能。

!> 本文中提到的各种操作仅适用于 GJ5CN64 模具,其他型号仅作参考

很多游戏本使用了公版模具,对于它们来说,模具型号要远远比机器型号好用得多,毕竟都是换汤不换药,仅仅是神舟笔记本中就有Z7-KP7EC、Z7-KP7GC、Z7-KP7GA、Z7-KP7GE、Z7-KP7GH、Z7-KP7S等型号使用了同方的GJ5CN64模具,说起来同方模具,现在我就一句话:“后悔,非常地后悔。”不过好在这个模具销量大,也就有了很多现成的方案,而我仅仅是站在巨人的肩膀上吹吹风,纳纳凉。

出厂状态下有多么不堪

有些东西,不测不知道,测试一下,看一看真实的数据,才能明白原来游戏本游戏性能不够强不仅仅是因为cpu和gpu的型号数字不够大或者散热模块不够给力。 我在电脑到手后仅仅是换了硅脂刷了系统,在接下来的一年多没有对固件下手,而每次闲得慌做简单压力测试的时候都会发现,cpu空载能够维持在3.8GHz附近,只要有大负载就会降频到基准频率2.2GHz附近,而且还存在着cpu单烤最高56w,cpu、gpu双烤最高35w的功率限制,在如此保守的功率限制下核心温度维持在80°C左右,散热模块仍有余力。 于是在被迫居家几个月后,我开始对这台游戏本开刀。

修改 BIOS

要想解决功耗限制的问题,最好的办法就是从根本入手:BIOS

!> 以下内容与AMI BIOS有关,Insyde等其他厂家需要相对应的方案

获得 BIOS 文件

对于神舟来说,这个答案很简单,只要在必应、谷歌上搜索“神舟 BIOS”就可以找到神舟客服管理平台,奇怪的是这个网站明显是对公网开放的内部网站,主页要求登录但BIOS页面没有登录验证,页面老旧但BIOS文件一直在更新。总之目前还可以随意下载官方的BIOS文件。 而在我找到这个网站之前,我还通过提取BIOS的方式获得了BIOS文件,只是畏于提取文件可能不完整不敢做进一步修改。AMI BIOS可以使用Universal BIOS Backup ToolKit提取,图形化操作,没有什么难点。

修改并强刷 BIOS 文件

!> 刷BIOS是十分危险的行为,特别是刷入自行修改的BIOS文件。在刷入之前你有充足的时间检查修改是否正确。即使是正确的BIOS,一旦在刷入过程中出错就可能导致损坏

虽然我没有做准备就强刷了,刷之前还是备一个编程器吧。

?> 修改方法来自于 Win-Raid Forum ?> 中文教程及修改后的文件来自于 http://www.bswaterb.club/?p=218 ?> 以下是修改方法的简要介绍

  1. 在UEFITOOL NE版中打开BIOS文件,提取出AMITSE(PE32模块)的As-Is和Setup(PE32模块)的As-Is
    (这里的As-Is指的是在UEFITOOL NE中右键中的 Exctarct As-Is… 所提取出的模块文件,拓展名为.SCT)
  2. 用Universal IFR Extractor分析提取出的Setup PE32模块,这样可以将PE32模块转换生成可读的、清晰的文本文件
    (Mudule Location选择上一步中提取出来的setupdata的stc文件,然后点Extract)
  3. 在文本编辑器中打开分析生成的IFR文档,复制如下图中高亮区域的Form Set ID代码。这串代码是BIOS中Main菜单对应的Form Set ID,也能作为我们接下来对于其他ID进行定位的工具。
  4. 创建一个新的txt文档,用于记录接下来我们找到的各类信息,将3中复制的Form Set ID代码粘贴到这个文档中。
  5. 返回IFR文档,搜索Form: Setup,在搜索结果的下面,有着诸如Ref: Main 和 Ref: Advanced 的字样。这些便是BIOS中被隐藏的菜单的列表,也是你在AMIBCP里Setup目录下看到的菜单。
  6. 此时再利用例如Form: Advanced对多个结果进行搜索,若ID与隐藏菜单ID相符,则跳过,若不相符,则说明这个ID对应的菜单在当前BIOS菜单中是可见的。有时,同一个’Form: XXXX’可能会找出两个以上的结果,说明有的ID没被用上
    将这些信息以类似下图这样的方法规范记录下来:Reveal指让其在菜单中显示出来,Rename指将这个菜单重命名,Leave指将这个菜单移出主界面中,Swap Exit指用这个菜单替换原先的Exit菜单,隐藏菜单ID的最后四位会在后面用到
  7. 用十六进制编辑器打开提取出来的AMITSE PE32模块,使用查找功能对记录下的第一个Form Set ID进行搜索,你可能会找到15-30个结果,第一个结果一般都不是我们想要的,点击 ‘查找下一个’,当右边显示有连续的相同内容的区域时,它很有可能就是我们要找的地方了。以下图为例,蓝框中的10 27是Setup菜单的Form Set ID,蓝框上面红框中的是所有的功能菜单的ID,蓝框上面红框中的是隐藏的功能菜单的ID(某些模具在蓝框下面的是显示的功能菜单的ID,具体差异见BS的教程
  8. 将上面红框中与下面红框中的内容再次记录到文档中,注意要记录对应的起始地址与正确的字节数量
  9. 以上图为例,选取一个被隐藏的菜单的四位ID,比如在十六进制编辑器中输入Chipset菜单的ID’19 27’进行寻找,找到一个隐藏菜单ID连续出现的区域,记录下这个代码块和它的起始地址
  10. 接下来开始修改,以下图为例,在你的文档中:
    • 修改起始于@0055930处的隐藏部分代码块:将短ID为’1a 27′(Security)和’15 27′(Exit)对应的长ID 替换到原先隐藏 ’17 27′ 和 ’18 27′ 的代码区域,然后将剩下的行全部改为 ’00’
    • 再修改位于@00053000处的隐藏短ID列表,将原组合修改为现在的组合,剩下的区域补位 ’00’
    • 这里把Security菜单和功能单一的’15 27’版Exit菜单隐藏,前者是出于用户安全考虑的,如果你执意要让Security菜单可见,那就不要将其ID列在隐藏代码块 与 隐藏ID列表中,同样的,空余的区域记得补满 ’00’。
    • 把文档中修改好的内容录入到十六进制编辑器中对应的位置
  11. 保存修改好后的AMITSE PE32模块,将其替换到在UEFITOOL中打开的BIOS中,本例子中应选择 Replace As-Is 项进行替换。替换完成后保存BIOS文件,接着打开AMIBCP,加载刚刚修改过的BIOS文件。定位到Setup Configuration=>Setup,修改右侧菜单需要显示的项的Access为User,本例中还需要修改名称避免与原有菜单名称重复(同时存在两个Main Advanced Boot菜单)
  12. (警告:危险操作) 利用INTEL FPT进行BIOS刷入,fptw64.exe -f -bios [修改后的文件名称]

FPTW64.exe并不通用,你需要找到适合你自身机器ME FW version的FPT,你可以在BIOS主页或者HWINFO64中查看到你的ME版本信息,再到 Win-Raid Forum寻找

?> 这里要提一下我的悲惨经历,我从官网下载BIOS文件之后发现EC部分是独立的,因为懒和怕所以只刷了BIOS。但是官网的BIOS比出厂BIOS版本新,起初刷过BIOS之后并没有发现什么异样,但几天后我才发现BIOS时钟不动了,无论是开机关机、在Windows还是BIOS还是Hackintosh,BIOS时钟都不走。奇怪的是我最近并没有对机器进行大拆,不应该是硬件损坏,BIOS设置能储存也没有报错,证明BIOS电池还有电。这个问题又困扰了我几天,最后在网上某个角落里,我看到有个人说了句BIOS和EC的版本必须一致,才刷了EC,BIOS时钟也恢复正常了。或许,这只是我的幸运吧。

不刷 BIOS,使用setup_var修改隐藏设置

这是一个比刷BIOS更高级的方法,优势就是不需要刷BIOS,劣势就是操作的难度更大而且必须手动在efi shell环境输入一系列命令,危险性也更大。 依赖于setup_var工具,原理与上一节寻找并修改BIOS文件中特定位置字节的方法相似,但setup_var是直接修改BIOS闪存中的数据。 这个方法我没有亲自实施过,也就不班门弄斧了。

修改 BIOS 设置

刷入了已经解锁的BIOS之后,我把BIOS菜单翻了个遍发现有很多设置项根本不知道是什么意思,真正需要修改的并不多

CPU 降压

!> 以下内容与INTEL CPU有关,AMD请yes

由于厂家生产的cpu体质参差不齐,体质差的cpu在电压较低的情况下运行不稳定,所以为了保持同型号产品的参数一致、运行稳定,厂家会把cpu统一升压,升压在桌面平台并不会有什么影响,如果需要超频还需要手动再升压。但在散热捉急的移动平台,事情就反了过来。 移动平台最容易触碰到的就是功率墙,众所周知,功率=电压x电流,高电压确实可以提高性能,但在触碰温度墙之后的自动降频面前,再高的理论性能和散热也没用。于是,通过降压减小功率避免触碰功率墙以提高主频就成为移动平台的“超频”法。

英特尔给我们留了后路,Intel Extreme Tuning Utility(简称XTU)可以调整很多与性能有关的硬件参数,具体能调整多少与BIOS的开放程度有关,CPU降压仅仅需要关注其中的一个值:Core Voltage Offset,调为负值,即为降压。我的i7-8750H体质还算凑活,降压0.16v可以稳定运行。

!> XTU的很多设置可以直接对硬件造成损伤,不要调整你不熟悉的参数。 !> 移动平台不要升压,升压有风险,移动平台也不适合超频 !> 经过理论与大量实践表明,降压很难对硬件造成损伤,但也应小心操作

每块CPU芯片能承受的最低电压都是不同的,如果想知道一个CPU的体质,那就一点一点试,如果降压过多电脑会直接掉电,而略多时Windows会蓝屏/绿屏,电压再高一点时就需要长时间的稳定性测试才能确保CPU没有潜在的不稳定因素。在测试的时候你会保存好自己的数据,但是在平时使用时就不一样了。我的CPU在降压0.175v时就可以通过五个小时的烤机,但长时间待机或睡眠很容易出现假死的情况,所以最终为了求稳定在了-0.16v。

欺骗功耗墙

!> 下面的部分内容是博主自己的想法,没有足够的材料支撑,请谨慎参考 !> 部分内容参考自 http://www.niniu.org/archives/130 https://forum-sc.msi.com/index.php?topic=103.0

经过了CPU降压之后就舒畅很多了,在低负载时可以稳定运行在最高主频,但高负载就不一样了,那个35w的功耗墙是我心头永远的痛。BIOS确实解锁了,但TDP管理并不在BIOS里,而是那个独立的EC固件。而通过修改EC这个关键词并没有找到有效的资料,所以还需另辟蹊径。 不知最初的修改教程来自于哪里,也不知为什么要设置这样一个机制,也不知道究竟会产生哪些负面影响,一个欺骗功耗墙的方法浮出水面。 CPU VR Settings(电压校准器),虽然没有找到详细的介绍文件,但是从校准器这个名字可以推断出这一设置直接影响了CPU本身的功率计算。而通过这个功能欺骗功耗墙的原理就很好理解了。 要想欺骗别人,首先要欺骗自己,通过电压校准器使CPU计算出一个错误的比实际更低的运行功率,从而影响之后的各种电源管理策略。如果是这样的话调节电压校准器会不可避免地带来隐性问题,整个计算机系统都忽略了通过错误计算排除的那部分功率,但它确实实际存在的,最担心的大概就是散热系统和供电系统吧。

  1. 根据上文解锁BIOS或使用setup_var修改BIOS设置
  2. 设校准后的功率值为y,实际的功率为x,功率墙为a,则y与x之间的关系可以描述为:y=[IMON Slope /100]*x IMON Prefix [IMON Offset / 1000]; 其中IMON Prefix是正负号。可见x与y构成一次函数,在未调整时y=x,IMON设置即是修改这个一次方程的斜率和截距。这条直线与直线y=a的交点A的横截距为实际触发功率墙的功率,我们的目标就是将A点右移。
  3. 一个方法是减小斜率,比如功率墙为35,我希望把功率墙提高到50,那么IMON Slope就设为70
  4. 另一个方法就是减小截距,仍然如上例,IMON Slope设为100,IMON Prefix设为-,IMON Offset设为15000
  5. 同时减小斜率和截距的方案就更多了,我认为斜率过小会影响极端情况下的保护功能,截距过小会影响低功耗状态下的功耗计算,所以具体如何调整还要见仁见智。

由于没有足够的材料,我也不愿意冒风险,所以修改CPU VR Settings的方法也是浅尝辄止,没有深究。这个方法确实是有效的,对于我这种35w功耗墙的游戏本,有一套这样的方案做备用也是很不错的。

解锁温度墙

温度墙一般只要解锁BIOS都可以解锁,在Thermal Configuration -> CPU Thermal Configuration -> TCC Activation Offset,这个值就是在100的基础上做加减得到实际温度墙。由于我的笔记本默认温度墙95°C已经足够高了所以就没有深究。