欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

苹果Mac换用ARM架构:M1跑X86软件为什么不会卡?

程序员文章站 2022-12-03 10:44:25
相信大家都已经知道,苹果在最新一场秋季发布会中,宣告了全新的macbook产品。新macbook换用了苹果自研的基于arm架构的m1芯片,苹果从x86阵营转向,投入了arm的怀抱。苹果macbook换...

相信大家都已经知道,苹果在最新一场秋季发布会中,宣告了全新的macbook产品。新macbook换用了苹果自研的基于arm架构的m1芯片,苹果从x86阵营转向,投入了arm的怀抱。

苹果Mac换用ARM架构:M1跑X86软件为什么不会卡?
苹果macbook换用arm芯片

在传统观念中,arm是用于移动平台的架构,和桌面的x86芯片相比,arm芯片的能效更高,但性能羸弱。这次苹果macbook换用arm,同时macos 11仍对以往基于x86 macos开发的软件兼容,这就让很多朋友感到困惑——用新的macbook跑当前的x86软件,到底会不会卡?

苹果Mac换用ARM架构:M1跑X86软件为什么不会卡?
之前使用arm芯片的surface平板,运行x86软件效果并不理想,macbook会重蹈覆辙吗?

这种担心是有道理的。在此之前,微软已经做过了这方面的尝试。微软推出了使用arm芯片的surface pro x平板电脑,兼容x86的win10软件。然而人们发现,体验并不理想,传统软件运行起来缓慢迟钝。换用arm芯片的macbook会不会有这样的问题?这就来分析一下。

macbook的arm芯片足够强吗?

新macbook跑旧软件到底慢不慢,最关键的因素自然是新的m1芯片。人们普遍认为,arm芯片的性能水平无法和x86比肩,毕竟arm是简单指令集risc而x86是复杂指令集cisc,复杂指令集自然强大得多,但事实上这是一个误会。

苹果Mac换用ARM架构:M1跑X86软件为什么不会卡?

在规模上,苹果m1芯片足以和顶尖的x86桌面处理器并驾齐驱

cpu发展到今天,risc和cisc的边界其实已经相对模糊了。在当前的x86处理器中,复杂指令也是会分拆成为类简单指令来执行的。

而在规模上,苹果设计的arm芯片已经追赶上了x86,例如a14的芯片面积为88mm,共118亿个晶体管,而amd最新发布的zen3处理器中一个ccd的面积为80.7mm,共41.5亿个晶体管。考虑到a14还封装了ai模块、gpu等,a14芯片使用的是5nm工艺,而5800x使用的是7nm工艺,事实上大家的cpu单元部分,规模已经是并驾齐驱。

了解了规模,再来看看性能实测,这里引用anandtech的数据。anandtech使用了行业权威性能测试套件spec 2006来对比测试苹果a14、amd zen3以及英特尔tiger lake的性能,结果如下。

首先是整数性能,可以看到a14并不落下风。

苹果Mac换用ARM架构:M1跑X86软件为什么不会卡?

再来看看浮点性能,a14和zen3要明显领先于tiger lake。

苹果Mac换用ARM架构:M1跑X86软件为什么不会卡?

anandtech还使用了大家非常熟悉的geekbench来测试,结果如下。

苹果Mac换用ARM架构:M1跑X86软件为什么不会卡?

可以看到,在单线程性能上,a14的确已经能追上当前*的x86处理器。这次苹果macbook使用的m1处理器,架构和a14相似,但规格更高,晶体管规模达到了160亿个,增加了两个大核心,在性能上方面是可以令人放心的。

其实到了这里,我们也不难找出为什么surface pro x运行缓慢的原因。surface pro x使用的是高通sq1/sq2处理器,这基本是骁龙855的马甲。而即使是骁龙865+,对比a14以及最新的x86处理器,性能也依然不太够看……

此情此景下,加之win10 on arm较低下的指令翻译效率,surface pro x运行x86软件的体验就不甚理想了。是的,到了这里大家应该也能看到arm处理器运行x86软件,除了自身性能之外的其他影响因素了——操作系统的指令翻译效率。

macos 11的指令翻译效率高吗?

x86软件想要在arm芯片上运行,需要进行指令翻译。虽然arm指令集并不意味着性能低下,但毕竟它和x86还是不同的,指令需要翻译过来,才能让arm芯片执行。

在今年的wwdc大会上,苹果已经公布了指令翻译的方案。苹果宣布,将会为macos平滑过渡到arm平台,推出rosetta 2中间转换层。如果你是老果粉,对于rosetta这个词一定很熟悉——苹果mac电脑当年从ibm powerpc架构,迁移到intel x86平台,所使用的转换层正是rosetta。

苹果Mac换用ARM架构:M1跑X86软件为什么不会卡?
mac迁移平台这事,苹果已经干过一次了,当年mac从ppc迁移到x86的兼容层被称为“rosetta”

rosetta 2的作用在于,它通过指令翻译,可以让arm平台的macos,直接运行绝大部分的x86软件。从苹果的介绍来看,rosetta 2的性能还相当不错,它并不是在软件运行的时候,才翻译指令的,而是在软件安装时就做好了转换。

当然,这也并非说rosetta 2可以实现性能完全无损,它对avx指令兼容并不好,如果x86软件依赖avx乃至avx2,那么在arm平台上由于没有对应的高性能指令,运行效率会有明显下滑。并不是所有的软件都会用到avx指令集,总体来说,rosetta 2的性能应该还是可以接受的。

苹果Mac换用ARM架构:M1跑X86软件为什么不会卡?

这次mac从x86迁移到arm,rosetta 2对旧有x86软件的兼容也起着至关重要的作用

至于rosetta 2的实际表现会如何?我们可以从两方面来衡量。

首先是参考rosetta。苹果从powerpc迁移到x86时,也使用了类似方案,当年并没有太多人抱怨rosetta性能低下,我们自然也可以对rosetta 2抱有期待。

其次是参考开发者的实测。实际上,苹果早前就已经推出了基于a12z芯片的mac mini开发机,开发者们很早就能接触到rosetta 2,但到目前为止并没有什么关于rosetta 2性能低下的爆料,可见rosetta 2的实战表现应该相当不错。

苹果Mac换用ARM架构:M1跑X86软件为什么不会卡?
macbook换用arm之前,arm的mac mini开发机早已经有了,没有传出性能方面的负面消息

到了这里,我们又可以来分析一下为什么surface pro x的表现会如此糟糕了。在surface pro x的windows 10 on arm中运行x86软件,是边转码边运行的,并不像苹果rosetta 2那样在安装时作好转码工作,运行时无需再次转码。加上性能较弱的sq1/sq2处理器,运行x86软件拖慢卡顿也就在情理之中了。

总结

到了这里,相信大家都可以得出结论了。macbook使用的m1处理器性能非常强大,足以和顶尖的x86处理器同台竞技;而苹果又在macos 11中准备了高效的rosetta 2指令翻译方案,因此对于能否流畅运行之前的x86软件,大家无需太过担心。

根据苹果的说法,情况要比笔者文中分析的更加乐观。苹果宣称,m1要比之前macbook所使用的x86处理器性能高1倍,同时功耗仅为25%。从各种角度来看,新的macbook都非常值得期待,一起来静待上市实测吧。

苹果Mac换用ARM架构:M1跑X86软件为什么不会卡?
新macbook性能真的像苹果公布的那么劲爆么?

- the end -

#arm

原文链接: 责任编辑:朝晖