1. 程式人生 > 資訊 >Arm 宣佈 32 位已死,而蘋果早已放棄:安卓有何影響

Arm 宣佈 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 的大多數處理器都支援 32 位和 64 位模式。而 Cortex-A76 稍有改變,它支援 App 的 32 位模式。也就是說如果你執行 64 位版本的安卓也可以執行 32 位應用。

值得一提的是,高通驍龍 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,可能連一條清晰的道路都沒有。

編譯自:https://www.androidauthority.com/arm-32-vs-64-bit-explained-1232065/