64位移動處理器在2013年首次亮相,而蘋果iOS系統(tǒng)則是首個支持64位計算的移動操作系統(tǒng)。有意思的是,從最近的消息了解,蘋果將有可能在iOS 11正式放棄對32位應(yīng)用程序的支持,正式完成對64位生態(tài)系統(tǒng)的完全過渡。其實這是iOS 10.3測試版一個錯誤信息無意間爆的料,當(dāng)用戶嘗試運行32位應(yīng)用程序,系統(tǒng)竟然告訴用戶無法在未來版本中運行,開發(fā)者需改進適配,正是這點讓人浮想聯(lián)翩。
在iOS平臺上,蘋果已經(jīng)不止一次提供類似的暗示了,并非常希望開發(fā)者僅提供64位應(yīng)用程序。例如說,去年年底的時候,蘋果從App Store移除了一定數(shù)量應(yīng)用程序,理由是不兼容,并向開發(fā)者發(fā)送電子郵件,提醒他們應(yīng)用程序開發(fā)必須以64位為基礎(chǔ)。
通常來說,我們不太會在意系統(tǒng)或手機是32位還是64位,畢竟新設(shè)備總是能夠同時兼容32位和64位應(yīng)用程序。但是,考慮到蘋果總是能對谷歌移動生態(tài)系統(tǒng)產(chǎn)生一定的影響,就有必要來討論一下,為何蘋果要做出這樣的舉動,而Android是否應(yīng)該效仿。
32位和64位
首先要簡單的了解一下32位和64位的背景。32位和64位一般是指CPU的通用寄存器位寬,相對于32位而言,64位的CPU位寬增加一倍,使其能夠處理更多更精確的數(shù)據(jù),因此有一定加快數(shù)據(jù)處理的作用,特別是負載的情況下。再通俗來講,32位和 64 位就是四車道和八車道的區(qū)別,在擁堵的晚高峰,八車道速度顯然更快。
當(dāng)然了,64位可尋址范圍大大擴展,32位系統(tǒng)最大支持內(nèi)存為4G。另外,32位系統(tǒng)和64位系統(tǒng)需要安裝支持相應(yīng)軟件模式下的操作系統(tǒng)和驅(qū)動軟件,也就是32位只能安裝 32 位,64位安裝64位的軟件,但可兼容32位運算。
回到ARM處理器的話題上。ARM從32位ARMv7-A到32位/64位ARMv8-A的轉(zhuǎn)變過程中,引入了大量的新指令以便增強功能,也就是AArch64指令集。但為了保證ARMv8能夠向后兼容,ARM在架構(gòu)設(shè)計上仍保留了現(xiàn)有的AArch32和Thumb-32指令集。雖然這就意味著CPU核心管線部分需要進行更多設(shè)計,占用更多極其有限的芯片空間,但確保了這些傳統(tǒng)指令也能夠與新硬件一起工作。
需要注意的是,單個應(yīng)用程序使用過長中,完全不可能同時使用ARMv7和ARMv8兩種執(zhí)行狀態(tài),因為AArch64與AArch32和Thumb-32指令集之間沒有任何交互操作。因此,直接以AArch64指令集和ARMv8處理器為基礎(chǔ)編寫的應(yīng)用程序,無法在ARMv7 Cortex-A系列處理器上運行。
不過,以 ARMv7 Cortex-A 處理器為基礎(chǔ)編寫的應(yīng)用程序,仍可以在ARMv8處理器上運行,畢竟可通過保留的AArch32和Thumb-32執(zhí)行狀態(tài)運行。
其實說白了,如果蘋果真那么做的話,像iPhone 5這款以ARMv7處理器為基礎(chǔ)的機子,將無法升級到iOS 11操作系統(tǒng)。
蘋果為何執(zhí)意轉(zhuǎn)向64位
蘋果放棄對32位應(yīng)用程序的支持表明,未來將完全擁抱 AArch64執(zhí)行狀態(tài),其硬件處理器和軟件iOS系統(tǒng),還有應(yīng)用程序的設(shè)計,所有都將只適用于 AArch64 指令集功能。好處自然不少,包括更大的尋址范圍支持更大的內(nèi)存,簡化匯編程序,雙精度浮點及更先進的SIMD運算,以及高達3至10倍的加速硬件加密性能等。
不過,開發(fā)者和開發(fā)商將無法再使用AArch32和Thumb-32指令集,因為必須更新應(yīng)用程序。當(dāng)然了,除了迫使開發(fā)人員利用全新64位架構(gòu)的最新特性之外,這也十分有利于蘋果更出色的完成下一代CPU的設(shè)計工作。蘋果有出色的芯片設(shè)計團隊,而且一直在規(guī)劃放棄對舊架構(gòu)的支持,完全可以借此盡可能多地釋放芯片空間,降低制造成本,或者將釋放的空間加以利用,加強CPU、GPU及其余部分,或引入更加先進的一些功能。
我們不清楚蘋果如何設(shè)計下一代芯片,或許會是為64位進一步優(yōu)化 CPU,而不一定是全部轉(zhuǎn)為64位,保留部分傳統(tǒng)硬件所需的32位指令,不會強行破壞與ARM簽署的許可協(xié)議。因為ARM通常要求基于其授權(quán)架構(gòu)的CPU設(shè)計,務(wù)必支持全部指令集,若遵守這一規(guī)定的話,蘋果的芯片同樣需要保留對AArch32和Thumb-32的支持,如此一來才能通過ARM的一致性測試。不過,ARM自己提倡靈活性設(shè)計,例如Cortex-A32就是基于32位版本的ARMv8架構(gòu)設(shè)計,沒有十分明確哪些指令集是強制性要求,這就相當(dāng)于留給蘋果更多的發(fā)揮空間。
那么,Android陣營應(yīng)該跟風(fēng)?
有利有弊,而且也并非完全不可行,若是基于上述相同的原因,只要谷歌和智能手機芯片開發(fā)商(如高通和聯(lián)發(fā)科)聯(lián)手,軟件和硬件上共同合作也能實現(xiàn)。但不可否認的是,Android 生態(tài)圈比蘋果大很多,分布有大量不同的硬件配置,若立即執(zhí)行同樣的轉(zhuǎn)變相信很難迅速組織起來,甚至在此過程中可能被迫中斷。
盡管如此,理論上谷歌也可以從軟件方面做類似的事情,強制要求所有Google Play商店的應(yīng)用程序轉(zhuǎn)移到64位版本。不過,這同樣需要一個長期的過渡時間,雖然今天入門級的智能手機和平板電腦都已經(jīng)裝備了64位處理器,但是依然依賴于大量的 32 位應(yīng)用程序,而且真正完美兼容 64 位指令集的并不是很多,一旦放棄向后兼容后果不堪設(shè)想。
講真的,Android 生態(tài)圈完全遷移到64位不太靠譜。例如說,許多Android車載娛樂系統(tǒng)仍基于ARMv7處理器打造。再看智能手表,包括華為、索尼和LG的手表,均搭載了32位的ARM Cortex-A7處理器設(shè)計。
另外,谷歌最近公布的Android Things物聯(lián)網(wǎng)平臺,其開發(fā)板的芯片也并沒有兼容64位的應(yīng)用程序。那Android陣營沒辦法全面過渡到單一的64位計算了?并非如此,只是可以預(yù)見,未來Android依然提供32位的支持,這是最兩全其美的解決方案。