ARM方面刚刚公布的v9指令集,可能暂时还很难对手机行业产生影响。

编者按:本文来自微信公众号“三易生活”(ID:IT-3eLife),作者:三易菌。

类似“10年来最重要的创新”与“未来3000亿颗芯片的基础”这样的话语,在2021年3月31日凌晨ARM方面正式发布他们的ARM v9指令集时,无疑显得他们是相当得意的。 

毕竟ARM已经有长达十年时间没有对旗下处理器的指令集进行大幅修改了,现行的ARM v8指令集更是移动处理器刚刚进入64位时诞生的,虽然一直在小修小补,但底子上可以说已经是个“老古董”了。因此就算再怎么进行安全性修补与性能增强,那些十年前就定下来的技术规格,如今当然可能已经成为新时代ARM处理器继续提升性能的制约。 

不仅如此,回溯历史不难发现,近几代的ARM指令集进化,几乎每次都引领了移动设备体验的革命。例如从ARM v5进化到ARM v6时,让最早的“多媒体手机”得以实现,也成就了诺基亚、摩托罗拉最辉煌的时光;ARM v6被ARM v7所取代后,则带来了经典的Cortex-A8架构,真正开辟了iPhone与Android的触屏智能手机时代;而ARM v7到ARM v8的转变,则首次将“64位计算”带到了手机上,为如今5G、手游、手机拍照的兴盛铺平了道路。 

那么问题就来了,新的ARM v9指令集这次也能带来智能手机性能体验的革命吗?但至少从目前的行业现状,以及ARM方面透露的新品信息来看,我们觉得可能有那么一点悬。 

首先,如今的手机行业在程序适配上有点“懒”

在解释ARM v9指令集对于手机行业可能造成的影响前,我们觉得首先需要先解释一下什么是“指令集”,以及“指令集”、“架构”和“CPU”之间的关系。 

简单打个比方,如果说设计一款CPU是“写作文”的话,那么架构设计就好比范文,你(厂商)可以选择直接照抄,也能够小修小改一下来用。与此同时,“指令集”则如同语法书或者字典,其所规定的是最基础的算法、功能,但至于硬件上如何去设计、去实现,指令集是不会给出答案的,这就需要厂商自己去搭建和设计了。 

但问题就在于,无论是“公版”架构的CPU还是厂商自行设计架构的CPU,要想真正发挥出理论上的最大性能,首先都有个大前提。那就是所运行的软件必须是专为新的指令集而设计,这样它才能充分发挥与新指令集相搭配新架构的优势,甚至有时候才能启用CPU内部的一些特定运算单元,获得完整的算力。 

仔细看应用图标左下角的标识,绿色是64位,褐色是32位 

然而纵观如今的智能手机生态不难发现,虽然厂商都在追求着硬件上的不断换代,但是许多知名软件的底层技术却长期呈现出不思进取的状态。比如说大家熟悉的手机QQ,直到如今也还是32位,这就意味着它甚至连ARM 2011年就发布的ARM v8指令集,以及所有基于ARM v8的CPU性能都不能很好地发挥出来。并且因为它兼容的还是古老的ARM v7 32位指令集,在现代处理器上实际上相当于是以一种“兼容模式”来运行的。 

更为糟糕的是,从此次ARM v9指令集的细节来看,它其实并非严格意义上“脱胎换骨”的全新设计。因为ARM v9里还保留了很大一块,用于对ARM v8指令集的兼容。 

苹果iOS对底层不更新的应用态度相当坚决,但Android这边却很放任 

这意味着什么呢?首先它确实会逼迫部分应用更换底层代码,因为目前ARM v9的信息并没有提到它是否会兼容32位的ARM v7指令集,所以它可能会带来纯64位的CPU普及,并淘汰一批32位的老移动应用。 

但从另外一个角度上来说,由于ARM v9指令集的CPU和对应的手机面世时,市面上必然还存在大量的老设备,因此开发者大概率会将程序修改为针对ARM v8指令集进行支持的版本。这样一来,它既能在未来的新机型上运行,也能兼容当时的各种老手机们,当然这也就意味着,它将不能充分发挥ARM v9指令集的性能优势。 

其次,ARM v9的大部分改进针对的是超算领域

当然,我们可以说智能手机上的第三方应用技术更新缓慢,难以第一时间针对最新的处理器指令集和架构进行优化,这是目前手机硬件换代还不够快、每代之间的性能差距还不够巨大所带来的必然结果。试想一下,如果智能手机的芯片每代就像PC显卡那样性能直接翻倍还多,新款处理器一出来老平台直接成为“战五渣”,那可能软件行业想必就会勤快多了吧。 

但问题就在于,在这次的ARM v9指令集中,我们也看不到太多明显针对手机性能设计的元素。或者不如说,这套全新的指令集里的那些个“新玩意”,甚至大部分都与手机没有什么关系。 

ARM v9这次新增了哪些特性?在官放公布的示意图中可以看到,其主要包含四个方面的新增内容,即强化的安全性、增强的向量处理能力、机器学习性能的增长,以及针对数字信号处理功能的特化设计。 

