從 2023 年起,其所有新智能手機(jī) CPU 內(nèi)核都將僅為 64 位,且沒有 32 位兼容模式。
2013 年,蘋果就在 iPhone 5s 中使用了 64 位 A7 處理器,我們開始擁有支持 64 位的智能手機(jī)處理器。不久之后,64 位 CPU 同樣出現(xiàn)在安卓手機(jī)中,不過所有這些 CPU 既能運(yùn)行 32 位代碼又能運(yùn)行 64 位代碼。
因此,我們從僅支持 32 位,到同時(shí)支持 32 位和 64 位,再到現(xiàn)在我們將要拋棄 32 位,進(jìn)入只有 64 位的時(shí)代。這對安卓和蘋果而言,又意味著什么呢?
從 32 位到 64 位的轉(zhuǎn)變
智能手機(jī)中,每個(gè)像素、通過互聯(lián)網(wǎng)發(fā)送的每一個(gè)數(shù)據(jù)、存儲在閃存中的每個(gè)文件、播放的每個(gè)聲音以及屏幕上的每一次觸摸都由數(shù)字表示和處理。依靠 GPU 等其他組件的幫助,大部分處理由 CPU 完成。
處理器以二進(jìn)制形式存儲這些數(shù)字,為它們分配的空間以位為單位。位由 0 和 1 的二進(jìn)制表示,8 位可以表示零到 255 之間的任何數(shù)字,16 位的范圍從 0 到 65,535,而 32 位可以存儲高達(dá) 4,294,967,295(即 4GB)的數(shù)字。
Arm 在其指令集架構(gòu)的第 8 版(稱為 Armv8)中引入了 64 位支持,并且在 Armv9 中繼續(xù)支持 64 位。這兩者也可選擇性地向后兼容以前的 32 位 Arm 架構(gòu)。這意味著原則上 Cortex-A 處理器可以運(yùn)行 32 位代碼和 64 位代碼并在它們之間即時(shí)切換。用戶不會注意到 32 位和 64 位代碼之間的任何區(qū)別。事實(shí)上,三星的第一款 Armv8 SoC 就是 Galaxy Note 4 中使用的 Exynos 5433 ,它有四個(gè) Cortex-A57 內(nèi)核和四個(gè) Cortex-A53 內(nèi)核,但僅用于 32 位模式。
多年來,事情變得更加微妙。Arm 有一些基于 Armv8 的 Cortex-A 內(nèi)核,其中某些只有 32 位(例如 Cortex-A32),另一些只有 64 位(例如 Cortex-A34 和 Cortex-A65)。您可能沒有聽說過這些 CPU 設(shè)計(jì),因?yàn)樗鼈儧]有用于任何智能手機(jī)處理器。
從 Cortex-53 到 Cortex-A75 的大多數(shù)處理器都支持 32 位和 64 位模式。而 Cortex-A76 稍有改變,它支持 App 的 32 位模式。也就是說如果你運(yùn)行 64 位版本的安卓也可以運(yùn)行 32 位應(yīng)用。
如果你的機(jī)型搭載高通驍龍 855(或更高版本)處理器,或者基于 Kryo 4xx(或更高版本)的處理器(包括驍龍 480、驍龍 675、驍龍 720、驍龍 730、驍龍 765、驍龍 780G 等),那么你的機(jī)型已經(jīng)無法再支持 32 位操作系統(tǒng)。
隨著 Cortex-X2 和 Cortex-A510 對 32 位應(yīng)用程序的支持的下降,你不得不運(yùn)行 64 位操作系統(tǒng)和 64 位應(yīng)用程序。Cortex-A710 保持對 32 位應(yīng)用程序的支持,這意味著任何無法脫離 32 位模式的應(yīng)用程序都將被迫在 A710 核上運(yùn)行。
到 2023 年,所有 Cortex-A CPU 都將只有 64 位
Arm 就 64 位的轉(zhuǎn)移發(fā)表了兩項(xiàng)聲明。首先,Arm 談到 2022 年它所有的大內(nèi)核都將是 64 位的,然后幾個(gè)月后 Arm 又談到 2023 年它所有的內(nèi)核都將是 64 位的。聽起來不錯(cuò),不過 Cortex-A510(一個(gè)小內(nèi)核)已經(jīng)只有 64 位了,那么為什么是兩個(gè)不同的截止日期呢?
筆者認(rèn)為,我們將在 2022 年看到支持 32 位的新的小內(nèi)核,此后一切都將是 64 位。
值得注意的是,我們談?wù)摰氖?Cortex-A 處理器,即智能手機(jī)、平板電腦、Chromebook 等中的 CPU,而不是在談?wù)?Arm 微控制器系列中的 Cortex-M CPU。事實(shí)上,Armv8-M(M 代表微控制器)只有 32 位。
放棄 32 位對安卓影響不大
好消息是 64 位的安卓是一項(xiàng)成熟的技術(shù),完全放棄 32 位支持不會有什么很大的不同。
第一個(gè)完全兼容 64 位的安卓版本是 Android 5.0 (Lollipop)。它于 2014 年發(fā)布,增加了對 64 位 Intel 處理器以及 64 位 Arm 芯片的支持。自 2019 年 8 月起,所有 Google Play 應(yīng)用都需要支持 64 位。為了幫助開發(fā)者支持 64 位,流行的游戲引擎都添加了支持:Unreal(2015 年)、Cocos2d(2015 年)和 Unity(2018 年)。從 2021 年 8 月 1 日起,Google Play 將停止在支持 64 位的設(shè)備上提供沒有 64 位版本的應(yīng)用,這意味著這些設(shè)備上的 Play 商店將不再提供這些應(yīng)用。
Google 提供了不同的工具和大量文檔,讓應(yīng)用程序開發(fā)人員為切換到 64 位做好準(zhǔn)備。對于許多應(yīng)用程序,實(shí)際上幾乎沒有什么可做的,因?yàn)槟切┯?Java 或 Kotlin 編寫的應(yīng)用程序不需要更改。但是使用游戲引擎或第三方 SDK 開發(fā)的應(yīng)用程序需要確保使用最新的 64 位版本。
由于搭載 64 位 Android 的設(shè)備現(xiàn)已上市多年,再加上 Google 努力確保 Play 商店中提供 64 位應(yīng)用程序,因此最終只切換到 64 位將不會有太大的影響。
蘋果更早放棄 32 位
自 iPhone 5S 以來,蘋果一直在硬件和軟件方面支持 64 位。早在 2015 年 2 月,Apple 就宣布所有 iOS 應(yīng)用程序都必須支持 64 位。之后在 2017 年,Cupertino 宣布 32 位應(yīng)用程序?qū)o法在 iOS 11 上運(yùn)行。
那時(shí),蘋果就完全放棄了 32 位,從蘋果 A11(在 iPhone 8、iPhone X 中能找到)開始,所有處理器都只有 64 位。
macOS 也有類似的故事。自 10.7 Lion (2011) 以來,蘋果的桌面操作系統(tǒng)一直是 64 位的。自 2018 年以來,所有提交到 Mac App Store 的新應(yīng)用程序都需要支持 64 位,就像 iOS 一樣,macOS 放棄了對 32 位應(yīng)用程序的支持(隨著 2019 年 macOS 10.15 Catalina 的發(fā)布)。今天,macOS 11 在 Intel 上是 64 位的,在 Arm 上也是 64 位,M1 處理器僅為 64 位。
未來是 64 位的
從 2023 年開始,所有 Cortex-A 處理器都將只支持 64 位。由于安卓支持 64 位,并且正在轉(zhuǎn)向僅支持 64 位的應(yīng)用程序且將轉(zhuǎn)換地很順利,因此您可能不太會注意到任何差異。如果您是蘋果用戶,那么在 iOS 和 macOS 上切換到 64 位已經(jīng)有一段時(shí)間了。我沒有聽說過渡過程中出現(xiàn)任何重大問題。
對于其他 CPU 架構(gòu)和其他操作系統(tǒng),如 Windows 和 Linux,32 位支持將持續(xù)更長的時(shí)間。既然 Linux 開源,那么 32 位支持很可能會持續(xù)幾十年。對于 x86-64 處理器上的 Windows,可能連一條清晰的道路都沒有。