32位已死:对安卓和苹果意味着什么?
arm宣布,从2023年起,其所有新智能手机cpu内核都将仅为64位,且没有32位兼容模式。
其实早在2013年,苹果就在iphone 5s中使用了64位a7处理器,我们开始拥有支持64位的智能手机处理器。不久之后,64位cpu同样出现在安卓手机中,不过所有这些cpu既能运行32位代码又能运行64位代码。
因此,我们从仅支持32位,到同时支持32位和64位,再到现在我们将要抛弃32位,进入只有64位的时代。
这对安卓和苹果而言,又意味着什么呢?
从32位到64位的转变
智能手机中,每个像素、通过互联网发送的每一个数据、存储在闪存中的每个文件、播放的每个声音以及屏幕上的每一次触摸都由数字表示和处理。依靠gpu等其他组件的帮助,大部分处理由cpu完成。
处理器以二进制形式存储这些数字,为它们分配的空间以位为单位。位由0和1的二进制表示,8位可以表示零到 255 之间的任何数字,16位的范围从0到65,535,而32位可以存储高达4,294,967,295(即 4gb)的数字。
arm在其指令集架构的第8版(称为 armv8)中引入了64位支持,并且在armv9 中继续支持64位。这两者也可选择性地向后兼容以前的 32 位arm 架构。
这意味着原则上 cortex-a 处理器可以运行32位代码和64位代码并在它们之间即时切换。用户不会注意到32位和64位代码之间的任何区别。
事实上,三星的第一款 armv8 soc就是galaxy note 4 中使用的exynos 5433 ,它有四个cortex-a57内核和四个cortex-a53内核,但仅用于 32 位模式。
多年来,事情变得更加微妙。arm有一些基于armv8的cortex-a内核,其中某些只有 32 位(例如 cortex-a32),另一些只有64位(例如cortex-a34和cortex-a65)。您可能没有听说过这些cpu设计,因为它们没有用于任何智能手机处理器。
从cortex-53 到 cortex-a75 的大多数cortex-a处理器都支持32位和64位模式。cortex-a76稍有改变,它支持32位模式,但仅适用于应用程序。这意味着您需要运行64位版本的安卓,但您仍然可以运行 32 位应用程序。
如果您有 snapdragon 855(或更高版本)处理器,或者基于 kryo 4xx(或更高版本)的处理器(包括骁龙 480、骁龙 675、骁龙 720、骁龙 730、骁龙 765、骁龙 780g 等),那么处理器已经放弃了对 32 位操作系统的支持,而你没有注意到。
随着cortex-x2和cortex-a510对32位应用程序的支持的下降,你不得不运行64位操作系统和64位应用程序。cortex-a710保持对32位应用程序的支持,这意味着任何无法脱离32位模式的应用程序都将*在a710核上运行。
到2023年,所有cortex-a cpu都将只有 64 位
arm就64位的转移发表了两项声明。
首先,arm谈到2022年它所有的大内核都将是 64 位的,然后几个月后arm又谈到2023年它所有的内核都将是64位的。
听起来不错,不过cortex-a510(一个小内核)已经只有64位了,那么为什么是两个不同的截止日期呢?笔者认为,我们将在2022年看到支持 32 位的新的小内核,此后一切都将是64位。
值得注意的是,我们谈论的是cortex-a处理器,即智能手机、平板电脑、chromebook 等中的cpu,而不是在谈论arm微控制器系列中的cortex-m cpu。
事实上,armv8-m(m 代表微控制器)只有32位。
放弃32位对安卓影响不大
好消息是64位的安卓是一项成熟的技术,完全放弃32位支持不会有什么很大的不同。
第一个完全兼容64位的安卓版本是 android 5.0 (lollipop)。它于2014年发布,增加了对 64位intel处理器以及64位arm芯片的支持。
自2019年8月起,所有google play应用都需要支持64位。为了帮助开发者支持64位,流行的游戏引擎都添加了支持:unreal(2015 年)、cocos2d(2015 年)和 unity(2018 年)。
从2021年8月1日起,google play将停止在支持64位的设备上提供没有64位版本的应用,这意味着这些设备上的play商店将不再提供这些应用。
google提供了不同的工具和大量文档,让应用程序开发人员为切换到64位做好准备。
对于许多应用程序,实际上几乎没有什么可做的,因为那些用 java 或 kotlin 编写的应用程序不需要更改。但是使用游戏引擎或第三方 sdk 开发的应用程序需要确保使用最新的64位版本。
由于搭载64位android的设备现已上市多年,再加上google努力确保play商店中提供64位应用程序,因此最终只切换到64位将不会有太大的影响。
苹果更早放弃32位
自 iphone 5s 以来,苹果一直在硬件和软件方面支持64位。
早在2015年2月,apple就宣布所有ios应用程序都必须支持64位。之后在2017年,cupertino宣布32位应用程序将无法在ios 11上运行。
那时,苹果就完全放弃了32位,从苹果a11(在 iphone 8、iphone x 中能找到)开始,所有处理器都只有64位。
macos也有类似的故事。自10.7 lion (2011) 以来,苹果的桌面操作系统一直是64位的。
自2018年以来,所有提交到mac app store的新应用程序都需要支持64位,就像ios一样,macos放弃了对32位应用程序的支持(随着2019年macos 10.15 catalina的发布)。
今天,macos 11在intel上是64位的,在arm上也是64位,m1 处理器仅为 64 位。
未来是64位的
从 2023 年开始,所有cortex-a处理器都将只支持64位。
由于安卓支持64位,并且正在转向仅支持64位的应用程序且将转换地很顺利,因此您可能不太会注意到任何差异。
如果您是苹果用户,那么在ios和macos上切换到64位已经有一段时间了。我没有听说过渡过程中出现任何重大问题。
对于其他 cpu 架构和其他操作系统,如windows和linux,32位支持将持续更长的时间。既然linux开源,那么32位支持很可能会持续几十年。对于x86-64处理器上的windows,可能连一条清晰的道路都没有。
- the end -
上一篇: 【面经】数据分析岗_面试题整理总结(持续更新中…)
下一篇: 华为云电脑将停止服务:数据将永久删除