本文转载自雷锋网。如需转载,请在雷锋网官网申请授权。Arm宣布,从2023年起,其所有新的智能手机CPU内核都将仅为64位,没有32位兼容模式。2013年,Apple在iPhone5s中使用了64位A7处理器,我们开始拥有支持64位的智能手机处理器。不久之后,64位CPU也出现在Android手机中,但所有这些CPU都可以同时运行32位和64位代码。所以,我们从只支持32位,到同时支持32位和64位,现在要抛弃32位,进入只支持64位的时代。这对安卓和苹果意味着什么?从32位到64位的转变在智能手机中,每个像素、通过Internet发送的每个数据、存储在闪存中的每个文件、播放的每个声音以及屏幕上的每个触摸都由一个数字表示并处理。大多数处理是由CPU在GPU等其他组件的帮助下完成的。处理器以二进制形式存储这些数字,为它们分配的空间以位为单位。二进制位由0和1表示,8位可以表示0到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位代码之间的任何区别。事实上,三星的第一款Armv8SoC是用于GalaxyNote4的Exynos5433,它有四个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位版本的Android,但您仍然可以运行32位应用程序。如果您有Snapdragon855(或更高)处理器。或者基于Kryo4xx(或更高版本)处理器(包括骁龙480、骁龙675、骁龙720、骁龙730、骁龙765、骁龙780G等),那么在你不注意的情况下,处理器已经放弃了对32位操作系统的支持.随着Cortex-X2和Cortex-A510放弃对32位应用程序的支持,您不得不运行64位操作系统和64位应用程序。Cortex-A710保持对32位应用程序的支持,这意味着任何无法脱离32位模式的应用程序都将被迫在A710内核上运行。到2023年,所有Cortex-ACPU都将是64位的Arm就迁移到64位发布了两个公告。首先,Arm谈到到2022年其所有大内核都是64位的,然后几个月后Arm谈到到2023年其所有内核都是64位的。听起来不错,但是Cortex-A510(一个小内核)已经只有64位,那么为什么要有两个不同的截止日期?我想我们会在2022年看到支持32位的新小内核,之后的一切都将是64位的。值得注意的是,我们谈论的是Cortex-A处理器,即智能手机、平板电脑、Chromebook等中的CPU,而不是Arm微控制器系列中的Cortex-MCPU。事实上,Armv8-M(M代表微控制器)只有32位。放弃32位对Android的影响不大好消息是64位Android是一项成熟的技术,完全放弃32位支持不会有太大的不同。第一个完全兼容64位的Android版本是Android5.0(Lollipop)。它于2014年发布,增加了对64位Intel处理器和64位Arm芯片的支持。自2019年8月起,所有GooglePlay应用都必须支持64位。为了帮助开发者支持64位,流行的游戏引擎增加了支持:Unreal(2015)、Cocos2d(2015)和Unity(2018)。从2021年8月1日开始,GooglePlay将停止在支持64位的设备上提供没有64位版本的应用,这意味着这些应用将不再出现在这些设备上的Play商店中。Google提供了不同的工具和广泛的文档来帮助应用程序开发人员为转换到64位做好准备。对于许多应用程序来说,几乎没有什么可做的,因为那些用Java或Kotlin编写的应用程序不需要更改。但使用游戏引擎或第三方SDK开发的应用需要确保使用最新的64位版本。由于64位Android设备已经上市多年,并且谷歌一直在努力确保Play商店中提供64位应用程序,因此仅切换到64位不会有太大区别结束。苹果早早放弃了32位从iPhone5S开始,苹果在硬件和软件上都支持64位。早在2015年2月,Apple就宣布所有iOS应用程序都必须支持64位。然后在2017年,库比蒂诺宣布32位应用程序将无法在iOS11上运行。那时,Apple完全放弃了32位,所有从AppleA11(在iPhone8、iPhoneX中找到)开始的处理器都是64-位而已。macOS也有类似的故事。自10.7Lion(2011)以来,Apple的桌面操作系统一直是64位的。自2018年以来,所有提交到MacAppStore的新应用程序都需要支持64位,并且与iOS一样,macOS放弃了对32位应用程序的支持(随着macOS10.15Catalina在2019年的发布)。今天,macOS11在Intel上是64位的,在Arm上是64位的,只有M1处理器是64位的。未来是64位从2023年开始,所有Cortex-A处理器将只支持64位。由于Android支持64位,并且正在转向仅限64位的应用程序,并且过渡会很顺利,因此您可能不会注意到任何差异。如果您是Apple用户,那么在iOS和macOS上切换到64位已经有一段时间了。我还没有听说过渡有任何重大问题。对于其他CPU架构和其他操作系统(例如Windows和Linux),32位支持将持续更长的时间。现在Linux是开源的,32位支持很可能会持续几十年。在x86-64处理器上,Windows甚至可能都没有明确的路径。
