愛伊米

“32 位應用已死!”

曾經的經典都在逐漸消失。

作者 | 馬超

出品 | CSDN(ID:CSDNnews)

Android 全面擁抱 64 位 APP

不久前,小米應用商店、OPPO 軟體商店、VIVO 應用商店、騰訊應用寶、百度手機助手聯合宣佈,今後在上述應用商店釋出的所有應用必須支援 64 位架構,今年年底前全體應用及遊戲均需按計劃上傳含有 64 位構建的應用包 apk。按照官方時間表,中國市場所有的移動安卓應用程式定於 2022 年 8 月底前全面普及 64 位。

其實全線下架 32 位 APP 早已經是業界的共識了,2018 年 iOS 11 釋出的時候,蘋果就已經全面淘汰了 32 位的應用 APP,但是安卓作為一個開源共享的專案,很難強制推行淘汰 32 位程式,雖然 2019 年穀歌也曾公告提醒開發者們停止開發新的 32 位 APP 或為其提供更新,但是這項計劃並沒有被嚴格執行。不過

本次國內五大應用商店聯合釋出淘汰 32 位 APP 的計劃,正式吹響了國內安卓 APP 全面轉向 64 位 APP 的號角。

那麼 32 位和 64 位的程式到底有什麼不同,此次升級又到底有何必要?下面筆者就為大家一一解讀。

32 位和 64 位相比到底差哪了?

從技術角度上看 64 位與 32 位,其實差異很大。十幾年前,筆者剛剛進入金融行業的時候,就曾做過將應用由 32 位的伺服器向 64 位小型機進行遷移的工作。

從實際編碼來看,64 位與 32 位處理器的根本區別在於

長整型 long 和指標型別 pointer 的長度發生了變化。

在 32 位體系下,integer 與 pointer 長度相等,因此程式碼中常常把 pointer 轉換為 int 或者 unsigned int 以便運算。但對 64 位處理器程式設計時,把指標或者 long 型別資料賦值給 int 型變數時,會發生資料截斷與丟失。

從工作機制角度上看,64 位對 32 位的優勢也是顯而易見的。由於 32 位 CPU 一次只能處理 32 位長的資料,單指令處理能力不超過 2 的 32 次方,因此在對於 64 位資料進行加法運算時,就需要先進行低 32 位的加法,再將高 32 位相加,最後再把低 32 位的進位與結果進行合併處理,至少需要 4 條指令才能完成,而這對於 64 位處理器來講只是一條指令的事。

因此 32 位處理器的處理能力對比 64 位來說真不夠看。

處理能力更強 64 位處理器是可以相容 32 位程式的,不過讓 64 位系統執行 32 位的程式其實是一種降級執行狀態。

一方面,32 位程式在如今的 64 位硬體上會導致效能嚴重得不到發揮,反而會造成無謂的卡頓;

另一方面來說,由於32 位的程式 APP 往往都比較老舊,沒有按照最新的開發指南進行編碼,這也意味著 32 位程式往往也不會支援新版作業系統的各種省電、智慧休眠特性,安全性也無從保障。所以從這個角度上講淘汰 32 位手機 APP 對於廣大使用者來講絕對是一件好事。

可能讀到這裡不少讀者會問 128 位的處理器能否對於 64 位處理器形成碾壓呢?

個人以為這個問題的答案是否定的,一方面目前 SIMD 也就是單指令多資料流技術,已經賦予 CPU 在一個指令週期內,處理 128 位乃至更長資料的能力了,尤其是新版的 ARM V9 還拿出了大殺招 SVE2 的新款 SIMD 指令集,這項技術支援運算元變長,使 ARM 晶片可以在一個指令週期內處理 128 到 2048 位變長的資料。可以說處理字長的問題已經基本不存在了,而且 64 位處理器對於記憶體定址的能力一般可以達到 16T 甚至以上,這也足夠強大了,再升級到 128 位意義不大。因此可以看到各大廠對於推出 128 位處理器基本都不太“感冒”。