其中,ARM v9指令集的安全新特性的确会对未来的手机造成一些影像。比如它支持为关键应用创建独立的虚拟机环境,这些可能会让未来手机上的隐私保护功能更强、也能更好的阻止一些APP窃取用户隐私。但除此之外,剩下的部分就基本与手机无关了。 

比如说,ARM高调地宣传了ARM v9指令集在机器学习性能,以及向量计算能力上的大幅进步,这主要是得益于它采用了新的SVE2浮点扩展指令。而这则源自ARM与日本富士通联合研发,用在超级计算机“富岳”上的SVE指令。据悉,这是一种浮点运算加速指令,可以让未来的处理器处理从256位到2048位的超宽字长运算 

然而ARM v9本身还是为64位处理器准备的,那么在64位处理器上运行256位、512位,甚至2048位运算的解决方案,大家想到什么了吗?没错,其实在我们熟悉的消费级PC处理器中也有类似的设计。比如普通的英特尔酷睿与AMD锐龙CPU就具备执行256位代码的AVX2指令,而在工作站以及服务器级别的至强等处理器上,就具备能执行512位代码的AVX512指令。 

和256位的AVX2指令相比,AVX512指令也只在超重负载的4K视频编码里才快一点点 

简单来说,这些指令的确可以加速大型多媒体程序的运行速度,也能够提高CPU在大型AI计算项目中的性能,但是它的代价却是非常明显的。首先要使用它,CPU内部就必须具备专门的256位或者512位计算单元,并且这个计算单元会非常费电,甚至开启后还会直接影响到CPU的频率稳定性;其次对于目前的绝大多数PC程序来说,就算要使用到浮点加速指令,多半也只需128位或256位的运算能力,只有那些极其专业的应用(比如电影渲染、游戏制作、大型科学模拟),才会用到512位甚至以上级别的计算能力。 

那么大家觉得,我们的手机未来会有如此大型的专业生产力应用吗?很显然暂时并不会。甚至将来基于ARM v9指令集的手机CPU,都很可能不会具备完整的2048位浮点加速单元,它很可能会被“阉割”掉,就像ARM v7指令集里的NEON浮点加速单元,曾经也被一些早期芯片舍弃一样,原因就是支持的软件没几个,而且还特别耗电。 

此外,ARM v9还有一些新内容是为微控制器而生

可能有的朋友要说,虽然手机上不会有超大型的多媒体渲染程序,新的浮点加速设计在手机上很可能不会完整出现,但ARM v9指令集不是还加强了数字信号处理能力吗,手机上很多功能都要用到数字信号处理技术,这难道不会带来明显的性能增长吗? 

其实也不会。这是因为虽然我们的手机在拍照、听歌,甚至通话时,都需要对相应的数字信号进行各种处理,但这些处理任务很早就被从CPU中分了出去,被交给了各种各样的独立芯片。比如说拍照有专门的ISP单元,听歌有专门的DAC、ADC和DSP单元,通话有成熟的基带硬件。这些专用数字处理芯片的好处不只是性能高、功耗低,同时这种分布式的处理架构还有一个好处,就是能大大提升手机整体的稳定性,例如不会因为CPU负载太大而造成打电话的时候掉线。 

这意味着什么?这当然代表着ARM v9指令集里提升数字信号处理能力的部分,在手机上其实也起不到什么作用了。 

三星自研的SSD主控,基于ARM指令集和CPU架构 

既然起不到什么作用,ARM又为什么要设计它呢?这是因为除了手机芯片外,还有许多低功耗的小型ARM处理确实是用来进行数字信号处理的。比如说音频播放器里的功放芯片,比如说SSD、机械硬盘的主控芯片,它们则会受益于ARM v9指令集带来的性能增强。 

而且大家要知道,在这些领域,以RISC-V为代表的其他低功耗处理器方案如今也发展极为迅猛,所以ARM自然会有这样的需求,在新一代指令集中专门针对这些“小芯片”加入新的功能。 

ARM v9很强大,但它在手机上却未必很神奇

是的,我们要承认,ARM v9本质上是一个很有意义的设计,它会帮助更多厂商用ARM架构的处理器去实现更好的服务器、云计算性能,也能帮助ARM在超低功耗的小型微控制芯片领域增强竞争力,应对来自RISC-V的冲击。 

但是从另一方面来说,至少在目前ARM方面公开的技术数据来看,新指令集里的大部分“新玩意”对于智能手机的应用场景,确实并没有太大的意义。不仅如此,ARM v9指令集完全兼容ARM v8指令集的设计,也有极大的可能造成开发者为了保留对老机型的兼容,而故意不适配新的指令集和新的加速代码,这则将会进一步使得未来新处理器的性能在实际应用中得不到充分发挥。 

当然,对于手机行业来说这虽然不是一件好事,但无论是手机厂商、开发者,还是上游的芯片供应商,似乎都还没有太好的办法来解决这个问题。 

【本文图片来自网络】