其实就 A 系列和 X86 性能之争由来已久,令人搞笑的是两套完全相反的理论一直在循环出现,看的我非常难受:
1. 苹果不行,Geekbench 不行,靠的都是专门的 ASIC,若论通用计算 X86 吊打苹果。
2. 苹果也就通用计算能看一点,Intel 可是有高贵的 AVX512 !专业应用全看 SIMD !果必输!
先说 1 。搜一下我的记忆,大约三四年前的时候 Twitter 上已经有人拿当时的 iPad 用 Z3 跑了分,吊打 i7 。Z3 是个什么呢,输入一套逻辑约束,构造一个解满足这些约束,或者告诉你找不到解。这玩意够通用计算了吧?这还是几年前。
看看 Anandtech 的文章,A 系列的 U 在各个参数的堆料上都是压着 Intel 打,发射宽度,乱序窗口,老生常谈的缓存系统……ARM 新的内存模型可以让 A14/M1 的原子操作在没有竞争的情况下比 X86 快一个数量级。这样的例子有很多。前段时间看到的数据大约是 A 系列的 IPC 比 X86 高近一倍,指令多 10%,一个频率 3GHz,一个睿频 5-6GHz (顶级散热了),勉强能打了吧?
然鹅 5-6GHz 是桌面上的情况。MacBook Pro 的散热跑不到那么高的。所以现在的情况就是,单论通用计算,跑跑 JS,MacBook Pro 16/iMac 已经在 Mac 家族要垫底了。
其实 performance per watt 就是性能。现在 CPU 的问题就真的只是散热上不去。不知道你们有没有床上写代码的经历,我的顶配 16,只要不小心挡住出风口,kernel_task 就会疯狂占用 CPU 时间。以至于我最近行成条件反射,听到风扇就会查一下是不是有东西挡我 Mac 了。换了 M 系列,不论是峰值性能,持久性能,还是糟糕散热的性能,都会有显著提升。日常写代码操作还没有独立显卡抢散热。
回到 2,先吐槽下 AVX512:Intel 在执行 AVX512 的时候会自动全 CPU 降频。我记得之前有在某个数据中心的博客上讨论过,假如代码跑在虚拟机上,隔壁邻居跑了个 AVX512……
这玩意真的就完全看你的应用场景,软件适配了。很多人这辈子用的最刺激的应用估计就是某个没写好疯狂重渲染的 React/Vue 了,根本轮不到这类操作。我上半年做了一些简单的深度学习工作,同样的显卡( Titan RTX ),我的代码比学术界的某个库(上层应用,不是底层框架)快了 10 倍,GPU 占用率拉到满,可惜必须用那个库,哎。
比如说你要做矩阵计算,然后手撸了两层循环,那 A14 和 i9 就……很难说了,拼的是编译器。可是苹果又不是没有提供 Accelerate,你用它的矩阵乘法,数据量大了直接帮你放到专门的电路上,压着 X86 打。跑模型也不需要自己拿 C++写个 RNN,用系统 /Tensorflow,专用电路肯定是比 Intel 快得多的。要知道老黄直播带货的时候最喜欢说他的加速卡一个机柜干掉 Intel 一个机房了。
说到底,2 真的没啥好说的,要是你用的专业软件真的就非常 Windows,非常的没有用 GPU,非常的依按照 Intel 优化了自己的 SIMD……那你就继续用呗。我平时写码编译反正没有这个需求。
分享一个优化 ARM SIMD 最后比 Intel 省钱的例子:
https://blog.cloudflare.com/neon-is-the-new-black/最后,感觉 M1 显然是不够大。内存上限,核心数,IO 带宽……这一代只有两个 Thunderbolt 3,很难受。这玩意你不能说苹果搞不出大的,但肯定需要时间,所以就坐着等好了。看看明年的 MBP 16,后年努力一把 Mac Pro 。我自己是买了个 Mac Mini 放公司玩,反正便宜,再不济当个 CI 服务器好了。