|Android全面拥抱64位,这事或许还得靠ARM

文章图片

文章图片

文章图片

文章图片

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