这个故事的男主角,是一位在Reddit上ID叫做“stlk0”的网友。他手里这台机器是2019年发布的16英寸MacBook Pro,这个年份和尺寸在Mac用户圈子里有着特殊的地位——2019年是苹果在彻底转向自研芯片之前的最后一个大年,16英寸的MacBook Pro更是当时性能最强的移动工作站之一,官方型号标识为MacBookPro16,1,机身编号A2141。根据苹果官方技术规格,这台机器搭载了一块16英寸LED背光IPS视网膜显示屏,初始分辨率3072×1920、226 ppi、500尼特亮度、支持P3广色域和原彩显示技术,屏幕本身就原生支持47.95Hz、48.00Hz、50.00Hz、59.94Hz、60.00Hz等多种刷新率。stlk0老哥这台机器的配置放到当年绝对是顶配级别的:一颗功耗大得吓人的英特尔酷睿i9处理器,具体可选配2.3GHz 8核或2.4GHz 8核版本,Turbo Boost最高可达5.0GHz,配备16MB共享三级缓存;再加上一块AMD的Radeon Pro 5300M独立显卡,4GB GDDR6显存,128位显存总线。这套组合在纸面上的性能底子即使放到今天也依然能打——AMD在2019年11月13日发布的官方新闻稿中明确,Radeon Pro 5000M系列是业界首款面向专业用户的7nm移动独显,基于全新的RDNA架构打造,Radeon Pro 5300M拥有1280个流处理器、20个计算单元,单精度浮点性能最高可达3.2 TFLOPS。但散热压力从第一天起就没小过,更何况stlk0老哥这台机器的具体屏幕面板型号是APPA044。
屡试屡败之后,stlk0老哥决定换个思路,不再盲目地乱试,而是静下心来仔细排查,到底是哪个部件在背后搞鬼。经过一番细致的观察和分析,他终于锁定了真正的罪魁祸首——那块AMD Radeon Pro 5300M独立显卡。他发现了两个非常关键的现象。
第一个现象是:在Boot Camp模式下的Windows系统里,Windows并不会使用英特尔的集成显卡(Intel UHD Graphics 630)来驱动内置显示屏,而是把所有显示输出都通过那块Radeon独立显卡来跑。这个架构选择意味着,哪怕你只是在桌面上看看网页、回回邮件,Radeon Pro 5300M也始终处于高度活跃的状态,根本就没有进入过低功耗的待机模式。这跟macOS下的逻辑完全不同——在macOS里,系统是会根据应用需求在集成显卡和独显之间自动切换的,看个网页、写个文档这种轻负载场景,系统会乖乖用Intel UHD Graphics 630来省电;但一到Windows底下,这套自动切换机制就不工作了,独显被强制常驻。
第二个现象更加具体:当MacBook Pro的内置显示屏以标准的60Hz刷新率运行时,这块Radeon Pro 5300M显卡的显存时钟频率一直维持在一个很高的水平上不下来,哪怕他只是开着桌面什么都不干,显存都没有要降频休息的意思。这就意味着显卡一直在白白地消耗电力,同时源源不断地产生热量,成了整台机器发热和费电的头号元凶。功耗居高不下,热量源源不断地往外冒,电池自然也就掉得飞快。
这个工具做的事情,根据stlk0老哥在Reddit上的介绍,包含了几个非常实用的功能模块。最核心的功能是自动化地给这台MacBook Pro安装48Hz这个自定义刷新率模式,用户跑一下工具,系统就自动识别并把新刷新率档位挂上去,全程不需要手动改注册表,也不需要写复杂的脚本,更不需要去折腾CRU那种容易翻车的EDID工具。工具还贴心地提供了48Hz和60Hz之间的切换功能,并且带有自动回滚机制——也就是说,如果切换过程中出现问题,工具会自动回退到安全的状态,不会把系统搞崩。除此之外,工具还附带了几个可选的CPU功耗预设,让用户可以根据自己的需求进一步微调处理器的工作状态。不过stlk0老哥也很诚实地在Reddit上说明了目前工具的适用范围限制:由于显示相关的改动是硬编码了他自己测试的那套确切配置,所以目前工具仅限于MacBookPro16,1搭配APPA044面板和Radeon Pro 5300M显卡的这种确切组合。
工具安装好、48Hz模式启用之后,效果可以说是立竿见影,甚至比stlk0老哥自己预想的还要好。根据他在Reddit上公布的、在相同亮度相同待机条件下的实测数据:当屏幕刷新率从60Hz切到48Hz之后,那块Radeon Pro 5300M在待机状态下的功耗直接从原来的14瓦骤降到了3瓦。14瓦到3瓦,这个降幅有多夸张呢?我们来仔细算一下:14减去3等于11,也就是说整整削掉了11瓦的功耗。11瓦占原来14瓦的比例是多少?11除以14约等于0.7857,换算成百分比就是大约78.6%,四舍五入就是接近80%,跟Wccftech原文描述的nearly 80 percent严丝合缝,没有一丝夸大。与此同时,显卡的核心温度也逐渐从66摄氏度降到了大约51摄氏度,足足跌了15摄氏度。对于笔记本这种内部空间紧凑的设备而言,核心温度能压低15摄氏度简直是脱胎换骨,直接从“烫手山芋”级别跌回了“温热可触”的舒适区。
值得注意的是,stlk0老哥发布的这个MacBookEco工具是彻头彻尾开源的,源代码完全透明地挂在GitHub上。这意味着任何有兴趣的人都可以把代码拉下来研读,看看自定义刷新率注入到底是怎么实现的,甚至可以基于他的工作做二次开发。这对于整个技术社区的辐射价值是不可估量的——比如,完全可以有后来者针对其他年份、其他配置的英特尔版MacBook Pro做适配扩展,打破目前仅限于MacBookPro16,1搭配APPA044面板和Radeon Pro 5300M这个确切配置的边界;也可以有人开发出更聪明的动态刷新率调度方案,让系统能根据是否插电、当前负载高低自动在60Hz和48Hz之间无缝切换,从而把能效平衡推向极致。开源的魅力就在于此,一个人点燃的火苗,可以烧出一片森林。