这代安卓机特别耗电?聊聊安卓应用 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 位的支持吗?让我们拭目以待吧。
2022-05-06 00:16:23