首页 > 编程学习 > 这代安卓机特别耗电?聊聊安卓应用 64 位的问题

相信很多朋友已经购买到了最新一代 CPU 平台的安卓机了。这代安卓机的 CPU 发生了剧变,在保持了大中小核架构的同时,对大核和小核的微架构都进行了大改。小核心的微架构进化,应该是大家期盼已久的了,祖传的 Cortex-A55 终于退休,按理来说全新的 Cortex-A510 应该会带来更好的能效。但是有人发现,这代安卓机似乎更加耗电了,这是为何?今天就从新一代 ARM 处理器的架构聊起,简单谈谈安卓应用 64 位普及迟滞导致的耗电问题吧。

▲ 新一代 ARMv9 处理器,为何反而更耗电?

新 ARM 处理器甚至更耗电?

当前上市的最新一代安卓机所使用的高通骁龙 8gen1 处理器,以及即将上市的联发科天玑 9000 处理器,都属于最新设计的基于 ARMv9 架构的产品。它们都有一个共同的特点,就是文章开头所说的大核和小核微架构进行了大改,大核心使用了 Cortex-X2 微架构,而小核心则使用了 Cortex-A510 微架构。

▲ 新处理器的小核是经过重新设计的 Cortex-A510,理论上可以带来更高的能效

无论是 Cortex-X2 还是 Cortex-A510,它们都有一个共同的特点,那就是不再支持 32 位,如果安卓机要运行 32 位的应用,那就必须在微架构只作了小幅调整的 Cortex-A710 中运行。如此一来,在某些场景中,就有可能导致额外的能耗。

在理想的情况下,安卓机在待机或者低负载时,应用程序主要运行在小核心上,小核心的能效比最出色,如此一来就能达到节电的效果;但如今,如果 App 是 32 位的,在新的 ARM 处理器中,就只能由中核运行,小核的能效优势只能干瞪眼,额外耗电的情况就出现了。

▲ 在运行 32 位安卓 App 时,处理器实际上只能工作在 Performance 工况下,无法进入节电的 Efficiency 工况

换言之,在使用了新一代 CPU 的安卓机中,如果运行 32 位的 App,是无法达到理想的能效比的。这个问题,和芯片工艺无关,和系统无关,的的确确就是安卓生态和新处理器架构不匹配所导致的。

只有 64 位的安卓 App,才能运行在新 ARM 处理器的小核心上,才能让新 ARM 处理器发挥出应有的能效。因此,何时普及 64 位的安卓 App,就成为了新一代 ARM 处理器何时能更节电问题的答案。

安卓 App 仍未普及 64 位?

当前的安卓生态中,32 位的应用仍大量存在,这些应用不乏大家常见的装机必备,例如哔哩哔哩、百度网盘、爱奇艺等等。这种情况是否正常?从技术的角度来看,似乎很不应该。

▲ 像哔哩哔哩这样 Target API 已经更新到 Android 11 的应用,也依然只是 32 位的

从 ARMv8 开始,安卓阵营的 CPU 就已经普遍支持 64 位,安卓系统也在 Android 5.0 后,从系统层面支持 64 位应用。这两件事,其实都属于比较远古的了 —— 基于 ARMv8 的骁龙 810 以及 Android 5.0 都出现于 2014 年,转眼都快十年过去了,为何安卓 App 仍大量停留在 32 位?

我们可以对比一下苹果阵营。2013 年的 iPhone 5S以及 iOS 7 开始推行 64 位,一年多后 32 位的 iOS 应用就已经难寻踪迹。和苹果的步伐相比,安卓阵营可谓步履维艰。

▲ 和安卓阵营相比,苹果 iOS 推行 64 位顺利得多

安卓推行 64 位为何如此艰难?这和安卓生态的实际情况是有很大关联。尽管在 ARMv8 后,安卓阵营的 CPU 增加了 64 位的支持,但依然保留了 32 位的兼容。甚至,前一代产品 ARM v8.2 处理器,也依然耗费额外的晶体管,来兼容 32 位 App。同时,安卓系统也一直兼容 32 位 App,App 并没有切换到 64 位的迫切需求。这一切的考量,很大程度是基于对旧设备的兼容。

在安卓初推行 64 位的时候,市场上依然有大量运行旧 CPU 以及旧版安卓系统的设备存在。安卓在市场攻城略地的秘诀,在于开放和兼容,如果对 32 位一刀切,那么安卓阵营会无可避免迎来分裂。实际上,开放的系统都存在这样的问题,例如 Windows 生态为了保持向后兼容,时至今日仍对 32 位应用软件提供出色的兼容,这和安卓是殊途同归的。

当然,和 Windows 不同,安卓并不需要承担太多的生产力任务。在初次推行 64 位过去近十年后,安卓也的确到了全面抛弃 32 位包裹的时机。

安卓放弃对 32 位兼容可以带来什么好处?首先,CPU 就可以省下用于兼容 32 位的晶体管,对于寸土寸金的芯片来说这显得尤为有价值;其次,App 可以拥有更好的内存利用率,对于日渐膨胀的应用游戏来说这是至关重要的;再者,App 还可以更有效利用 CPU 的寄存器,带来更高的效率。

在安卓 App 日渐复杂、摩尔定律日渐失效的今天,摒弃历史包裹、全面拥抱 64 位的时机的确已经到来。虽然目前安卓生态仍存在大量 32 位 App,但我们也可以看到多方对普及 64 位的努力。

例如,Google 要求,从 2019 年 8 月 1 日起,在 Google Play 发布的应用必须支持 64 位。也因为此,国外的安卓生态对于 64 位的普及要比国内做得更好,这次安卓 CPU 平台换代,国内的安卓机耗电问题也要比国外更明显。

Google Play 商店两年多前已经禁止 32bit 应用上架,国内安卓生态较之滞后

又例如,国内的安卓分发渠道也开始要求 App 支持 64 位。OPPO 商店此前已经规定,2021 年 12 月底后,新发布的应用必须支持 64 位;而小米商店则提供了一键将 32 位 App 置换为 64 位的功能,如果手机上已安装的 32 位 App 在商店中有 64 位版本,可以一键更新。

同时,国内的很多 App 在近期也都更新到了 64 位,例如微信、QQ、12306 等等。相信在不久后的将来,国内的安卓 App 很快会大面积普及 64 位,新一代的安卓机也会发挥出应有的能效。

总结

毫无疑问,和苹果相比,安卓的 64 位普及进程是落后的,安卓阵营并没有苹果那样绝对的应用发行渠道垄断权,这也是安卓借开放之风腾飞所需要付出的代价。幸运的是,目前安卓阵营各方都已经意识到了普及 64 位的重要性,下一代安卓 CPU 会进一步抛弃对 32 位的支持吗?让我们拭目以待吧。

来源:太平洋电脑网 作者:Aimo

Copyright © 2010-2022 ngui.cc 版权所有 |关于我们| 联系方式| 豫B2-20100000