梦晨 发自 凹非寺

量子位 报道 | 公众号 QbitAI
苹果M1又快又省电,除了跑分很高之外,实际体验上也有一种流畅感。
苹果到底怎么做到的?
原来除了硬件性能强大以外,软件层面也有优化技巧。
一位名叫Hoakley的程序员偶然发现了其中的秘密。
这老哥总之是有钱,M1和英特尔版的iMac都买了。业余时间他喜欢自己开发点实用小工具,比如压缩软件。
老哥在后台测试自己的压缩程序时发现,M1上只有4个核心在跑,还有4个闲着
换到英特尔上试试,因为还没用到虚拟核心,是由8个真实核心共同承担了工作。

回到M1里仔细一看,使用率高的还不是性能高的那4个,而是“效率核心”。

4核有难,4核围观

在M1芯片的8个CPU核心里,有4个被称作“Firestorm”的性能核心,另外4个是“Icestorm”效率核心,性能弱一些,不过功耗更低
研究了一下,老哥发现是自己把任务优先级设低了,提高以后,就能让4个性能核心参与进来。

老哥恍然大悟,原来这就是苹果的策略。
让优先度低的任务只占用效率核心,慢点就慢点吧,谁让你优先度低呢。
性能核心保持空闲状态,随时应对突发的高优先度任务。
App启动速度快,切换流畅的原因找到了:4个高性能的核心一直候着呢

非对称核心

MacOS给开发者提供了4种优先级,分别是后台(background)实用(utility)用户发起的(userInitiated)用户交互的(userInteractive)
如果不指定的话就归为默认,由操作系统自己安排。
Hoakley老哥把自己的压缩软件改造成可以随时调整优先级的,然后准备了一个10GB的文件开始测试。
在英特尔CPU上,最高优先级完成压缩需要23.3秒,调成最低优先级需要26秒。

在M1上,最高优先级运行只要14.1秒,调成后台优先级直接涨到101秒
老哥认为,牺牲一些不重要任务的运行速度,换来的使用体验上的流畅,太值了。
比如备份文件就不用着急,即使慢到用15分钟备份不到1G也无所谓。
历史上也有这样一个反面教材。
2006年的时候Linux内核引入了一种叫完全公平队列(Completely Fair Queuing)的I/O调度机制。
虽然在理论上能提升总体的运行效率,但用户正需要完成的任务总是有一些延迟才能执行。
因为用户体验太差,最终完全公平队列被大多数Linux发行版放弃了。
不过也有人不喜欢M1的这种机制,他认为在笔记本上这样做可以延长续航。但台式的iMac上真的要牺牲运行速度吗?反正都是插电源的。

英特尔:在学了在学了

其实CPU内核分性能核心和效率核心这件事,手机上的Arm芯片早就在做了。
甚至高通还在研发中的骁龙875,被曝光在这种架构基础上还增加了一个“超大核心”Cortex X1。总共1+3+4构成8个核心。
苹果M1将Arm平台带到了PC市场,让英特尔开了眼。

在CES2021上曝光的12代酷睿Alder Lake,英特尔也宣布要区分两种核心了。
AMD知道了这个消息后,直接把挤牙膏的Zen3+项目给
取消
了,转而全力研发下一代
Zen4
架构处理器,代号Raphael,预计2022年发布。

不知道AMD会不会选择跟上这个潮流。
参考链接:

[1]https://arstechnica.com/gadgets/2021/05/apples-m1-is-a-fast-cpu-but-m1-macs-feel-even-faster-due-to-qos/

[2]https://eclecticlight.co/2021/05/14/cores-shouldnt-all-be-the-same-m1-macs-do-better/
本文系网易新闻•网易号特色内容激励计划签约账号【量子位】原创内容,未经账号授权,禁止随意转载。
点这里👇关注我,记得标星哦~
英伟达CV公开课免费报名!
6月2日/下周三第2期直播中,英伟达专家将实战演示如何快速搭建面部情感识别系统,带大家低门槛、高效率学习AI模型的搭建、训练与部署。欢迎扫码报名~
p.s. 报名后还可入群获取其他课程回放课程PPT源代码哦~
一键三连「分享」、「点赞」和「在看」
科技前沿进展日日相见~
继续阅读
阅读原文