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