Android 設備的CPU類型(通常稱為”ABIs”)
早期的Android系統(tǒng)幾乎只支持ARMv5的CPU架構,你知道現在它支持多少種嗎蚜迅?7種舵匾! Android系統(tǒng)目前支持以下七種不同的CPU架構:ARMv5,ARMv7 (從2010年起)谁不,x86 (從2011年起)坐梯,MIPS (從2012年起),ARMv8刹帕,MIPS64和x86_64 (從2014年起)吵血,每一種都關聯(lián)著一個相應的ABI。 應用程序二進制接口(Application Binary Interface)定義了二進制文件(尤其是.so文件)如何運行在相應的系統(tǒng)平臺上偷溺,從使用的指令集蹋辅,內存對齊到可用的系統(tǒng)函數庫。在Android 系統(tǒng)上挫掏,每一個CPU架構對應一個ABI:armeabi侦另,armeabi-v7a,x86,mips褒傅,arm64- v8a硫麻,mips64,x86_64樊卓。
如下圖所示:
各版本分析如下:
- mips / mips64: 極少用于手機可以忽略
- x86 / x86_64: x86 架構的手機都會包含由 Intel 提供的稱為 Houdini 的指令集動態(tài)轉碼工具拿愧,實現 對 arm .so 的兼容,再考慮 x86 1% 以下的市場占有率碌尔,x86 相關的兩個 .so 也是可以忽略的
- armeabi: ARM v5 這是相當老舊的一個版本浇辜,缺少對浮點數計算的硬件支持,在需要大量計算時有性能瓶頸
- armeabi-v7a: ARM v7 目前主流版本
- arm64-v8a: 64位支持
所謂的ARMv8架構唾戚,就是在MIPS64架構上增加了ARMv7架構中已經擁有的的TrustZone技術柳洋、虛擬化技術及NEON advanced SIMD技術等特性,研發(fā)成的叹坦。
64位ARMv8架構中包含兩個執(zhí)行狀態(tài):AArch32(也就是我們常說的ARMv7)和AArch64(ARMv8)熊镣。AArch64執(zhí)行狀態(tài)針對64位處理技術,引入了一個全新指令集A64(也就是基于收購的MIPS64架構)募书,而AArch32執(zhí)行狀態(tài)將支持現有的ARM指令集绪囱。所以64位的ARM處理器中同時包含著32位的ARMv7和64位的ARMv8兩種架構。因此:
看到這里莹捡,你一定明白了鬼吵,ARM64位處理器和電腦的64位處理器是兩個截然不容的概念,他并不是64位就能原生向下兼容32位程序篮赢,而是通過64位處理器中集成的32位架構來運行32位程序齿椅。說得通俗點,它不是以64位形態(tài)來運行32位程序启泣,卻是以32位的形態(tài)運行32位程序的涣脚。
由于目前新出的64位處理器包含兩個架構,而且制程技術沒有提升(28nm)寥茫,同時在手機與平板上遣蚀,芯片面積有著嚴格的限定,不能過分增加坠敷,這導致64位ARM處理器平均分配到每個架構的晶體管數量銳減妙同,也就是說從64位處理器中的32位架構方面,對于同規(guī)格的32位處理器而言膝迎,不但沒有提高粥帚,性能反而是一定規(guī)模下降的。但處理器廠家又必須給消費者一個交代限次,以更好的推廣64位芒涡,所以廠家就必須在其他方面提升性能柴灯,以彌補CPU的晶體管數量減少帶來的損失。比如:更換性能更強的GPU费尽、提升內存帶寬赠群、多核心虛擬單顆核心提升單核性能、聯(lián)合跑分軟件商修改跑分權重(提升GPU分數旱幼,降低CPU分數的權重)等等查描。這樣,揚長避短柏卤,最終到達消費者手里冬三,用跑分軟件一跑,確實有提升缘缚,用戶開心勾笆,廠家腰包也鼓了。
綜上所述桥滨,ARM64位處理器從嚴格意義來說窝爪,叫它ARM32+64更加貼切,他相對于ARM32位處理器齐媒,有倒退的地方蒲每,也有進步的余地,但正因為倒退激起了ARM進取的決心里初,讓它大刀闊斧的向前變革啃勉,不得不說也算一種進步忽舟。但ARM64在的手機上真的有用嗎双妨?我只能說,目前確實沒啥用叮阅,但今后或許有刁品。(其他地方搜羅的)
真正的64位手機并不止單純停留在處理器上,如果只因為它的處理器是64位浩姥,就稱其為64位手機的話挑随,我們可以毫不猶疑的說這可能是虛假宣傳,好在聯(lián)想很聰明勒叠,在發(fā)布A678t和A805e宣傳的時候兜挨,只說64位處理器手機。
“64位處理器手機”與“64位手機”是兩種天壤之別的概念:只要是處理器包含64架構位的眯分,就可以稱“64位處理器手機”拌汇,這種手機也許還運行不了64位程序,只是用來搶占市場弊决,和32位手機比起來優(yōu)勢并不明顯噪舀。
“64位手機”就不同了:它包含著64位處理器魁淳、64位標準系統(tǒng)、64位安卓虛擬機与倡、以及64位程序界逛,這才是真正意義上的64位手機!
谷歌官方曾說纺座,安卓很早前就支持64位了息拜,這話不假,從Android4.0到Android4.4净响,安卓系統(tǒng)都支持64位的硬件该溯,但是這僅僅表示底層驅動支持64位,能運行在64位的硬件
Android L開始才真正支持32位和64位的ART虛擬機别惦,配合上64位處理器狈茉,名正言順的運行64位軟件。但是問題又來了掸掸,沒有軟件商 愿意開發(fā)64位程序氯庆。我有幾個搞安卓開發(fā)的朋友,都明確表示永遠不涉足64位安卓程序開發(fā)扰付,這又是為什么呢堤撵? ARMv8是一套不錯的指令集,它既支持未來的64位程序羽莺,也向下兼容現有32位程序实昨。有了ARMv8的支撐,以后的64位手機操作系統(tǒng)盐固,如Android L 64bit都可以簡單荒给、高效地支持現有的32位App,你不用擔心兼容性問題刁卜。
PS:在2011年11月志电,ARM公司發(fā)布了新一代處理器64位架構ARMv8的部分技術細節(jié)(也就是我們常說的Cortex-A57A53),代表著未來移動處理器邁入64位行列蛔趴。我們得明確一點挑辆,ARM公司自己本身并沒有64位芯片設計技術,他是通過了收購MIPS64處理器架構的部分技術使用權孝情,再結合ARM的一些特性設計出來的鱼蝉。也就是說:MIPS、ARM箫荡、X86三大架構中魁亦,唯一沒有64位技術的ARM,通過收購MIPS的形式得到了64位菲茬。
參考資源如下: