文|三易生活
许多早年间自己动手安装过系统的朋友,当时可能或多或少会被32位或64位的选择所困扰。而这两个版本有什么不同呢?由于计算机设备是用二进制(0与1,实际就是高电位和低电位)来表示信息,因此32位与64位则分别指的就是处理器在单位时间内,能一次处理的二进制数的位数分别为32位和64位。
事实上不光PC端的操作系统在早年间有32位与64的区别,移动端同样也有。不过相比于背负着兼容性历史包袱的,新生的移动端操作系统在32位“升级”到64位这件事上,明显要上心的多,继苹果的iOS在2017年全面拥抱64位应用后,阵营也有望在2022年实现64位化。
作为iOS与设备CPU指令集架构的开发者,ARM在本周举办的开发者峰会上宣布,从2022年开始,旗下芯片产品之中CPU的大核将取消对32位的支持。换句话来说,就是未来凡是搭载了使用大核心的各类主控产品,基将会不再能运行得了32位应用。
这一消息也让谷歌一直以来想要在上实现全面64位化的规划,居然是依靠上游的芯片设计厂商来解决。如果一切顺利,从2014年问世第一款支持64位的SoC(高通骁龙808)和支持64位的系统( 5.0)算起,花了8年时间才会实现从32位到64位的升级,而这比谷歌早前预想的时间点晚了3年。
按照谷歌在2019年初的通知开发者的信息显示,“从2019年8月1日开始,您在 Play上发布的应用将需要支持64位架构。64位CPU为您的用户提供更快,更丰富的体验。添加应用程序的64位版本可改善性能,为将来的创新打下基础,并为使用仅64位硬件的设备做好准备”。配合这一通知,谷歌方面也将最新版的集成开发工具 ,设计成在运行APP时默认只打包为64位的so文件。
然而很可惜的是,谷歌这则强制性意味浓厚的新规与配套措施,并没有引发明显的变化。除了开发者通过修改 的配置文件使得其在打包so文件时可以使用32位来“绕路”外,甚至谷歌自己在去年10月推出的 78稳定版在 Play中,依然默认提供了32位的版本供用户下载。
其实大家使用以及其他类似功能的应用,就可以清楚的看到手机中应用所适配的系统版本,以及它们是32位还是64位。其中不难发现,除了微信、淘宝、米家、B站、爱奇艺等少数个例之外,绝大多数常用的国内APP至今依然还是只有32位版本。
开发者对于64位无动于衷,是因为其本身的优势不够大吗?其实答案是否定的。因为相比于32位,应用升级到64位的核心优势,在于CPU的性能将能够得到最大限度的发挥,而在32位模式中,CPU中真正工作的寄存器空间只有四分之一。此外由于64位系统的内存寻址能力提升,任何一个应用都可以分配到超过4G的RAM,这无疑对于游戏等大型应用的性能表现有着更进一步的提升。这也意味着64位系统+64位程序+足够的大内存,就能在一定程度上让手机的性能得到提升。
因此对于开发者来说,对谷歌这个带有强制性的通知不感冒的关键64位系统下载,其实是运营成本。由于32位应用同样可以运行在64位系统上,代价则仅仅是硬件性能得不到充分发挥,但如果要将应用全面转型为64位,结果就是那些依然在使用32位系统的用户无法使用应用,所代表的是用户流失。更何况如果要发布64位应用,就需要顺带推出32位的版本,实际上是两次的代码的开发和测试64位系统下载,并且对于维护负担也会有一定程度的增加。
除此之外,开发者为了保护自己的代码,往往也会对64位应用敬而远之。使用Java虚拟机作为应用层运行环境的,因为运行的应用程序字节码完全一致,所以本质上虽然没有32位与64位的区别,但问题是目前在应用的开发中,许多开发者并不是使用纯粹的Java层开发,更多的会用上 NDK来让Java与C++结合,把一些重要的方和行为,与一些私密性的东西放在反编译难度更高的C++中,来提升安全性。
所以最终的结果就是,除了类似淘宝、微信、B站这种堆积了太多功能的大型应用,需要用64位来更好的发挥CPU性能,以便提升应用的流畅度之外,绝大多数开发者甚至是游戏开发者,都很难会做出拥抱64位这种吃力不讨好的选择。
而苹果能够轻易实现从32位到64位的原因则在于,在其iOS生态中几乎扮演了“上帝”的角色,开发者使用的开发工具都是来自于苹果,也有着对于开发者更强的管控能力。可在生态之中, Play并不是唯一的分发渠道,因此也导致了谷歌对于开发者的规制能力并没有那么强。
这也就导致了这件事虽然谷歌一时间很难做到,但ARM却可以。虽然ARM方面目前表示,未来只有大核心会取消对32位应用的支持,小核心还继续保持,但是考虑到目前主流的移动端芯片都采用的是big.大小核切换技术,而这是一项可以将应用程序任务调度到正确CPU核心的技术,可以大幅节省CPU功耗,同时在线程负载方面提升性能。
这一技术所带来的结果,就是芯片的工作模式必须要统一,不能是大核心使用Arm v8架构中引入的状态,小核心使用传统的状态。简而言之就是,ARM旗下的系列产品中,类似 A77这样骁龙865采用的大核心如果不兼容,同一SoC内的CPU小核心同样将无法切换到模式。所以用大核心运行64位程序,用小核心运行32位程序的情况也是很难发生的。
并且由于ARM在整个移动端的产业链中,其实是处于非常上游的地位,其客户包括谷歌、苹果、高通、联发科、三星,以及华为等芯片制造商,而开发者由于往往与ARM之间还隔着谷歌、芯片厂商,以及手机厂商,因此也很难对ARM的决定产生影响。所以在端由ARM来实现从32位到64位的升级,效果上显然将远胜于谷歌。
因此ARM方面选择从硬件方面出发的这一决策,几乎可以说是迫使开发者必须在两年后将应用转向64位。
评论留言