Respect!那些偉大的 32 位經典

在筆者一名資深的遊戲玩家眼中,32 位經典作品簡直多到了數不勝數的地步,《生化危機》、《惡魔城月下夜想曲》、《寄生前夜》、《恐龍危機》等等都是 3A 級大作,尤其是最終幻想系列的第 8 部,其主題曲《Eyes on me》至今還是經久不衰。

筆者在前文《MIPS 已死,轉身 RISC-V》當中曾經提到過,1994 年一代索尼 Play Station 橫空出世,在 30 年前的遠古時代就為廣大玩家帶來了為之尖叫的影象處理效率,而當時 Play Station 所搭載的 CPU 正是 32 位的一代傳奇之作,MIPS R3000A。

當然英特爾的 80386 也是不遑多讓,80386DX 的內部和外部資料匯流排是 32 位,位址匯流排也是 32 位,可以管理 4GB 記憶體空間和 64TB 的儲存空間。而且 386 還奠定了 X86 體系延用至今的三種工作模式。其中真真實模式對應 16 位系統的執行模式,直接記憶體訪問空間被限制在 1M 位元組;386 保護模式對應 32 位的工作模式,處理器可以直接訪問 4G 位元組的記憶體,並具有異常處理機制;虛擬 86 模式中 386 可以同時模擬多個 8086 處理器,來加強多工處理能力。

初期推出的 80386 DX 處理器集成了大約 27。5 萬個電晶體,工作頻率為 12。5MHz。此後 80386 處理器逐步提高到 20MHz、25MHz、33MHz 直至最後的 40MHz

。也正是在 386 真 32 位強大效能的加持下,才讓當時的圖形化作業系統 Windows 成為可能,也奠定了後來 Wintel 聯盟統治 IT 生態十幾年的基礎。

如果說 32 位 CPU 評選起來還存在爭議的話,32 位作業系統的最強王者恐怕非 Windows XP 莫屬,憑藉著簡單易用的功能和強大的穩定性,XP 統治 PC 作業系統十幾年,甚至一直到 20 年後的今天,XP 依然還有不到 5% 的市場佔有率,在手機都要和 32 位 APP 徹底告別的今天,還在桌面市場為 32 位程式保留了一席之地。但是經典雖多也架不住 64 位的狂轟濫炸。

來自於 64 位處理器的降維式打擊

最近蘋果的春季釋出會搭載 M1 處理器的 iPad Pro,使平板電腦再度大放異彩,不過筆者個人認為 M1 處理器的重要性與蘋果在 2013 年釋出的 A7 處理器是等量齊觀的。

搭建 A7 處理器的 iPhone 5s 這是全球第一個採用了 64 位處理器的智慧手機。當時是 iPhone 5s 可以相容 32 位的應用程式,因此這個升級對於當時的開發者來講是透明的,因此當時在釋出之初並未引起太多反響。

但是在全面發售之後人們發現 64 位的 A7 處理器火力全開,比之前的 A6 效能提升 2 倍,同時比第一代 iPhone CPU 效能提升 40 倍,GPU 提升 56 倍。這次重大升級也讓蘋果在移動 SOC 領域領先了其它競爭對手整整一個身位。也讓安卓陣營的主要 SOC 供應商高通開啟了 64 位的時代大門。

從歷史上看,桌面領域 64 位處理器對於 32 位處理器同樣也是降維打擊。

2000 年左右,AMD 與英特爾在處理器領域的競爭非常激烈,不過 2004 年的奔騰與賽揚 D 的推出,奠定了英特爾在桌面處理器領域的統治地位,直到近幾年 AMD 推出 ZEN 系列處理器情況才得以改觀。

時來天地皆同力,運去英雄不自由,32 位應用程式雖然為整個移動網際網路時代的繁榮做出過巨大貢獻,但隨著時間流逝英雄已經遲暮,該對我們說再見了,在此我們也揮手向那些經典告別,並致以敬意。

60+專家,13個技術領域,CSDN 《IT 人才成長路線圖》重磅來襲!