“32 位應用已死。”
編者按:本文來自微信公眾號“CSDN”(ID:CSDNnews),作者:馬超,36氪經授權發布。
曾經的經典都在逐漸消失。
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 位應用程序雖然為整個移動互聯網時代的繁榮做出過巨大貢獻,但隨著時間流逝英雄已經遲暮,該對我們說再見了,在此我們也揮手向那些經典告別,並致以敬意。
本文經授權發布,不代表36氪立場。
如若轉載請註明出處。來源出處:36氪